[Catalyst] looking for suggestion on both cron and pm

Fayland Lam fayland at gmail.com
Sat Jan 12 06:07:09 GMT 2008


Z2VuZXJhbGx5IEkgZG8gaGF2ZSBzZXZlcmFsIGNvcm4gc2NyaXB0cy4gc28gSSB3YW50IHRvIGdl
dCAkdXNlciBib3RoIGluIApNeUFwcCBhbmQgY3JvbiBzY3JpcHRzLgp3aGF0IEkgdHJpZWQgdG8g
ZG8gaXMgc29lbXRoaW5nIGxpa2UgdGhhdDoKCnRoZSBmaXJzdCBpcyBhIGJhc2UgbW9kdWxlIHdo
aWNoIGNvbnRhaW5zIHNjaGVtYSBjYWNoZSBhbmQgdHQyIGFuZCBvdGhlcnMuCgpwYWNrYWdlIEZv
b3J1bTo6QWRhcHRvcjo6QmFzZTsKCnN1YiBuZXcgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAg
CiAgICBteSAkcGFyYW1zID0ge307CiAgICByZXR1cm4gYmxlc3MgJHBhcmFtcyA9PiAkc2VsZjsK
fQpzdWIgY29uZmlnIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgcmV0dXJuICRzZWxmLT57
Y29uZmlnfSBpZiAoJHNlbGYtPntjb25maWd9KTsKCiAgICBteSAkY29uZmlnID0gTG9hZEZpbGUo
IiRwYXRoLy4uLy4uLy4uL2Zvb3J1bS55bWwiKTsKICAgIG15ICRleHRyYV9jb25maWcgPSBMb2Fk
RmlsZSgiJHBhdGgvLi4vLi4vLi4vZm9vcnVtX2xvY2FsLnltbCIpOwogICAgJGNvbmZpZyA9IHsg
JSRjb25maWcsICUkZXh0cmFfY29uZmlnIH07CiAgICAkc2VsZi0+e2NvbmZpZ30gPSAkY29uZmln
OwogICAgcmV0dXJuICRzZWxmLT57Y29uZmlnfTsKfQpzdWIgc2NoZW1hIHsKICAgIG15ICRzZWxm
ID0gc2hpZnQ7CgogICAgcmV0dXJuICRzZWxmLT57c2NoZW1hfSBpZiAoJHNlbGYtPntzY2hlbWF9
KTsKICAgIG15ICRjb25maWcgPSAkc2VsZi0+Y29uZmlnKCk7CgogICAgJHNlbGYtPntzY2hlbWF9
CiAgICAgICAgPSBGb29ydW06OlNjaGVtYS0+Y29ubmVjdCggJGNvbmZpZy0+e2Rzbn0sICRjb25m
aWctPntkc25fdXNlcn0sCiAgICAgICAgJGNvbmZpZy0+e2Rzbl9wd2R9LCB7IEF1dG9Db21taXQg
PT4gMSwgUmFpc2VFcnJvciA9PiAxLCAKUHJpbnRFcnJvciA9PiAxIH0sCiAgICAgICAgKTsKICAg
IHJldHVybiAkc2VsZi0+e3NjaGVtYX07Cn0KLi4uLi4uLgpDaGVjayBBdHRhY2htZW50IGZvciBt
b3JlIGRldGFpbHMuCgp0aGVuIGEgVXNlciBhZGFwdG9yIG1vZHVsZToKCnBhY2thZ2UgRm9vcnVt
OjpBZGFwdG9yOjpVc2VyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgYmFzZSAnRm9v
cnVtOjpBZGFwdG9yOjpCYXNlJzsKCnN1YiBnZXQgewogICAgbXkgKCAkYywgJGNvbmQgKSA9IEBf
OwoKICAgIG15ICRjYWNoZV9rZXkgPSAndXNlcnwnIC4gT2JqZWN0OjpTaWduYXR1cmU6OnNpZ25h
dHVyZSgkY29uZCk7CiAgICBteSAkY2FjaGVfdmFsID0gJGMtPmNhY2hlLT5nZXQoJGNhY2hlX2tl
eSk7CgogICAgaWYgKCRjYWNoZV92YWwpIHsKICAgICAgICByZXR1cm4gJGNhY2hlX3ZhbDsKICAg
IH0KCiAgICAkY2FjaGVfdmFsID0gZ2V0X3VzZXJfZnJvbV9kYiggJGMsICRjb25kICk7CiAgICBy
ZXR1cm4gdW5sZXNzICgkY2FjaGVfdmFsKTsKCiAgICAkYy0+Y2FjaGUtPnNldCggJGNhY2hlX2tl
eSwgJGNhY2hlX3ZhbCwgNzIwMCApOyAgICAjIHR3byBob3VycwogICAgcmV0dXJuICRjYWNoZV92
YWw7Cn0KCmFuZCBvdGhlcnMuIG1vcmUgc2VlIGF0dGFjaG1lbnQuCgphdCBsYXN0OgoKcGFja2Fn
ZSBGb29ydW06Ok1vZGVsOjpVc2VyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgYmFz
ZSAnQ2F0YWx5c3Q6Ok1vZGVsOjpBZGFwdG9yJzsKX19QQUNLQUdFX18tPmNvbmZpZyggY2xhc3Mg
PT4gJ0Zvb3J1bTo6QWRhcHRvcjo6VXNlcicgKTsKCjE7CgpzbyB0aGF0IHdlIGNhbiBkbyBpbiBN
eUFwcDoKCm15ICR1c2VyID0gJGMtPm1vZGVsKCdVc2VyJyktPmdldCggeyB1c2VybmFtZSA9PiAk
dXNlcm5hbWUgfSApOwoKb3IgY3JvbiBzY3JpcHQ6Cgp1c2UgRm9vcnVtOjpBZGFwdG9yOjpVc2Vy
OwpteSAkdXNlcl9tb2RlbCA9IG5ldyBGb29ydW06OkFkYXB0b3I6OlVzZXIoKTsKbXkgJHVzZXIg
PSAkdXNlcl9tb2RlbC0+Z2V0KCB7IHVzZXJfaWQgPT4gMSB9ICk7CgppcyB0aG9zZSBjb2RlIGNv
cnJlY3Q/IG9yIHRoZXJlIGlzIGFub3RoZXIgd2F5IHRvIGRvIGl0PwoKVGhhbmtzLgoKLS0gCkZh
eWxhbmQgTGFtIC8vIGh0dHA6Ly93d3cuZmF5bGFuZC5vcmcvIApGb29ydW0gYmFzZWQgb24gQ2F0
YWx5c3QgLy8gaHR0cDovL3d3dy5mb29ydW1iYnMuY29tLyAKCi0tLS0tLS0tLS0tLS0tIG5leHQg
cGFydCAtLS0tLS0tLS0tLS0tLQpwYWNrYWdlIEZvb3J1bTo6QWRhcHRvcjo6QmFzZTsNCg0KdXNl
IHN0cmljdDsNCnVzZSB3YXJuaW5nczsNCnVzZSBZQU1MIHF3L0xvYWRGaWxlLzsgICAgIyBjb25m
aWcNCnVzZSBGb29ydW06OlNjaGVtYTsgICAgICAgIyBzY2hlbWENCnVzZSBUaGVTY2h3YXJ0ejsg
ICAgICAgICAgIyB0aGVzY2h3YXJ0eg0KdXNlIFRlbXBsYXRlOyAgICAgICAgICAgICAjIHRlbXBs
YXRlDQp1c2UgVGVtcGxhdGU6OlN0YXNoOjpYUzsNCnVzZSBGaWxlOjpTcGVjOw0KdXNlIEN3ZCBx
dy9hYnNfcGF0aC87DQpteSAoIHVuZGVmLCAkcGF0aCApID0gRmlsZTo6U3BlYy0+c3BsaXRwYXRo
KF9fRklMRV9fKTsNCg0Kc3ViIG5ldyB7DQogICAgbXkgJHNlbGYgPSBzaGlmdDsNCiAgICANCiAg
ICBteSAkcGFyYW1zID0ge307DQogICAgcmV0dXJuIGJsZXNzICRwYXJhbXMgPT4gJHNlbGY7DQp9
DQoNCnN1YiBiYXNlX3BhdGggew0KICAgIG15ICRzZWxmID0gc2hpZnQ7DQogICAgDQogICAgcmV0
dXJuICRzZWxmLT57cGF0aH0gaWYgKCAkc2VsZi0+e3BhdGh9ICk7DQogICAgJHNlbGYtPntwYXRo
fSA9IGFic19wYXRoKCIkcGF0aC8uLi8uLi8uLi8iKTsNCiAgICANCiAgICByZXR1cm4gJHNlbGYt
PntwYXRofTsNCn0NCg0Kc3ViIGNvbmZpZyB7DQogICAgbXkgJHNlbGYgPSBzaGlmdDsNCg0KICAg
IHJldHVybiAkc2VsZi0+e2NvbmZpZ30gaWYgKCRzZWxmLT57Y29uZmlnfSk7DQoNCiAgICBteSAk
Y29uZmlnID0gTG9hZEZpbGUoIiRwYXRoLy4uLy4uLy4uL2Zvb3J1bS55bWwiKTsNCiAgICBteSAk
ZXh0cmFfY29uZmlnID0gTG9hZEZpbGUoIiRwYXRoLy4uLy4uLy4uL2Zvb3J1bV9sb2NhbC55bWwi
KTsNCiAgICAkY29uZmlnID0geyAlJGNvbmZpZywgJSRleHRyYV9jb25maWcgfTsNCiAgICAkc2Vs
Zi0+e2NvbmZpZ30gPSAkY29uZmlnOw0KICAgIHJldHVybiAkc2VsZi0+e2NvbmZpZ307DQp9DQoN
CnN1YiBzY2hlbWEgew0KICAgIG15ICRzZWxmID0gc2hpZnQ7DQoNCiAgICByZXR1cm4gJHNlbGYt
PntzY2hlbWF9IGlmICgkc2VsZi0+e3NjaGVtYX0pOw0KICAgIG15ICRjb25maWcgPSAkc2VsZi0+
Y29uZmlnKCk7DQoNCiAgICAkc2VsZi0+e3NjaGVtYX0NCiAgICAgICAgPSBGb29ydW06OlNjaGVt
YS0+Y29ubmVjdCggJGNvbmZpZy0+e2Rzbn0sICRjb25maWctPntkc25fdXNlcn0sDQogICAgICAg
ICRjb25maWctPntkc25fcHdkfSwgeyBBdXRvQ29tbWl0ID0+IDEsIFJhaXNlRXJyb3IgPT4gMSwg
UHJpbnRFcnJvciA9PiAxIH0sDQogICAgICAgICk7DQogICAgcmV0dXJuICRzZWxmLT57c2NoZW1h
fTsNCn0NCg0KKmRlZmF1bHRfY2FjaGVfYmFja2VuZCA9IFwmY2FjaGU7DQpzdWIgY2FjaGUgew0K
ICAgIG15ICRzZWxmID0gc2hpZnQ7DQoNCiAgICByZXR1cm4gJHNlbGYtPntjYWNoZX0gaWYgKCRz
ZWxmLT57Y2FjaGV9KTsNCiAgICBteSAkY29uZmlnID0gJHNlbGYtPmNvbmZpZygpOw0KDQogICAg
bXkgJXBhcmFtcyA9ICV7ICRjb25maWctPntjYWNoZX17YmFja2VuZHN9e2RlZmF1bHR9IH07DQog
ICAgbXkgJGNsYXNzICA9IGRlbGV0ZSAkcGFyYW1ze2NsYXNzfTsNCg0KICAgIGV2YWwoInVzZSAk
Y2xhc3M7Iik7ICAgICMjIG5vIGNyaXRpYyAoUHJvaGliaXRTdHJpbmd5RXZhbCkNCiAgICB1bmxl
c3MgKCRAKSB7DQogICAgICAgICRzZWxmLT57Y2FjaGV9ID0gJGNsYXNzLT5uZXcoIFwlcGFyYW1z
ICk7DQogICAgfQ0KDQogICAgcmV0dXJuICRzZWxmLT57Y2FjaGV9Ow0KfQ0KDQpzdWIgdGhlc2No
d2FydHogew0KICAgIG15ICRzZWxmID0gc2hpZnQ7DQoNCiAgICByZXR1cm4gJHNlbGYtPnt0aGVz
Y2h3YXJ0en0gaWYgKCRzZWxmLT57dGhlc2Nod2FydHp9KTsNCiAgICBteSAkY29uZmlnID0gJHNl
bGYtPmNvbmZpZygpOw0KDQogICAgJHNlbGYtPnt0aGVzY2h3YXJ0en0gPSBUaGVTY2h3YXJ0ei0+
bmV3KA0KICAgICAgICBkYXRhYmFzZXMgPT4gWw0KICAgICAgICAgICAgeyAgIGRzbiAgPT4gJGNv
bmZpZy0+e3RoZXNjaHdhcnR6X2Rzbn0sDQogICAgICAgICAgICAgICAgdXNlciA9PiAkY29uZmln
LT57dGhlc2Nod2FydHpfdXNlcn0gfHwgJGNvbmZpZy0+e2Rzbl91c2VyfSwNCiAgICAgICAgICAg
ICAgICBwYXNzID0+ICRjb25maWctPnt0aGVzY2h3YXJ0el9wd2R9IHx8ICRjb25maWctPntkc25f
cHdkfSwNCiAgICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAgICAgdmVyYm9zZSA9PiAwLA0K
ICAgICk7DQoNCiAgICByZXR1cm4gJHNlbGYtPnt0aGVzY2h3YXJ0en07DQp9DQoNCnN1YiB0dDIg
ew0KICAgIG15ICRzZWxmID0gc2hpZnQ7DQoNCiAgICByZXR1cm4gJHNlbGYtPnt0dDJ9IGlmICgk
c2VsZi0+e3R0Mn0pOw0KICAgIG15ICRjb25maWcgPSAkc2VsZi0+Y29uZmlnKCk7DQoNCiAgICAk
c2VsZi0+e3R0Mn0gPSBUZW1wbGF0ZS0+bmV3KA0KICAgICAgICB7ICAgSU5DTFVERV9QQVRIID0+
IFsiJHBhdGgvLi4vLi4vLi4vdGVtcGxhdGVzIl0sDQogICAgICAgICAgICBQUkVfQ0hPTVAgICAg
PT4gMSwNCiAgICAgICAgICAgIFBPU1RfQ0hPTVAgICA9PiAxLA0KICAgICAgICAgICAgU1RBU0gg
ICAgICAgID0+IFRlbXBsYXRlOjpTdGFzaDo6WFMtPm5ldywNCiAgICAgICAgfQ0KICAgICk7DQog
ICAgcmV0dXJuICRzZWxmLT57dHQyfTsNCn0NCg0Kc3ViIGVycm9yX2xvZyB7DQogICAgbXkgKCAk
c2VsZiwgJGxldmVsLCAkdGV4dCApID0gQF87DQoNCiAgICByZXR1cm4gdW5sZXNzICgkdGV4dCk7
DQogICAgDQogICAgbXkgJHNjaGVtYSA9ICRzZWxmLT5zY2hlbWEoKTsNCiAgICAkc2NoZW1hLT5y
ZXN1bHRzZXQoJ0xvZ0Vycm9yJyktPmNyZWF0ZSgNCiAgICAgICAgeyAgIGxldmVsID0+ICRsZXZl
bCB8fCAnZGVidWcnLA0KICAgICAgICAgICAgdGV4dCA9PiAkdGV4dCwNCiAgICAgICAgICAgIHRp
bWUgPT4gXCdOT1coKScsICAgICMnDQogICAgICAgIH0NCiAgICApOw0KfQ0KDQoxOw0KX19FTkRf
Xw0KDQo9cG9kDQoNCj1oZWFkMSBOQU1FDQoNCkZvb3J1bTo6QWRhcHRvcjo6QmFzZSAtIGJhc2Ug
bW9kdWxlDQoNCj1oZWFkMiBBVVRIT1INCg0KRmF5bGFuZCBMYW0gPGZheWxhbmQgYXQgZ21haWwu
Y29tPg0KDQo9Y3V0DQotLS0tLS0tLS0tLS0tLSBuZXh0IHBhcnQgLS0tLS0tLS0tLS0tLS0KcGFj
a2FnZSBGb29ydW06OkFkYXB0b3I6OlVzZXI7DQoNCnVzZSBzdHJpY3Q7DQp1c2Ugd2FybmluZ3M7
DQp1c2UgYmFzZSAnRm9vcnVtOjpBZGFwdG9yOjpCYXNlJzsNCnVzZSBPYmplY3Q6OlNpZ25hdHVy
ZSAoKTsNCg0KIyBVc2FnZToNCiMgZ2V0KCRjLCB7IHVzZXJfaWQgPT4gPyB9ICk7DQojIGdldCgk
YywgeyB1c2VybmFtZSA9PiA/IH0gKTsNCiMgZ2V0KCRjLCB7IGVtYWlsID0+ID8gfSApOw0Kc3Vi
IGdldCB7DQogICAgbXkgKCAkYywgJGNvbmQgKSA9IEBfOw0KDQogICAgbXkgJGNhY2hlX2tleSA9
ICd1c2VyfCcgLiBPYmplY3Q6OlNpZ25hdHVyZTo6c2lnbmF0dXJlKCRjb25kKTsNCiAgICBteSAk
Y2FjaGVfdmFsID0gJGMtPmNhY2hlLT5nZXQoJGNhY2hlX2tleSk7DQoNCiAgICBpZiAoJGNhY2hl
X3ZhbCkgew0KICAgICAgICByZXR1cm4gJGNhY2hlX3ZhbDsNCiAgICB9DQoNCiAgICAkY2FjaGVf
dmFsID0gZ2V0X3VzZXJfZnJvbV9kYiggJGMsICRjb25kICk7DQogICAgcmV0dXJuIHVubGVzcyAo
JGNhY2hlX3ZhbCk7DQoNCiAgICAkYy0+Y2FjaGUtPnNldCggJGNhY2hlX2tleSwgJGNhY2hlX3Zh
bCwgNzIwMCApOyAgICAjIHR3byBob3Vycw0KICAgIHJldHVybiAkY2FjaGVfdmFsOw0KfQ0KDQoj
IFVzYWdlOg0KIyBnZXRfbXVsdGkoJGMsIHVzZXJfaWQgPT4gWzEsIDIsIDNdICApOw0KIyBnZXRf
bXVsdGkoJGMsIHVzZXJuYW1lID0+IFsnZmF5bGFuZCcsICd0ZXN0bWFuJ10gKTsNCnN1YiBnZXRf
bXVsdGkgew0KICAgIG15ICggJGMsICRrZXksICR2YWwgKSA9IEBfOw0KDQogICAgbXkgQG1lbV9r
ZXlzOw0KICAgIG15ICV2YWxfbWFwX2tleTsNCiAgICBmb3JlYWNoIChAJHZhbCkgew0KICAgICAg
ICBteSAkY2FjaGVfa2V5ID0gJ3VzZXJ8JyAuIE9iamVjdDo6U2lnbmF0dXJlOjpzaWduYXR1cmUo
IHsgJGtleSA9PiAkXyB9ICk7DQogICAgICAgIHB1c2ggQG1lbV9rZXlzLCAkY2FjaGVfa2V5Ow0K
ICAgICAgICAkdmFsX21hcF9rZXl7JF99ID0gJGNhY2hlX2tleTsNCiAgICB9DQoNCiAgICBteSAk
Y2FjaGUgPSAkYy0+ZGVmYXVsdF9jYWNoZV9iYWNrZW5kOw0KICAgIG15ICR1c2VyczsNCiAgICBp
ZiAoICRjYWNoZS0+Y2FuKCdnZXRfbXVsdGknKSApIHsgICAgIyBmb3IgQ2FjaGU6Ok1lbWNhY2hl
ZA0KICAgICAgICAkdXNlcnMgPSAkY2FjaGUtPmdldF9tdWx0aShAbWVtX2tleXMpOw0KICAgIH0g
ZWxzZSB7DQogICAgICAgIGZvcmVhY2ggKEBtZW1fa2V5cykgew0KICAgICAgICAgICAgJHVzZXJz
LT57JF99ID0gJGMtPmNhY2hlLT5nZXQoJF8pOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgbXkg
JXJldHVybl91c2VyczsNCiAgICBmb3JlYWNoIG15ICR2IChAJHZhbCkgew0KICAgICAgICBpZiAo
ICR1c2Vycy0+eyAkdmFsX21hcF9rZXl7JHZ9IH0gKSB7DQogICAgICAgICAgICAkcmV0dXJuX3Vz
ZXJzeyR2fSA9ICR1c2Vycy0+eyAkdmFsX21hcF9rZXl7JHZ9IH07DQogICAgICAgIH0gZWxzZSB7
DQogICAgICAgICAgICAkcmV0dXJuX3VzZXJzeyR2fSA9IGdldF91c2VyX2Zyb21fZGIoICRjLCB7
ICRrZXkgPT4gJHYgfSApOw0KICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkcmV0dXJuX3VzZXJz
eyR2fSApOw0KICAgICAgICAgICAgJGMtPmNhY2hlLT5zZXQoICR2YWxfbWFwX2tleXskdn0sICRy
ZXR1cm5fdXNlcnN7JHZ9LCA3MjAwICk7ICAgICMgdHdvIGhvdXJzDQogICAgICAgIH0NCiAgICB9
DQoNCiAgICByZXR1cm4gXCVyZXR1cm5fdXNlcnM7DQp9DQoNCnN1YiBnZXRfdXNlcl9mcm9tX2Ri
IHsNCiAgICBteSAoICRjLCAkY29uZCApID0gQF87DQoNCiAgICBteSAkdXNlciA9ICRjLT5zY2hl
bWEtPnJlc3VsdHNldCgnVXNlcicpLT5maW5kKCRjb25kKTsNCiAgICByZXR1cm4gdW5sZXNzICgk
dXNlcik7DQoNCiAgICAjIHVzZXJfZGV0YWlscw0KICAgIG15ICR1c2VyX2RldGFpbHMgPSAkYy0+
c2NoZW1hLT5yZXN1bHRzZXQoJ1VzZXJEZXRhaWxzJykNCiAgICAgICAgLT5maW5kKCB7IHVzZXJf
aWQgPT4gJHVzZXItPnVzZXJfaWQgfSApOw0KICAgICR1c2VyX2RldGFpbHMgPSAkdXNlcl9kZXRh
aWxzLT57X2NvbHVtbl9kYXRhfSBpZiAoJHVzZXJfZGV0YWlscyk7DQoNCiAgICAjIHVzZXIgcm9s
ZQ0KICAgIG15IEByb2xlcyA9ICRjLT5zY2hlbWEtPnJlc3VsdHNldCgnVXNlclJvbGUnKQ0KICAg
ICAgICAtPnNlYXJjaCggeyB1c2VyX2lkID0+ICR1c2VyLT51c2VyX2lkLCB9ICktPmFsbDsNCiAg
ICBteSAkcm9sZXM7DQogICAgZm9yZWFjaCAoQHJvbGVzKSB7DQogICAgICAgICRyb2xlcy0+eyAk
Xy0+ZmllbGQgfS0+eyAkXy0+cm9sZSB9ID0gMTsNCiAgICB9DQoNCiAgICAjIHVzZXIgcHJvZmls
ZSBwaG90bw0KICAgIG15ICRwcm9maWxlX3Bob3RvID0gJGMtPnNjaGVtYS0+cmVzdWx0c2V0KCdV
c2VyUHJvZmlsZVBob3RvJykNCiAgICAgICAgLT5maW5kKCB7IHVzZXJfaWQgPT4gJHVzZXItPnVz
ZXJfaWQsIH0gKTsNCiAgICBpZiAoJHByb2ZpbGVfcGhvdG8pIHsNCiAgICAgICAgJHByb2ZpbGVf
cGhvdG8gPSAkcHJvZmlsZV9waG90by0+e19jb2x1bW5fZGF0YX07DQogICAgICAgIGlmICggJHBy
b2ZpbGVfcGhvdG8tPnt0eXBlfSBlcSAndXBsb2FkJyApIHsNCiAgICAgICAgICAgIG15ICRwcm9m
aWxlX3Bob3RvX3VwbG9hZA0KICAgICAgICAgICAgICAgID0gJGMtPm1vZGVsKCdVcGxvYWQnKS0+
Z2V0KCAkYywgJHByb2ZpbGVfcGhvdG8tPnt2YWx1ZX0gKTsNCiAgICAgICAgICAgICRwcm9maWxl
X3Bob3RvLT57dXBsb2FkfSA9ICRwcm9maWxlX3Bob3RvX3VwbG9hZA0KICAgICAgICAgICAgICAg
IGlmICgkcHJvZmlsZV9waG90b191cGxvYWQpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgJHVz
ZXIgICAgICAgICAgICAgICAgICA9ICR1c2VyLT57X2NvbHVtbl9kYXRhfTsNCiAgICAkdXNlci0+
e2RldGFpbHN9ICAgICAgID0gJHVzZXJfZGV0YWlsczsNCiAgICAkdXNlci0+e3JvbGVzfSAgICAg
ICAgID0gJHJvbGVzOw0KICAgICR1c2VyLT57cHJvZmlsZV9waG90b30gPSAkcHJvZmlsZV9waG90
bzsNCiAgICByZXR1cm4gJHVzZXI7DQp9DQoNCnN1YiBkZWxldGVfY2FjaGVfYnlfdXNlciB7DQog
ICAgbXkgKCAkYywgJHVzZXIgKSA9IEBfOw0KDQogICAgcmV0dXJuIHVubGVzcyAoJHVzZXIpOw0K
DQogICAgbXkgQGNrZXlzOw0KICAgIHB1c2ggQGNrZXlzLA0KICAgICAgICAndXNlcnwnIC4gT2Jq
ZWN0OjpTaWduYXR1cmU6OnNpZ25hdHVyZSggeyB1c2VyX2lkID0+ICR1c2VyLT57dXNlcl9pZH0g
fSApOw0KICAgIHB1c2ggQGNrZXlzLA0KICAgICAgICAndXNlcnwnIC4gT2JqZWN0OjpTaWduYXR1
cmU6OnNpZ25hdHVyZSggeyB1c2VybmFtZSA9PiAkdXNlci0+e3VzZXJuYW1lfSB9ICk7DQogICAg
cHVzaCBAY2tleXMsICd1c2VyfCcgLiBPYmplY3Q6OlNpZ25hdHVyZTo6c2lnbmF0dXJlKCB7IGVt
YWlsID0+ICR1c2VyLT57ZW1haWx9IH0gKTsNCg0KICAgIGZvcmVhY2ggbXkgJGNrZXkgKEBja2V5
cykgew0KICAgICAgICAkYy0+Y2FjaGUtPnJlbW92ZSgkY2tleSk7DQogICAgfQ0KDQogICAgcmV0
dXJuIDE7DQp9DQoNCnN1YiBkZWxldGVfY2FjaGVfYnlfdXNlcl9jb25kIHsNCiAgICBteSAoICRj
LCAkY29uZCApID0gQF87DQoNCiAgICBteSAkdXNlciA9ICRjLT5nZXQoICRjLCAkY29uZCApOw0K
ICAgICRjLT5kZWxldGVfY2FjaGVfYnlfdXNlciggJGMsICR1c2VyICk7DQp9DQoNCiMgY2FsbCB0
aGlzIHVwZGF0ZSB3aWxsIGRlbGV0ZSBjYWNoZS4NCnN1YiB1cGRhdGUgew0KICAgIG15ICggJGMs
ICR1c2VyLCAkdXBkYXRlICkgPSBAXzsNCg0KICAgICRjLT5kZWxldGVfY2FjaGVfYnlfdXNlcigg
JGMsICR1c2VyICk7DQogICAgJGMtPnNjaGVtYS0+cmVzdWx0c2V0KCdVc2VyJyktPnNlYXJjaCgg
eyB1c2VyX2lkID0+ICR1c2VyLT57dXNlcl9pZH0sIH0gKQ0KICAgICAgICAtPnVwZGF0ZSgkdXBk
YXRlKTsNCn0NCg0KIyBnZXQgdXNlcl9zZXR0aW5ncw0KIyB3ZSBkb24ndCBtZXJnZSBpdCBpbnRv
IHN1YiBnZXRfdXNlcl9mcm9tX2RiIGlzIGJlY2F1c2UgaXQncyBub3QgdXNlZCBzbyBmcmVxdWVu
dGx5DQpzdWIgZ2V0X3VzZXJfc2V0dGluZ3Mgew0KICAgIG15ICggJGMsICR1c2VyICkgPSBAXzsN
Cg0KICAgICMgdGhpcyBjYWNoZWtleSB3b3VsZCBiZSBkZWxldGUgZnJvbSBDb250cm9sbGVyL1Nl
dHRpbmdzLnBtDQogICAgbXkgJGNhY2hla2V5ID0gJ3VzZXJ8dXNlcl9zZXR0aW5nc3x1c2VyX2lk
PScgLiAkdXNlci0+e3VzZXJfaWR9Ow0KICAgIG15ICRjYWNoZXZhbCA9ICRjLT5jYWNoZS0+Z2V0
KCRjYWNoZWtleSk7DQoNCiAgICBpZiAoJGNhY2hldmFsKSB7DQogICAgICAgICRjYWNoZXZhbCA9
ICRjYWNoZXZhbC0+e3ZhbH07DQogICAgfSBlbHNlIHsNCiAgICAgICAgbXkgJHNldHRpbmdzX3Jz
ID0gJGMtPnNjaGVtYS0+cmVzdWx0c2V0KCdVc2VyU2V0dGluZ3MnKQ0KICAgICAgICAgICAgLT5z
ZWFyY2goIHsgdXNlcl9pZCA9PiAkdXNlci0+e3VzZXJfaWR9IH0gKTsNCiAgICAgICAgJGNhY2hl
dmFsID0ge307DQogICAgICAgIHdoaWxlICggbXkgJHJzID0gJHNldHRpbmdzX3JzLT5uZXh0ICkg
ew0KICAgICAgICAgICAgJGNhY2hldmFsLT57ICRycy0+dHlwZSB9ID0gJHJzLT52YWx1ZTsNCiAg
ICAgICAgfQ0KICAgICAgICAkYy0+Y2FjaGUtPnNldCggJGNhY2hla2V5LCB7IHZhbCA9PiAkY2Fj
aGV2YWwsIDEgPT4gfSApOyAgICAjIGZvciBlbXB0eSAkY2FjaGV2YWwNCiAgICB9DQoNCiAgICAj
IGlmIG5vdCBzdG9yZWQgaW4gZGIsIHdlIHVzZSBkZWZhdWx0IHZhbHVlOw0KICAgIG15ICRkZWZh
dWx0ID0gew0KICAgICAgICAnc2VuZF9zdGFycmVkX25vdGlmaWNhdGlvbicgPT4gJ1knLA0KICAg
ICAgICAnc2hvd19lbWFpbF9wdWJsaWMnICAgICAgICAgPT4gJ1knLA0KICAgIH07DQogICAgbXkg
JHJldCA9IHsgJSRkZWZhdWx0LCAlJGNhY2hldmFsIH07ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMgbWVyZ2UNCiAgICByZXR1cm4gJHJldDsNCn0NCg0KMTsNCl9fRU5EX18NCg0KPXBvZA0K
DQo9aGVhZDEgTkFNRQ0KDQpGb29ydW06Ok1vZGVsOjpVc2VyIC0gVXNlciBvYmplY3QNCg0KPWhl
YWQxIEZVTkMNCg0KPW92ZXIgNA0KDQo9aXRlbSBnZXQNCg0KICBnZXQoJGMsIHsgdXNlcl9pZCA9
PiA/IH0gKTsNCiAgZ2V0KCRjLCB7IHVzZXJuYW1lID0+ID8gfSApOw0KICBnZXQoJGMsIHsgZW1h
aWwgPT4gPyB9ICk7DQoNCmdldCgpIGRvIG5vdCBxdWVyeSBkYXRhYmFzZSBkaXJlY3RseSwgaXQg
dHJ5IHRvIGdldCBmcm9tIGNhY2hlLCBpZiBub3QgZXhpc3RzLCBnZXRfdXNlcl9mcm9tX2RiKCkg
YW5kIHNldCBjYWNoZS4gcmV0dXJuIGlzIGEgaGFzaHJlZjogKHdlIG1heSBjYWxsIGl0ICR1c2Vy
X29iaiBiZWxvdykNCg0KICB7DQogICAgdXNlcl9pZCAgPT4gMSwNCiAgICB1c2VybmFtZSA9PiAn
ZmF5bGFuZCcsDQogICAgIyBldGMuIGZyb20gdXNlciB0YWJsZSBjb2x1bW5zDQogICAgZGV0YWls
cyAgPT4gew0KICAgICAgICBiaXJ0aGRheSA9PiAnMTk4NC0wMi0wNicsDQogICAgICAgIGd0YWxr
ICAgID0+ICdmYXlsYW5kJw0KICAgICAgICAjIGV0Yy4gZnJvbSB1c2VyX2RldGFpbHMgdGFibGUg
Y29sdW1ucw0KICAgIH0sDQogICAgcm9sZXMgICAgPT4gew0KICAgICAgICAxID0+IHsgYWRtaW4g
PT4gMSB9LA0KICAgICAgICBzaXRlID0+IHsgYWRtaW4gPT4gMSB9LA0KICAgICAgICAjIGV0Yy4g
ZnJvbSB1c2VyX3JvbGVzLCAkZmllbGQgPT4geyAkcm9sZSA9PiAxIH0NCiAgICB9DQogICAgcHJv
ZmlsZV9waG90byA9PiB7DQogICAgICAgIHR5cGUgID0+ICd1cGxvYWQnLA0KICAgICAgICB2YWx1
ZSA9PiAxMCwNCiAgICAgICAgIyBldGMuIGZyb20gdXNlcl9wcm9maWxlX3Bob3RvIHRhYmxlIGNv
bHVtbnMNCiAgICAgICAgdXBsb2FkID0+IHsNCiAgICAgICAgICAgIHVwbG9hZF9pZCA9PiAxMCwN
CiAgICAgICAgICAgIGZpbGVuYW1lICA9PiAnZmF5bGFuZC5qcGcnLA0KICAgICAgICAgICAgIyBl
dGMuIGZyb20gdXBsb2FkIHRhYmxlIGNvbHVtbnMNCiAgICAgICAgfQ0KICAgIH0NCiAgfQ0KDQo9
aXRlbSBnZXRfbXVsdGkNCg0KICBnZXRfbXVsdGkoJGMsIHVzZXJfaWQgPT4gWzEsIDIsIDNdICAp
Ow0KICBnZXRfbXVsdGkoJGMsIHVzZXJuYW1lID0+IFsnZmF5bGFuZCcsICd0ZXN0bWFuJ10gKTsN
Cg0KZ2V0X211bHRpKCkgaXMgdG8gZWFzZSBhIGxvb3AgZm9yIG1hbnkgdXNlcnMuIGlmIGNhY2hl
IGJhY2tlbmQgaXMgbWVtY2FjaGVkLCBpdCB3b3VsZCB1c2UgJG1lbWNhY2hlZC0+Z2V0X211bHRp
KCk7IHRvIGdldCBjYWNoZWQgdXNlciwgYW5kIHVzZSBnZXRfdXNlcl9mcm9tX2RiKCkgdG8gbWlz
c2luZyB1c2Vycy4gcmV0dXJuIGlzIGEgaGFzaHJlZjoNCg0KICAjICR1c2VyX29iaiBpcyB0aGUg
dXNlciBoYXNoIGFib3ZlDQogIDEgPT4gJHVzZXJfb2JqLA0KICAyID0+ICR1c2VyX29iaiwNCiAg
IyBvcg0KICBmYXlsYW5kID0+ICR1c2VyX29iaiwNCiAgdGVzdG1hbiA9PiAkdXNlcl9vYmosDQoN
CihUT0RPOiB3ZSBtYXkgdXNlIHsgdXNlcl9pZCA9PiB7ICdJTicgPT4gXEB1c2VyX2lkcyB9IH0g
Zm9yIG1pc3NpbmcgdXNlcnMuKQ0KDQo9aXRlbSBnZXRfdXNlcl9mcm9tX2RiKCkNCg0KICBnZXRf
dXNlcl9mcm9tX2RiKCRjLCB7IHVzZXJfaWQgPT4gPyB9ICk7DQogIGdldF91c2VyX2Zyb21fZGIo
JGMsIHsgdXNlcm5hbWUgPT4gPyB9ICk7DQogIGdldF91c2VyX2Zyb21fZGIoJGMsIHsgZW1haWwg
PT4gPyB9ICk7DQoNCnF1ZXJ5IGRiIGRpcmVjdGx5LiByZXR1cm4gJHVzZXJfb2JqDQoNCj1pdGVt
IHVwZGF0ZSgpDQoNCiAgdXBkYXRlKCRjLCAkdXNlcl9vYmosIHsgdXBkYXRlX2NvbHVtbiA9PiAk
dmFsdWUgfSApOw0KDQp0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuICRyb3ctPnVwZGF0ZSBvZiBMPERC
SXg6OkNsYXNzPiBpcyB0aGF0IGl0IGRlbGV0ZSBjYWNoZS4NCg0KPWl0ZW0gZGVsZXRlX2NhY2hl
X2J5X3VzZXIoKQ0KDQogIGRlbGV0ZV9jYWNoZV9ieV91c2VyKCRjLCAkdXNlcl9vYmopOw0KDQo9
aXRlbSBkZWxldGVfY2FjaGVfYnlfdXNlcl9jb25kDQoNCiAgZGVsZXRlX2NhY2hlX2J5X3VzZXJf
Y29uZCgkYywgeyB1c2VyX2lkID0+ID8gfSApOw0KICBkZWxldGVfY2FjaGVfYnlfdXNlcl9jb25k
KCRjLCB7IHVzZXJuYW1lID0+ID8gfSApOw0KICBkZWxldGVfY2FjaGVfYnlfdXNlcl9jb25kKCRj
LCB7IGVtYWlsID0+ID8gfSApOw0KDQo9aXRlbSBnZXRfdXNlcl9zZXR0aW5ncw0KDQogIGdldF91
c2VyX3NldHRpbmdzKCRjLCAkdXNlcl9vYmopOw0KDQpnZXQgcmVjb3JkcyBmcm9tIHVzZXJfc2V0
dGluZ3MgdGFibGUuIHJldHVybiBpcyBoYXNocmVmDQoNCiAgew0KICAgIHNlbmRfc3RhcnJlZF9u
b3RpZmljYXRpb24gPT4gJ04nLA0KICB9DQoNCj1iYWNrDQoNCj1oZWFkMiBBVVRIT1INCg0KRmF5
bGFuZCBMYW0gPGZheWxhbmQgYXQgZ21haWwuY29tPg0KDQo9Y3V0Cg==


More information about the Catalyst mailing list