Re: Vague thoughts about is_a and might_be relationships
[prev]
[thread]
[next]
[Date index for 2004/09/15]
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@xxxxxxxxx.xxx.xxxxxxxxxx.xxx for more info.
---1864826285-338250246-1095251321=:4661
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.44.0409151330111.4661@xxxxx.xxxxxx.xxx.xx>
On Wed, 25 Aug 2004, James O'Sullivan wrote:
> Sometime this week I'm going to try and get this working with
> Class::DBI::AbstractSearch (most likely in a similar way to the current
> search/search_like in IsA.pm) so I'll probably be sending an updated
> patch when that's complete.
Here is an updated patch which includes all of the previous changes, but
also modifies the way the search and search_like methods work. These now
take into account any search arguments for the child as well as the
parent.
This also now allows Class::DBI::AbstractSearch to be used if needed.
Unlike the last patch I sent this one should apply cleanly against the
original IsA.pm that was sent to the list.
Any comments/suggestions welcome.
Cheers,
-James
---1864826285-338250246-1095251321=:4661
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="IsA2.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.44.0409151328400.4661@xxxxx.xxxxxx.xxx.xx>
Content-Description:
Content-Disposition: ATTACHMENT; FILENAME="IsA2.patch"
LS0tIElzQS5wbS5vbGQJV2VkIEF1ZyAyNSAxNDozNToyOSAyMDA0DQorKysg
SXNBLnBtCVRodSBBdWcgMjYgMTM6NTk6NTcgMjAwNA0KQEAgLTI1LDE1ICsy
NSwxNSBAQA0KICAgICBteSAkY2xhc3MgPSBzaGlmdDsNCiAgICAgJGNsYXNz
LT5faW52YWxpZF9vYmplY3RfbWV0aG9kKCdpc19hKCknKSBpZiByZWYgJGNs
YXNzOw0KICAgICBteSAkY29sdW1uID0gJGNsYXNzLT5maW5kX2NvbHVtbigr
c2hpZnQpDQotCW9yIHJldHVybiAkY2xhc3MtPl9jcm9haygiaXNfYSBuZWVk
cyBhIHZhbGlkIGNvbHVtbiIpOw0KKyAgICAgICAgb3IgcmV0dXJuICRjbGFz
cy0+X2Nyb2FrKCJpc19hIG5lZWRzIGEgdmFsaWQgY29sdW1uIik7DQogICAg
IG15ICRmX2NsYXNzID0gc2hpZnQNCi0Jb3IgJGNsYXNzLT5fY3JvYWsoIiRj
bGFzcyAkY29sdW1uIG5lZWRzIGFuIGFzc29jaWF0ZWQgY2xhc3MiKTsNCisg
ICAgICAgIG9yICRjbGFzcy0+X2Nyb2FrKCIkY2xhc3MgJGNvbHVtbiBuZWVk
cyBhbiBhc3NvY2lhdGVkIGNsYXNzIik7DQogICAgIG15ICVtZXRocyA9IEBf
Ow0KICAgICANCiAgICAgbXkgQGZfY29sczsNCiAgICAgZm9yZWFjaCBteSAk
Zl9jb2wgKCRmX2NsYXNzLT5hbGxfY29sdW1ucykgew0KLQlwdXNoIEBmX2Nv
bHMsICRmX2NvbA0KLQkgICAgdW5sZXNzICRmX2NvbCBlcSAkZl9jbGFzcy0+
cHJpbWFyeV9jb2x1bW47DQorICAgICAgICBwdXNoIEBmX2NvbHMsICRmX2Nv
bA0KKyAgICAgICAgICAgIHVubGVzcyAkZl9jb2wgZXEgJGZfY2xhc3MtPnBy
aW1hcnlfY29sdW1uOw0KICAgICB9DQogICAgIA0KICAgICAkY2xhc3MtPl9f
Z3JvdXBlci0+YWRkX2dyb3VwKFRFTVAgPT4gbWFwIHsgJF8tPm5hbWUgfSBA
Zl9jb2xzKTsNCkBAIC00NiwxOCArNDYsNDYgQEANCiAgICAgJHNlbGYtPmNs
YXNzLT5fcmVxdWlyZV9jbGFzcygkc2VsZi0+Zm9yZWlnbl9jbGFzcyk7DQog
ICAgIG15ICRjb2x1bW4gPSAkc2VsZi0+YWNjZXNzb3I7DQogICAgIHJldHVy
biAoDQotCSAgICBzZWxlY3QgICAgICAgID0+ICRzZWxmLT5faW5mbGF0b3Is
DQotCSAgICBiZWZvcmVfY3JlYXRlID0+ICRzZWxmLT5fY3JlYXRvciwNCisg
ICAgICAgICAgICBzZWxlY3QgICAgICAgID0+ICRzZWxmLT5faW5mbGF0b3Is
DQorICAgICAgICAgICAgYmVmb3JlX2NyZWF0ZSA9PiAkc2VsZi0+X2NyZWF0
b3IsDQorICAgICAgICAgICAgYmVmb3JlX3VwZGF0ZSA9PiBzdWIgeyANCisg
ICAgICAgICAgICAgICAgaWYgKG15ICRmX29iaiA9ICRfWzBdLT4kY29sdW1u
KCkpIHsgJGZfb2JqLT51cGRhdGUgfQ0KKyAgICAgICAgICAgIH0sDQogICAg
ICk7DQorICAgIA0KIH0NCiANCiBzdWIgbWV0aG9kcyB7DQogICAgIG15ICRz
ZWxmID0gc2hpZnQ7DQogICAgICRzZWxmLT5jbGFzcy0+X3JlcXVpcmVfY2xh
c3MoJHNlbGYtPmZvcmVpZ25fY2xhc3MpOw0KKyAgIA0KKyAgICBteSAlbWV0
aG9kczsgDQorDQorICAgIG15ICRhY2NfbmFtZSA9ICRzZWxmLT5hY2Nlc3Nv
ci0+bmFtZTsNCisgICAgZm9yZWFjaCBteSAkZl9jb2wgKCRzZWxmLT5mb3Jl
aWduX2NsYXNzLT5hbGxfY29sdW1ucykNCisgICAgew0KKyAgICAJbmV4dCBp
ZiAkZl9jb2wgZXEgJGFjY19uYW1lOw0KKyAgICAgICAgJG1ldGhvZHN7JGZf
Y29sfSA9IHN1YiANCisgICAgICAgIHsNCisgICAgICAgICAgICBteSAoJHNl
bGYsICRhcmcpID0gQF87DQorICAgICAgICAgICAgaWYoJGFyZykNCisgICAg
ICAgICAgICB7DQorICAgICAgICAgICAgICAgICRzZWxmLT4kYWNjX25hbWUt
PiRmX2NvbCgkYXJnKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAg
ZWxzZQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgcmV0dXJu
ICRzZWxmLT4kYWNjX25hbWUtPiRmX2NvbDsNCisgICAgICAgICAgICB9DQor
ICAgICAgICB9Ow0KKyAgICB9DQorICAgIA0KKyAgICAkbWV0aG9kc3tzZWFy
Y2hfd2hlcmV9ID0gJHNlbGYtPnNlYXJjaF93aGVyZSBpZiAkc2VsZi0+Y2xh
c3MtPmNhbignc2VhcmNoX3doZXJlJyk7DQorICAgIA0KICAgICByZXR1cm4o
DQorICAgICAgICAlbWV0aG9kcywNCiAgICAgICAgIHNlYXJjaCAgICAgID0+
ICRzZWxmLT5zZWFyY2gsDQogICAgICAgICBzZWFyY2hfbGlrZSA9PiAkc2Vs
Zi0+c2VhcmNoX2xpa2UsDQotCWFsbF9jb2x1bW5zID0+ICRzZWxmLT5hbGxf
Y29sdW1ucywNCisgICAgICAgIGFsbF9jb2x1bW5zID0+ICRzZWxmLT5hbGxf
Y29sdW1ucywNCiAgICAgKTsNCiB9DQogDQpAQCAtNjYsMTcgKzk0LDIyIEBA
DQogICAgIG15ICRTVVBFUiA9ICRzZWxmLT5mb3JlaWduX2NsYXNzOw0KICAg
ICBteSAkY29sID0gJHNlbGYtPmFjY2Vzc29yOw0KICAgICB7DQotCW5vIHN0
cmljdCAicmVmcyI7DQotCSp7JHNlbGYtPmNsYXNzLiI6Om9yaWdfc2VhcmNo
In0gPSBcJnsiQ2xhc3M6OkRCSTo6c2VhcmNoIn07DQorICAgICAgICBubyBz
dHJpY3QgInJlZnMiOw0KKyAgICAgICAgKnskc2VsZi0+Y2xhc3MuIjo6b3Jp
Z19zZWFyY2gifSA9IFwmeyJDbGFzczo6REJJOjpzZWFyY2gifTsNCiAgICAg
fSAgDQogICAgIHJldHVybiBzdWIgew0KLQlteSAoJHNlbGYsICRrLCAkdikg
PSAoQF8pOw0KLQlpZiAoISRzZWxmLT5oYXNfcmVhbF9jb2x1bW4oJGspKSB7
DQotCSAgICByZXR1cm4gbWFwIHsgJHNlbGYtPm9yaWdfc2VhcmNoKCRjb2wg
PT4gJF8tPmlkKQ0KLQkJCSB9ICRTVVBFUi0+c2VhcmNoKCRrID0+ICR2KTsN
Ci0JfSBlbHNlIHsNCi0JICAgIHJldHVybiAkc2VsZi0+b3JpZ19zZWFyY2go
JGsgPT4gJHYpOw0KLQl9DQorICAgICAgICBteSAoJHNlbGYsICVhcmdzKSA9
IChAXyk7DQorICAgICAgICBteSAoJWNoaWxkLCAlcGFyZW50KTsNCisgICAg
ICAgIGZvcmVhY2ggbXkgJGtleSAoa2V5cyAlYXJncykgew0KKyAgICAgICAg
ICAgICRjaGlsZHska2V5fSA9ICRhcmdzeyRrZXl9IGlmICRzZWxmLT5oYXNf
cmVhbF9jb2x1bW4oJGtleSk7DQorICAgICAgICAgICAgJHBhcmVudHska2V5
fSA9ICRhcmdzeyRrZXl9IGlmICRTVVBFUi0+aGFzX3JlYWxfY29sdW1uKCRr
ZXkpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYoJXBhcmVudCkgew0KKyAg
ICAgICAgICAgIHJldHVybiBtYXAgeyAkc2VsZi0+b3JpZ19zZWFyY2goJGNv
bCA9PiAkXy0+aWQsICVjaGlsZCkNCisgICAgICAgICAgICAgICAgICAgICAg
IH0gJFNVUEVSLT5zZWFyY2goJXBhcmVudCk7DQorICAgICAgICB9IGVsc2Ug
ew0KKyAgICAgICAgICAgIHJldHVybiAkc2VsZi0+b3JpZ19zZWFyY2goJWNo
aWxkKTsNCisgICAgICAgIH0NCiAgICAgfTsNCiB9DQogDQpAQCAtODUsMTcg
KzExOCw0NyBAQA0KICAgICBteSAkU1VQRVIgPSAkc2VsZi0+Zm9yZWlnbl9j
bGFzczsNCiAgICAgbXkgJGNvbCA9ICRzZWxmLT5hY2Nlc3NvcjsNCiAgICAg
ew0KLQlubyBzdHJpY3QgInJlZnMiOw0KLQkqeyRzZWxmLT5jbGFzcy4iOjpv
cmlnX3NlYXJjaF9saWtlIn0gPSBcJnsiQ2xhc3M6OkRCSTo6c2VhcmNoX2xp
a2UifTsNCisgICAgICAgIG5vIHN0cmljdCAicmVmcyI7DQorICAgICAgICAq
eyRzZWxmLT5jbGFzcy4iOjpvcmlnX3NlYXJjaF9saWtlIn0gPSBcJnsiQ2xh
c3M6OkRCSTo6c2VhcmNoX2xpa2UifTsNCisgICAgfSAgDQorICAgIHJldHVy
biBzdWIgew0KKyAgICAgICAgbXkgKCRzZWxmLCAlYXJncykgPSAoQF8pOw0K
KyAgICAgICAgbXkgKCVjaGlsZCwgJXBhcmVudCk7DQorICAgICAgICBmb3Jl
YWNoIG15ICRrZXkgKGtleXMgJWFyZ3MpIHsNCisgICAgICAgICAgICAkY2hp
bGR7JGtleX0gPSAkYXJnc3ska2V5fSBpZiAkc2VsZi0+aGFzX3JlYWxfY29s
dW1uKCRrZXkpOw0KKyAgICAgICAgICAgICRwYXJlbnR7JGtleX0gPSAkYXJn
c3ska2V5fSBpZiAkU1VQRVItPmhhc19yZWFsX2NvbHVtbigka2V5KTsNCisg
ICAgICAgIH0NCisgICAgICAgIGlmKCVwYXJlbnQpIHsNCisgICAgICAgICAg
ICByZXR1cm4gbWFwIHsgJHNlbGYtPm9yaWdfc2VhcmNoX2xpa2UoJGNvbCA9
PiAkXy0+aWQsICVjaGlsZCkNCisgICAgICAgICAgICAgICAgICAgICAgIH0g
JFNVUEVSLT5zZWFyY2hfbGlrZSglcGFyZW50KTsNCisgICAgICAgIH0gZWxz
ZSB7DQorICAgICAgICAgICAgcmV0dXJuICRzZWxmLT5vcmlnX3NlYXJjaF9s
aWtlKCVjaGlsZCk7DQorICAgICAgICB9DQorICAgIH07DQorfQ0KKw0KK3N1
YiBzZWFyY2hfd2hlcmUgew0KKyAgICBteSAkc2VsZiA9IHNoaWZ0Ow0KKyAg
ICBteSAkU1VQRVIgPSAkc2VsZi0+Zm9yZWlnbl9jbGFzczsNCisgICAgbXkg
JGNvbCA9ICRzZWxmLT5hY2Nlc3NvcjsNCisgICAgew0KKyAgICAgICAgbm8g
c3RyaWN0ICJyZWZzIjsNCisgICAgICAgICp7JHNlbGYtPmNsYXNzLiI6Om9y
aWdfc2VhcmNoX3doZXJlIn0gPSBcJnsiQ2xhc3M6OkRCSTo6QWJzdHJhY3RT
ZWFyY2g6OnNlYXJjaF93aGVyZSJ9Ow0KICAgICB9ICANCisNCiAgICAgcmV0
dXJuIHN1YiB7DQotCW15ICgkc2VsZiwgJGssICR2KSA9IChAXyk7DQotCWlm
ICghJHNlbGYtPmhhc19yZWFsX2NvbHVtbigkaykpIHsNCi0JICAgIHJldHVy
biBtYXAgeyAkc2VsZi0+b3JpZ19zZWFyY2hfbGlrZSgkY29sID0+ICRfLT5p
ZCkNCi0JCQkgfSAkU1VQRVItPnNlYXJjaF9saWtlKCRrID0+ICR2KTsNCi0J
fSBlbHNlIHsNCi0JICAgIHJldHVybiAkc2VsZi0+b3JpZ19zZWFyY2hfbGlr
ZSgkayA9PiAkdik7DQotCX0NCisgICAgICAgIG15ICgkc2VsZiwgJWFyZ3Mp
ID0gKEBfKTsNCisgICAgICAgIG15ICglY2hpbGQsICVwYXJlbnQpOw0KKyAg
ICAgICAgZm9yZWFjaCBteSAka2V5IChrZXlzICVhcmdzKSB7DQorICAgICAg
ICAgICAgJGNoaWxkeyRrZXl9ID0gJGFyZ3N7JGtleX0gaWYgJHNlbGYtPmhh
c19yZWFsX2NvbHVtbigka2V5KTsNCisgICAgICAgICAgICAkcGFyZW50eyRr
ZXl9ID0gJGFyZ3N7JGtleX0gaWYgJFNVUEVSLT5oYXNfcmVhbF9jb2x1bW4o
JGtleSk7DQorICAgICAgICB9DQorICAgICAgICBpZiglcGFyZW50KSB7DQor
ICAgICAgICAgICAgcmV0dXJuIG1hcCB7ICRzZWxmLT5vcmlnX3NlYXJjaF93
aGVyZSgkY29sLT5uYW1lID0+ICRfLT5pZCwgJWNoaWxkKQ0KKyAgICAgICAg
ICAgICAgICAgICAgICAgfSAkU1VQRVItPnNlYXJjaF93aGVyZSglcGFyZW50
KTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuICRz
ZWxmLT5vcmlnX3NlYXJjaF93aGVyZSglY2hpbGQpOw0KKyAgICAgICAgfQ0K
ICAgICB9Ow0KIH0NCiANCkBAIC0xMDQsMTIgKzE2NywxMiBAQA0KICAgICBt
eSAkU1VQRVIgPSAkc2VsZi0+Zm9yZWlnbl9jbGFzczsNCiAgICAgbXkgJGNv
bCA9ICRzZWxmLT5hY2Nlc3NvcjsNCiAgICAgew0KLQlubyBzdHJpY3QgInJl
ZnMiOw0KLQkqeyRzZWxmLT5jbGFzcy4iOjpvcmlnX2FsbF9jb2x1bW5zIn0g
PSBcJnsiQ2xhc3M6OkRCSTo6YWxsX2NvbHVtbnMifTsNCisgICAgICAgIG5v
IHN0cmljdCAicmVmcyI7DQorICAgICAgICAqeyRzZWxmLT5jbGFzcy4iOjpv
cmlnX2FsbF9jb2x1bW5zIn0gPSBcJnsiQ2xhc3M6OkRCSTo6YWxsX2NvbHVt
bnMifTsNCiAgICAgfSAgDQogICAgIHJldHVybiBzdWIgew0KLQlteSAkc2Vs
ZiA9IHNoaWZ0Ow0KLQlyZXR1cm4gKCRzZWxmLT5vcmlnX2FsbF9jb2x1bW5z
LCAkc2VsZi0+Y29sdW1ucygnVEVNUCcpKTsNCisgICAgICAgIG15ICRzZWxm
ID0gc2hpZnQ7DQorICAgICAgICByZXR1cm4gKCRzZWxmLT5vcmlnX2FsbF9j
b2x1bW5zLCAkc2VsZi0+Y29sdW1ucygnVEVNUCcpKTsNCiAgICAgfTsNCiB9
DQogDQpAQCAtMTE4LDIwICsxODEsMjEgQEANCiAgICAgbXkgJGNvbCA9ICRw
cm90by0+YWNjZXNzb3I7DQogDQogICAgIHJldHVybiBzdWIgew0KLQlteSAk
c2VsZiA9IHNoaWZ0Ow0KLQlteSAkbWV0YSA9ICRzZWxmLT5tZXRhX2luZm8o
aXNfYSA9PiAkY29sKTsNCi0JbXkgJGZfY2xhc3MgPSAkbWV0YS0+Zm9yZWln
bl9jbGFzczsNCisgICAgICAgIG15ICRzZWxmID0gc2hpZnQ7DQorICAgICAg
ICBteSAkbWV0YSA9ICRzZWxmLT5tZXRhX2luZm8oaXNfYSA9PiAkY29sKTsN
CisgICAgICAgIG15ICRmX2NsYXNzID0gJG1ldGEtPmZvcmVpZ25fY2xhc3M7
DQogDQotCW15ICRoYXNoID0geyB9Ow0KKyAgICAgICAgbXkgJGhhc2ggPSB7
IH07DQogDQotCWZvcmVhY2ggKCRzZWxmLT5fX2dyb3VwZXItPmdyb3VwX2Nv
bHMoJ1RFTVAnKSkgew0KLQkgICAgJGhhc2gtPnskX30gPSAkc2VsZi0+X2F0
dHJzKCRfKTsNCi0JfQ0KKyAgICAgICAgZm9yZWFjaCAoJHNlbGYtPl9fZ3Jv
dXBlci0+Z3JvdXBfY29scygnVEVNUCcpKSB7DQorICAgICAgICAgICAgbmV4
dCB1bmxlc3MgZGVmaW5lZCgkc2VsZi0+X2F0dHJzKCRfKSk7DQorICAgICAg
ICAgICAgJGhhc2gtPnskX30gPSAkc2VsZi0+X2F0dHJzKCRfKTsNCisgICAg
ICAgIH0NCiANCi0JbXkgJGZfb2JqID0gJGZfY2xhc3MtPmNyZWF0ZSgkaGFz
aCk7DQotCSRwcm90by0+X2ltcG9ydF9jb2x1bW5fdmFsdWVzKCRzZWxmLCAk
Zl9jbGFzcywgJGZfb2JqKTsNCisgICAgICAgIG15ICRmX29iaiA9ICRmX2Ns
YXNzLT5jcmVhdGUoJGhhc2gpOw0KKyAgICAgICAgJHByb3RvLT5faW1wb3J0
X2NvbHVtbl92YWx1ZXMoJHNlbGYsICRmX2NsYXNzLCAkZl9vYmopOw0KIA0K
LQlyZXR1cm4gJHNlbGYtPl9hdHRyaWJ1dGVfc3RvcmUoJGNvbCA9PiAkZl9v
YmopOw0KKyAgICAgICAgcmV0dXJuICRzZWxmLT5fYXR0cmlidXRlX3N0b3Jl
KCRjb2wgPT4gJGZfb2JqKTsNCiAgICAgfTsNCiB9DQogDQpAQCAtMTQwLDMz
ICsyMDQsMzMgQEANCiAgICAgbXkgJGNvbCA9ICRwcm90by0+YWNjZXNzb3I7
DQogDQogICAgIHJldHVybiBzdWIgew0KLQlteSAkc2VsZiA9IHNoaWZ0Ow0K
LQlteSAkdmFsdWUgPSAkc2VsZi0+JGNvbDsNCi0JbXkgJG1ldGEgPSAkc2Vs
Zi0+bWV0YV9pbmZvKGlzX2EgPT4gJGNvbCk7DQotCW15ICRmX2NsYXNzID0g
JG1ldGEtPmZvcmVpZ25fY2xhc3M7DQotDQotCXJldHVybiBpZiByZWYoJHZh
bHVlKSBhbmQgJHZhbHVlLT5pc2EoJGZfY2xhc3MpOw0KLQ0KLQkkdmFsdWUg
PSAkZl9jbGFzcy0+X3NpbXBsZV9ibGVzcygkdmFsdWUpOw0KLQkkcHJvdG8t
Pl9pbXBvcnRfY29sdW1uX3ZhbHVlcygkc2VsZiwgJGZfY2xhc3MsICR2YWx1
ZSk7DQotCQ0KLQlyZXR1cm4gJHNlbGYtPl9hdHRyaWJ1dGVfc3RvcmUoJGNv
bCA9PiAkdmFsdWUpOw0KKyAgICAgICAgbXkgJHNlbGYgPSBzaGlmdDsNCisg
ICAgICAgIG15ICR2YWx1ZSA9ICRzZWxmLT4kY29sOw0KKyAgICAgICAgbXkg
JG1ldGEgPSAkc2VsZi0+bWV0YV9pbmZvKGlzX2EgPT4gJGNvbCk7DQorICAg
ICAgICBteSAkZl9jbGFzcyA9ICRtZXRhLT5mb3JlaWduX2NsYXNzOw0KKw0K
KyAgICAgICAgcmV0dXJuIGlmIHJlZigkdmFsdWUpIGFuZCAkdmFsdWUtPmlz
YSgkZl9jbGFzcyk7DQorDQorICAgICAgICAkdmFsdWUgPSAkZl9jbGFzcy0+
X3NpbXBsZV9ibGVzcygkdmFsdWUpOw0KKyAgICAgICAgJHByb3RvLT5faW1w
b3J0X2NvbHVtbl92YWx1ZXMoJHNlbGYsICRmX2NsYXNzLCAkdmFsdWUpOw0K
KyAgICAgICAgDQorICAgICAgICByZXR1cm4gJHNlbGYtPl9hdHRyaWJ1dGVf
c3RvcmUoJGNvbCA9PiAkdmFsdWUpOw0KICAgICB9Ow0KIH0NCiANCiBzdWIg
X2ltcG9ydF9jb2x1bW5fdmFsdWVzIHsNCiAgICAgbXkgKCRzZWxmLCAkY2xh
c3MsICRmX2NsYXNzLCAkZl9vYmopID0gKEBfKTsNCiAgICAgZm9yZWFjaCAo
JGZfY2xhc3MtPmFsbF9jb2x1bW5zKSB7DQotCSRjbGFzcy0+X2F0dHJpYnV0
ZV9zdG9yZSgkXywgJGZfb2JqLT4kXykNCi0JICAgIHVubGVzcyAkXy0+bmFt
ZSBlcSAkY2xhc3MtPnByaW1hcnlfY29sdW1uLT5uYW1lOw0KKyAgICAgICAg
JGNsYXNzLT5fYXR0cmlidXRlX3N0b3JlKCRfLCAkZl9vYmotPiRfKQ0KKyAg
ICAgICAgICAgIHVubGVzcyAkXy0+bmFtZSBlcSAkY2xhc3MtPnByaW1hcnlf
Y29sdW1uLT5uYW1lOw0KICAgICB9DQogfQ0KIA0KIHN1YiBfc2V0X3VwX2Ns
YXNzX2RhdGEgew0KLSAgICAgICAgbXkgJHNlbGYgPSBzaGlmdDsNCi0gICAg
ICAgICRzZWxmLT5jbGFzcy0+X2V4dGVuZF9jbGFzc19kYXRhKF9faXNhX3Jl
bHMgPT4gJHNlbGYtPmFjY2Vzc29yID0+DQorICAgIG15ICRzZWxmID0gc2hp
ZnQ7DQorICAgICRzZWxmLT5jbGFzcy0+X2V4dGVuZF9jbGFzc19kYXRhKF9f
aXNhX3JlbHMgPT4gJHNlbGYtPmFjY2Vzc29yID0+DQogICAgICAgICAgICAg
ICAgICAgICAgICAgWyAkc2VsZi0+Zm9yZWlnbl9jbGFzcywgJXsgJHNlbGYt
PmFyZ3MgfSBdKTsNCi0gICAgICAgICRzZWxmLT5TVVBFUjo6X3NldF91cF9j
bGFzc19kYXRhOw0KKyAgICAkc2VsZi0+U1VQRVI6Ol9zZXRfdXBfY2xhc3Nf
ZGF0YTsNCiB9DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMNCkBAIC0yMDEsNCArMjY1LDMgQEANCiAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIw0KIA0KIDE7DQotDQo=
---1864826285-338250246-1095251321=:4661--