Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #4132 (closed enhancement: fixed)

Opened 3 years ago

Last modified 3 years ago

[PATCH] :include support for with_scope

Reported by: andrew@redlinesoftware.com Assigned to: nzkoz
Priority: normal Milestone: 1.1
Component: ActiveRecord Version: 1.0.0
Severity: normal Keywords: with_scope include
Cc:

Description

A patch to add the use of :include with the with_scope method.

This is my first draft and it seems to work, but I will submit an additional patch with updated docs and test cases shortly. In the mean time, if anybody is also interested in looking at and/or testing this patch to make sure I didn't miss anything, please post a comment.

Thanks

Attachments

patch.diff (6.6 kB) - added by akaspick on 03/08/06 06:30:11.
:include support for with_scope
patch.2.diff (6.0 kB) - added by akaspick on 03/09/06 01:22:30.
removed some bad code and removed an unneeded method from the previous patch
patch.3.diff (7.2 kB) - added by akaspick on 03/09/06 02:54:33.
use Array instead of to_a (to_a will become obselete), updated with_scope docs and added support for nesting the :include's
patch.4.diff (12.1 kB) - added by akaspick on 03/10/06 01:38:41.
Final patch file. Includes test cases and a fix found during creation of test cases. Should be good to go!
patch.5.diff (18.5 kB) - added by akaspick on 03/22/06 21:00:01.
fixes a conflict with the current branch as of this update
patch.6.diff (12.1 kB) - added by akaspick on 03/22/06 21:17:31.
fixed patch for the newest rails branch
patch.7.diff (11.9 kB) - added by akaspick on 03/27/06 03:11:10.
fixed patch. no more errors against the newest rails revision.
patch.8.diff (11.8 kB) - added by akaspick on 03/27/06 03:22:37.
change combine_includes to merge_includes

Change History

03/08/06 06:30:11 changed by akaspick

  • attachment patch.diff added.

:include support for with_scope

03/09/06 01:22:30 changed by akaspick

  • attachment patch.2.diff added.

removed some bad code and removed an unneeded method from the previous patch

03/09/06 02:54:33 changed by akaspick

  • attachment patch.3.diff added.

use Array instead of to_a (to_a will become obselete), updated with_scope docs and added support for nesting the :include's

03/10/06 01:38:41 changed by akaspick

  • attachment patch.4.diff added.

Final patch file. Includes test cases and a fix found during creation of test cases. Should be good to go!

03/10/06 01:47:01 changed by andrew@redlinesoftware.com

  • priority changed from normal to high.
  • severity changed from normal to major.

promoting to high priority as supporting :include keeps 'with_scope' more consistent with 'find' and related methods.

03/18/06 20:22:34 changed by david

  • priority changed from high to normal.
  • severity changed from major to normal.

Hmm. This seems a bit odd to me. Could you explain the use case where you need this?

03/22/06 20:59:12 changed by andrew@redlinesoftware.com

Sure, I actually did a bit of a write up on it here earlier... http://redlinesoftware.com/labs.html#002

I wrote that up after submitting the patch and forgot to add some more details here.

Basically the only method right now to do joins with with_scope is with the :joins option, and since there is no :select option for with_scope, you get everything from the joined tables, ie. 'select * from'. As I mention in the link above, two tables with two id fields don't quite work well together with 'select *' and :joins because only one id field will be returned in your collection. Using the :include option, the returned collection will be nicely split up into the desired objects because of the field aliasing that :include does.

Does this make sense? I can come up with a code use case if you like.

Perhaps I'm totally missing the boat on this one and there is an alternate way to accomplish what I need, but I couldn't find it.

Hope this helps... thanks.

03/22/06 21:00:01 changed by akaspick

  • attachment patch.5.diff added.

fixes a conflict with the current branch as of this update

03/22/06 21:06:47 changed by andrew@redlinesoftware.com

Crap, don't use patch5.diff... made an error creating it. Please hold for a new updated one.

03/22/06 21:17:31 changed by akaspick

  • attachment patch.6.diff added.

fixed patch for the newest rails branch

03/22/06 21:18:25 changed by andrew@redlinesoftware.com

patch.6.diff is the correct file to use now.

03/26/06 22:30:09 changed by nzkoz

  • owner changed from David to nzkoz.
  • status changed from new to assigned.

Accepting, We could do with this functionality.

03/26/06 23:18:44 changed by nzkoz

This isn't applying cleanly, I'll look into it, but if you could post a new version it'll probably be much faster.

03/27/06 03:11:10 changed by akaspick

  • attachment patch.7.diff added.

fixed patch. no more errors against the newest rails revision.

03/27/06 03:22:37 changed by akaspick

  • attachment patch.8.diff added.

change combine_includes to merge_includes

03/27/06 06:21:08 changed by nzkoz

  • status changed from assigned to closed.
  • resolution set to fixed.

Fixed in [4064] Some of the assertions were removed as they didn't work, safe_to_array replaced the array_wrap call.

Thanks, we're using this already! ;)

07/23/06 02:26:01 changed by anonymous

forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja forsja

08/05/06 02:55:27 changed by anonymous

dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao dengpao