# Name: smd_slimbox v0.33 # Type: Client side plugin # Image gallery lightbox wrapper that can use Slimbox, Litebox, Moonbox, Thickbox etc # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjExOiJzbWRfc2xpbWJveCI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC4zMyI7czoxMToiZGVzY3JpcHRpb24iO3M6 ODM6IkltYWdlIGdhbGxlcnkgbGlnaHRib3ggd3JhcHBlciB0aGF0IGNhbiB1c2UgU2xpbWJv eCwgTGl0ZWJveCwgTW9vbmJveCwgVGhpY2tib3ggZXRjIjtzOjQ6ImNvZGUiO3M6MTU1MDA6 Ii8vIERFUFJFQ0FURUQNCmZ1bmN0aW9uIHNtZF9zbGltYm94X2luYygkYXR0cykgew0KCWds b2JhbCAkcHJvZHVjdGlvbl9zdGF0dXM7DQoJaWYgKGluX2FycmF5KCRwcm9kdWN0aW9uX3N0 YXR1cywgYXJyYXkoJ2RlYnVnJywgJ3Rlc3RpbmcnKSkpIHsNCgkJdHJpZ2dlcl9lcnJvcigi c21kX3NsaW1ib3hfaW5jIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIFBsZWFzZSByZW1vdmUg aXQgYW5kIGluY2x1ZGUgdGhlIHJlbGV2YW50IGphdmFzY3JpcHQgbGlicmFyaWVzIG1hbnVh bGx5IG9uIHlvdXIgcGFnZS4iKTsNCgl9DQoJcmV0dXJuOw0KfQ0KcmVxdWlyZV9wbHVnaW4o J3NtZF9saWInKTsNCi8vIE1MUCBzdXBwb3J0DQpnbG9iYWwgJHNtZF9zYm94TGFuZzsNCiRz bWRfc2JveFN0ciA9IGFycmF5KA0KCSduZXh0X2xibCcgPT4gJ05leHQnLA0KCSdwcmV2X2xi bCcgPT4gJ1ByZXYnLA0KKTsNCiRzbWRfc2JveExhbmcgPSBuZXcgc21kX01MUCgnc21kX3Ns aW1ib3gnLCAnc21kX3Nib3gnLCAkc21kX3Nib3hTdHIpOw0KDQpmdW5jdGlvbiBzbWRfc2xp bWJveCgkYXR0cywgJHRoaW5nPScnKSB7DQoJZ2xvYmFsICRwcm9kdWN0aW9uX3N0YXR1cywg JHByZXRleHQsICR0aGlzYXJ0aWNsZSwgJGltZ19kaXIsICRzbWRfc2JveExhbmc7DQoNCgkv LyAqKiBMT09LVVAgVEFCTEVTDQoJLy8gSG9sZHMgZGF0YWJhc2UgZmllbGQgYXMga2V5IGlu ZGV4IGFuZCBwbHVnaW4gb3B0aW9uIG5hbWVzIGFzIHZhbHVlLg0KCS8vIFVzZSBhcnJheV9z ZWFyY2ggdG8gZmluZCBpZiB2YWx1ZSBleGlzdHMgYW5kIHJldHVybiBjb3JyZWN0IGtleSBm b3IgdXNlIGluIGRiIGNhbGxzLg0KCSRmaWVsZE1hcCA9IGFycmF5KA0KCQkibmFtZSIgPT4g Im5hbWUiLA0KCQkiaWQiID0+ICJpZCIsDQoJCSJhbHQiID0+ICJhbHQiLA0KCQkiY2FwdGlv biIgPT4gImNhcHRpb24iLA0KCQkiY2F0ZWdvcnkiID0+ICJjYXRlZ29yeSIsDQoJCSJhdXRo b3IiID0+ICJhdXRob3IiLA0KCQkiZGF0ZSIgPT4gImRhdGUiLA0KCQkiZXh0IiA9PiAiZXh0 IiwNCgkJInciID0+ICJ3aWR0aCIsDQoJCSJoIiA9PiAiaGVpZ2h0IiwNCgkpOw0KCSRzaG93 TG9jcyA9IGFycmF5KCJiZWxvdyIsImFib3ZlIiwiYWZ0ZXIiLCJiZWZvcmUiLCJvbmNoYW5n ZSIpOw0KLy8JJGNsYXNzVHlwZXMgPSBhcnJheV9tZXJnZShhcnJheSgiZ3JvdXAiLCJjZWxs IiwibGluayIsImltZyIsInRodW1idGV4dCIsIm5hdiIsInByZXYiLCJuZXh0IiksJHNob3dM b2NzKTsNCi8vCSRvcGVyYW5kcyA9IGFycmF5KCJjaGFuZ2VzIiwgImNvbnRhaW5zIiwgImVx IiwgImx0IiwgImd0IiwgImx0ZSIsICJndGUiLCAibm90Iik7DQoJJHRodW1iaG9sZGVyID0g Ijo6U0JPWF9SRVBMOjoiOw0KDQoJJGF0dGVtcHRNYXRjaCA9IChpc3NldCgkYXR0c1snY2F0 ZWdvcnknXSkgfHwgaXNzZXQoJGF0dHNbJ2ltYWdlaWQnXSkpID8gdHJ1ZSA6IGZhbHNlOw0K DQoJLy8gUGx1Z2luIG9wdGlvbnMNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQknZGVsaW0n CQkJCT0+ICcsJywNCgkJJ3BhcmFtZGVsaW0nCQk9PiAnOicsDQoJCSdpbWFnZWlkJwkJCT0+ ICcnLA0KCQknY2F0ZWdvcnknCQkJPT4gJycsDQoJCSdzdWJjYXRzJwkJCT0+ICcwJywNCgkJ J3RyaWdnZXInCQkJPT4gJ2xpZ2h0Ym94LScsDQoJCSdncm91cG5hbWUnCQkJPT4gJ3NtZCcs DQoJCSd0aHVtYicJCQkJPT4gJzA6MScsDQoJCSdsaW1pdCcJCQkJPT4gJzAnLA0KCQknbWF4 bGltaXQnCQkJPT4gJzk5OTk5JywNCgkJJ3NvcnQnCQkJCT0+ICdjYXRlZ29yeSBhc2MnLCAv LyB3YXMgb3JkZXJieQ0KCQknb3JkZXJieScJCQk9PiAnJywgLy8gREVQUkVDQVRFRA0KCQkn c2hvd3BhZ2VsaW5rcycJPT4gJzEnLA0KCQknZ2FsbGVyeWlkJwkJCT0+ICc/NDo2JywNCgkJ J2ltYWdlY2FwdGlvbicJCT0+ICc/Y2FwdGlvbicsDQoJCSd0aHVtYnNpemUnCQkJPT4gJycs DQoJCSd0aHVtYnRleHQnCQkJPT4gJycsDQoJCSd0aHVtYnRleHR3cmFwJwk9PiAnc3Bhbics DQoJCSd0aHVtYnRleHRjbGFzcycJPT4gJycsDQoJCSd3cmFwdGFnJwkJCT0+ICcnLA0KCQkn bmF2d3JhcHRhZycJCT0+ICcnLA0KCQkncHJldmxhYmVsJwkJCT0+ICRzbWRfc2JveExhbmct PmdUeHQoJ3ByZXZfbGJsJyksDQoJCSduZXh0bGFiZWwnCQkJPT4gJHNtZF9zYm94TGFuZy0+ Z1R4dCgnbmV4dF9sYmwnKSwNCgkJJ3ByZXZjbGFzcycJCQk9PiAnc21kX3NsaW1ib3hfcHJl dicsDQoJCSduZXh0Y2xhc3MnCQkJPT4gJ3NtZF9zbGltYm94X25leHQnLA0KCQknbmF2Y2xh c3MnCQkJPT4gJycsDQoJCSdjZWxsY2xhc3MnCQkJPT4gJycsDQoJCSdsaW5rY2xhc3MnCQkJ PT4gJycsDQoJCSdpbWdjbGFzcycJCQk9PiAnJywNCgkJJ2RlYnVnJwkJCT0+ICcwJywNCgkp LCAkYXR0cykpOw0KDQoJLy8gREVQUkVDQVRFRDogQ29udmVydCBvcmRlcmJ5IHRvIHRoZSBu ZXcgc29ydC4gUmVtb3ZlIGluIGxhdGVyIHZlcnNpb25zDQoJaWYgKCRvcmRlcmJ5KSB7DQoJ CSRzb3J0ID0gc3RyX3JlcGxhY2UgKCI6IiwgIiAiLCAkb3JkZXJieSk7DQoJCWlmIChpbl9h cnJheSgkcHJvZHVjdGlvbl9zdGF0dXMsIGFycmF5KCdkZWJ1ZycsICd0ZXN0aW5nJykpKSB7 DQoJCQl0cmlnZ2VyX2Vycm9yKCInb3JkZXJieScgaXMgbm93IHJlbmFtZWQgJ3NvcnQnLiBV c2UgYSBzcGFjZSBpbnN0ZWFkIG9mIGEgY29sb24gdG8gc3BlY2lmeSBzb3J0IG9yZGVyIChl LmcuIG9yZGVyYnk9J2NhdGVnb3J5OmFzYycgaXMgbm93IHNvcnQ9J2NhdGVnb3J5IGFzYycp LiIpOw0KCQl9DQoJfQ0KCS8vIENhdGVnb3J5IHJlbGllcyBvbiB3aGV0aGVyIGltYWdlaWQg aGFzIGJlZW4gc3BlY2lmaWVkIG9yIG5vdC4NCgkvLyBsQXR0cygpIHdvbid0IGxldCB1cyBo YW5kbGUgdGhpcyBsb2dpYyBzbyBpdCBoYXMgdG8gYmUgZG9uZSBtYW51YWxseQ0KCSRjYXRl Z29yeSA9IGlzc2V0KCRjYXRlZ29yeSkgPyBkb1NsYXNoKCRjYXRlZ29yeSkgOiAoKCRpbWFn ZWlkPT0iIikgPyAkcHJldGV4dFsnYyddOiAnJyk7DQoNCgkvLyBUaGUgZ2FsbGVyeSBpZGVu dGlmaWVyIGlzIHVzZWQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgbmV4dC9wcmV2IHRodW1icGFn ZSBsaW5rcy4NCgkvLyBEb24ndCB1c2UgcGFyYW1kZWxpbSBoZXJlIG9yIHRoZSBkZWZhdWx0 IG9wdGlvbiBicmVha3MNCgkkZ2FsbElEID0gIiI7DQoJaWYgKCRnYWxsZXJ5aWQgPT0gIiIg fHwgc3Vic3RyKCRnYWxsZXJ5aWQsMCwxKSA9PSAiPyIpIHsNCgkJLy8gR2VuZXJhdGUgYSB1 bmlxdWUgSUQgZm9yIHRoaXMgZ2FsbGVyeSBpbnN0YW5jZQ0KCQkkZ2FsbFRtcCA9IG1kNSgk Y2F0ZWdvcnkuJGltYWdlaWQuJG9yZGVyYnkuJGxpbWl0LiRtYXhsaW1pdC4kd3JhcHRhZyk7 DQoJCWxpc3QoJGdhbGxMZW4sICRnYWxsU2tpcCkgPSBleHBsb2RlKCI6Iiwgc3Vic3RyKCRn YWxsZXJ5aWQsMSkpOw0KCQkkZ2FsbExlbiA9ICAoZW1wdHkoJGdhbGxMZW4pKSA/ICI0IiA6 ICRnYWxsTGVuOw0KCQkkZ2FsbFNraXAgPSAgKGVtcHR5KCRnYWxsU2tpcCkpID8gIjEiIDog JGdhbGxTa2lwOw0KCQlmb3IgKCRpZHggPSAwLCAkY250ID0gMDsgJGNudCA8ICRnYWxsTGVu OyAkY250KyssICRpZHggPSAoKCRpZHgrJGdhbGxTa2lwKSAlIHN0cmxlbigkZ2FsbFRtcCkp KSB7DQoJCQkkZ2FsbElEIC49ICRnYWxsVG1wWyRpZHhdOw0KCQl9DQoJfSBlbHNlIHsNCgkJ JGdhbGxJRCA9ICRnYWxsZXJ5aWQ7DQoJfQ0KDQoJLy8gU2V0IHVwIHRoZSB2YXJpYWJsZXMg ZnJvbSB0aGUgdGh1bWIgb3B0aW9uLg0KCS8vIERvbid0IHVzZSBwYXJhbWRlbGltIGhlcmUg b3IgdGhlIGRlZmF1bHQgb3B0aW9uIGJyZWFrcw0KCSR0aHVtYk9wdHMgPSBkb19saXN0KCR0 aHVtYiwgIjoiKTsNCglpZiAoY291bnQoJHRodW1iT3B0cykgPT0gMSkgew0KCQkkZnVsbG1v ZCA9ICgkdGh1bWJPcHRzWzBdID09IDEpID8gInQiIDogIiI7DQoJCSR0aHVtYm1vZCA9ICJ0 IjsNCgl9IGVsc2Ugew0KCQkkZnVsbG1vZCA9ICgkdGh1bWJPcHRzWzBdID09IDEpID8gInQi IDogIiI7DQoJCSR0aHVtYm1vZCA9ICgkdGh1bWJPcHRzWzFdID09IDEpID8gInQiIDogIiI7 DQoJfQ0KDQoJLy8gRXh0cmFjdCB0aGUgZ2l2ZW4gY2F0ZWdvcnkvaW1hZ2VpZCBsaXN0cyBh bmQgbWFrZSB1cCB0aGUgYmVnaW5uaW5ncyBvZiBhIFdIRVJFIGNsYXVzZQ0KCSRjbGF1c2Vb XSA9ICcxPTEnOw0KCSRjbGF1c2VPUiA9IGFycmF5KCk7DQoJJHN1YmluZm8gPSAoJHN1YmNh dHMpID8gImltYWdlOiIuJHN1YmNhdHMgOiAnJzsNCglsaXN0KCRmdWxsSURMaXN0LCAkbm90 SURMaXN0KSA9IHNtZF9kb0xpc3QoJGltYWdlaWQsIHRydWUsICcnLCB0cnVlLCAkZGVsaW0p Ow0KCWxpc3QoJGZ1bGxDYXRMaXN0LCAkbm90Q2F0TGlzdCkgPSBzbWRfZG9MaXN0KCRjYXRl Z29yeSwgZmFsc2UsICRzdWJpbmZvLCB0cnVlLCAkZGVsaW0pOw0KCWlmICgkZnVsbElETGlz dCkgew0KCQkkY2xhdXNlT1JbXSA9ICd0eHBfaW1hZ2UuaWQgSU4gKCcuaW1wbG9kZSgiLCIs ICRmdWxsSURMaXN0KS4nKSc7DQoJfQ0KCWlmICgkZnVsbENhdExpc3QpIHsNCgkJJGNsYXVz ZU9SW10gPSAndHhwX2ltYWdlLmNhdGVnb3J5IElOICgnLmltcGxvZGUoIiwiLCAkZnVsbENh dExpc3QpLicpJzsNCgl9DQoJaWYgKCFlbXB0eSgkY2xhdXNlT1IpKSB7DQoJCSRjbGF1c2Vb XSA9IGltcGxvZGUoIiBPUiAiLCAkY2xhdXNlT1IpOw0KCX0NCg0KCSRjbGF1c2UgPSBpbXBs b2RlKCIgQU5EICIsICRjbGF1c2UpOw0KCSRjbGF1c2UgLj0gKCRub3RDYXRMaXN0KSA/ICcg QU5EIHR4cF9pbWFnZS5jYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRub3RDYXRM aXN0KS4nKScgOiAnJzsNCgkkY2xhdXNlIC49ICgkbm90SURMaXN0KSA/ICcgQU5EIHR4cF9p bWFnZS5pZCBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRub3RJRExpc3QpLicpJyA6ICcnOw0K DQoJLy8gSWYgYSBjYXRlZ29yeS9pbWFnZWlkIG9wdGlvbiB3YXMgY2hvc2VuIGFuZCB0aGV5 IG1hdGNoZWQgbm90aGluZywgdXNlIGEgYm9ndXMgY2F0ZWdvcnkgdGhhdCBzaG91bGQgbm90 IGV4aXN0Lg0KCS8vIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBwbHVnaW4gZG9lcyB0aGUgZXhw ZWN0ZWQgdGhpbmcgb2YgbWF0Y2hpbmcgbm90aGluZyBpbiB0aGUgZXZlbnQgaXQgZmluZHMg bm90aGluZy4NCglpZiAoJGNsYXVzZSA9PSAiMT0xIiAmJiAkYXR0ZW1wdE1hdGNoKSB7DQog IAkJJGNsYXVzZSA9ICd0eHBfaW1hZ2UuY2F0ZWdvcnkgPSAic21kXycgLm10X3JhbmQoKS4g JyInOw0KCX0NCg0KCS8vIENvbnZlcnQgdGhlIHNvcnQgaW50byBhIHZhbGlkIHNvcnRpbmcg aGllcmFyY2h5Lg0KCS8vIE5vdGUgdGhhdCByYW5kb20gaXMgYSBzcGVjaWFsIGNhc2UgYW5k IHRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHk6DQoJLy8gIDEpIEFueXRoaW5nIGFwcGVhcmlu ZyBiZWZvcmUgcmFuZG9tIGlzIHBhc3NlZCB0byB0aGUgZGF0YWJhc2UgcXVlcnkgZm9yIG9y ZGVyaW5nDQoJLy8gIDIpIEFzIHNvb24gYXMgcmFuZG9tIGlzIGVuY291bnRlcmVkLCB0aGUg cmVzdCBvZiB0aGUgc29ydCBzdHJpbmcgaXMgaWdub3JlZC4NCgkvLyAgICAgVGhlIHJlc3Vs dHNldCB3aWxsIGJlIHNvcnRlZCByYW5kb21seSBpbnN0ZWFkDQoJLy8gIDMpIElmIHJhbmRv bSBhcHBlYXJzIGZpcnN0IGluIHRoZSBsaXN0LCB0aGUgZGF0YSBpcyByZXRyaWV2ZWQgcmFu ZG9tbHkgdGhlbiB0aGUNCgkvLyAgICAgcmVtYWluaW5nIG9wdGlvbnMgc29ydCB0aGUgcmVz dWx0c2V0DQoJJGNsYXVzZVNvcnQgPSBhcnJheSgpOw0KCSRwb3N0T3JkZXIgPSBhcnJheSgp Ow0KCSRydWxlID0gInNxbCI7DQoJJHBvc3RQcmVmaXggPSAiU09SVF8iOw0KCSRmaXhlZE9y ZGVyID0gJHJhbmRzb3J0ID0gZmFsc2U7DQoJJHNvcnQgPSBkb19saXN0KCRzb3J0LCAkZGVs aW0pOw0KCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkc29ydCk7ICRpZHgrKykgew0K CQkkc29ydF9kaXIgPSBleHBsb2RlKCcgJywgJHNvcnRbJGlkeF0pOw0KCQkkZGlyZWN0aW9u ID0gJGNvbFJlZiA9ICcnOw0KCQlpZiAoY291bnQoJHNvcnRfZGlyKSA8PSAxKSB7DQoJCQkk c29ydF9kaXJbMV0gPSAiYXNjIjsNCgkJfQ0KCQlpZiAoJHJ1bGUgPT0gInNxbCIpIHsNCgkJ CSRkaXJlY3Rpb24gPSAoJHNvcnRfZGlyWzFdID09ICJkZXNjIikgPyAnIGRlc2MnIDogJyBh c2MnOw0KCQl9IGVsc2Ugew0KCQkJJGRpcmVjdGlvbiA9ICgkc29ydF9kaXJbMV0gPT0gImRl c2MiKSA/ICRwb3N0UHJlZml4LidERVNDJyA6ICRwb3N0UHJlZml4LidBU0MnOw0KCQl9DQoN CgkJc3dpdGNoICgkc29ydF9kaXJbMF0pIHsNCgkJCWNhc2UgJ3JhbmRvbSc6DQoJCQkJJHJ1 bGUgPSAicG9zdCI7DQoJCQkJaWYgKCRpZHggPT0gMCkgew0KCQkJCQkkY2xhdXNlU29ydFtd ID0gJ3JhbmQoKSc7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHJhbmRzb3J0ID0gdHJ1ZTsNCgkJ CQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICdmaXhlZCc6DQoJCQkJLy8gJ2ZpeGVkJyBvbmx5 IHdvcmtzIG9uIGlkcw0KCQkJCSRmaXhlZE9yZGVyID0gKCRpbWFnZWlkID09ICcnKSA/IGZh bHNlIDogdHJ1ZTsNCgkJCQlicmVhazsNCgkJCWRlZmF1bHQ6DQoJCQkJJGNvbFJlZiA9IGFy cmF5X3NlYXJjaCgkc29ydF9kaXJbMF0sICRmaWVsZE1hcCk7DQoJCQkJYnJlYWs7DQoJCX0N CgkJaWYgKCRydWxlID09ICJzcWwiKSB7DQoJCQlpZiAoJGNvbFJlZiAhPSAnJykgew0KCQkJ CSRjbGF1c2VTb3J0W10gPSAkY29sUmVmLiRkaXJlY3Rpb247DQoJCQl9DQoJCX0gZWxzZSB7 DQoJCQlpZiAoISRyYW5kc29ydCkgew0KCQkJCWlmICgkY29sUmVmICE9ICcnKSB7DQoJCQkJ CSRwb3N0T3JkZXJbXSA9IGFycmF5KCJjb2wiID0+ICRjb2xSZWYsICJzb3J0IiA9PiAkZGly ZWN0aW9uKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCglpZiAoY291bnQoJGNsYXVzZVNv cnQpID4gMCkgew0KCQkkY2xhdXNlIC49ICcgT1JERVIgQlkgJyAuIGltcGxvZGUoIiwiLCRj bGF1c2VTb3J0KTsNCgl9DQoNCgkvLyBUaGUgZGF0YWJhc2UgZmllbGRzIHJlcXVpcmVkDQoJ JGZpZWxkcyA9ICdpZCxuYW1lLGNhcHRpb24sYWx0LGNhdGVnb3J5LGRhdGUsYXV0aG9yLGV4 dCx3LGgnOw0KDQoJLy8gSGFuZGxlIHBhZ2luZw0KCWlmICgoJGxpbWl0ID4gMCkgJiYgJHNo b3dwYWdlbGlua3MpIHsNCgkJJHJzID0gc2FmZV9yb3dzKCRmaWVsZHMsICd0eHBfaW1hZ2Un LCAkY2xhdXNlIC4nIExJTUlUIDAsJy4kbWF4bGltaXQsICRkZWJ1Zyk7DQoJCSRudW10aHVt ID0gY291bnQoJHJzKTsNCgkJJG51bVBhZ2VzID0gKCRudW10aHVtID4gMCkgPyBjZWlsKCRu dW10aHVtLyRsaW1pdCkgOiAxOw0KCQkkdGh1bWJwYWdlID0gKCFncHMoJGdhbGxJRCkpID8g MSA6IGdwcygkZ2FsbElEKTsNCgkJJG9mZnNldCA9ICgkdGh1bWJwYWdlIC0gMSkgKiAkbGlt aXQ7DQoJfSBlbHNlIHsNCgkJLy8gTm8gcGFnaW5nIHJlcXVpcmVkDQoJCSRudW1QYWdlcyA9 IDE7DQoJCSR0aHVtYnBhZ2UgPSAxOw0KCQkkcnMgPSBzYWZlX3Jvd3MoJGZpZWxkcywgJ3R4 cF9pbWFnZScsICRjbGF1c2UgLicgTElNSVQgMCwnLiAoKCRsaW1pdD09MCkgPyAkbWF4bGlt aXQgOiAkbGltaXQpLCAkZGVidWcpOw0KCX0NCg0KCS8vIElzIHBvc3Qtb3JkZXJpbmcgcmVx dWlyZWQ/IERvIGl0DQoJaWYgKCRyYW5kc29ydCkgew0KCQlzaHVmZmxlKCRycyk7DQoJfSBl bHNlIGlmIChjb3VudCgkcG9zdE9yZGVyKSA+IDApIHsNCgkJLy8gVHJhbnNsYXRlIHRoZSBy b3dzIGludG8gY29sdW1ucyB0aGF0IGNhbiBiZSBzb3J0ZWQNCgkJZm9yZWFjaCgkcnMgYXMg JGtleSA9PiAkcm93KSB7DQoJCQkkY29sX2lkWyRrZXldID0gJHJvd1snaWQnXTsNCgkJCSRj b2xfbmFtZVska2V5XSA9ICRyb3dbJ25hbWUnXTsNCgkJCSRjb2xfY2FwdGlvblska2V5XSA9 ICRyb3dbJ2NhcHRpb24nXTsNCgkJCSRjb2xfYWx0WyRrZXldID0gJHJvd1snYWx0J107DQoJ CQkkY29sX2NhdGVnb3J5WyRrZXldID0gJHJvd1snY2F0ZWdvcnknXTsNCgkJCSRjb2xfZGF0 ZVska2V5XSA9ICRyb3dbJ2RhdGUnXTsNCgkJCSRjb2xfZXh0WyRrZXldID0gJHJvd1snZXh0 J107DQoJCQkkY29sX2F1dGhvclska2V5XSA9ICRyb3dbJ2F1dGhvciddOw0KCQkJJGNvbF93 WyRrZXldID0gJHJvd1sndyddOw0KCQkJJGNvbF9oWyRrZXldID0gJHJvd1snaCddOw0KCQl9 DQoJCS8vIE1ha2UgdXAgYW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVjdXRl IGl0DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkcG9zdE9yZGVyKTsgJGlkeCsr KSB7DQoJCQkkc29ydGFyZ3NbXSA9ICckY29sXycuJHBvc3RPcmRlclskaWR4XVsnY29sJ107 DQoJCQkkc29ydGFyZ3NbXSA9ICRwb3N0T3JkZXJbJGlkeF1bJ3NvcnQnXTsNCgkJfQ0KCQkk c29ydGl0ID0gJ2FycmF5X211bHRpc29ydCgnLmltcGxvZGUoIiwgIiwkc29ydGFyZ3MpLics ICRycyk7JzsNCgkJZXZhbCgkc29ydGl0KTsNCgl9DQoNCgkvLyBJcyBmaXhlZC1vcmRlciBv dXRwdXQgZGVzaXJlZD8gSWYgc28sIHJlLW9yZGVyIHRoZSAkcnMNCglpZiAoJGZpeGVkT3Jk ZXIpIHsNCgkJJG9yZGVyZWRSUyA9IEFycmF5KCk7DQoJCSRpZ25vcmVMaXN0ID0gQXJyYXko KTsNCgkJJHJlbWFpbmluZ1JTID0gQXJyYXkoKTsNCgkJLy8gU3VjayBvdXQgdGhlIGZpeGVk IGl0ZW1zIGZpcnN0DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkZnVsbElETGlz dCk7ICRpZHgrKykgew0KCQkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJCWlmICgiJyIu JHJvd1snaWQnXS4iJyIgPT0gJGZ1bGxJRExpc3RbJGlkeF0pIHsNCgkJCQkJJG9yZGVyZWRS U1tdID0gJHJvdzsNCgkJCQkJJGlnbm9yZUxpc3RbXSA9ICRyb3dbJ2lkJ107DQoJCQkJfQ0K CQkJfQ0KCQl9DQoJCS8vIFRhY2sgb24gdGhlIHJlbWFpbmluZyByb3dzDQoJCWZvcmVhY2go JHJzIGFzICRyb3cpIHsNCgkJCWlmICghaW5fYXJyYXkoJHJvd1snaWQnXSwgJGlnbm9yZUxp c3QpKSB7DQoJCQkJJHJlbWFpbmluZ1JTW10gPSAkcm93Ow0KCQkJfQ0KCQl9DQoJCSRycyA9 IGFycmF5X21lcmdlKCRvcmRlcmVkUlMsICRyZW1haW5pbmdSUyk7DQoJfQ0KDQoJaWYgKCgk bGltaXQgPiAwKSAmJiAkc2hvd3BhZ2VsaW5rcykgew0KCQkkcnMgPSBhcnJheV9zbGljZSgk cnMsICRvZmZzZXQsICRsaW1pdCk7DQoJfQ0KDQoJLy8gSGFuZGxlIHRodW1ic2l6ZQ0KCSR0 aHVtYldpZHRoID0gJHRodW1iSGVpZ2h0ID0gJyc7DQoJJHRodW1iV1VuaXRzID0gJHRodW1i SFVuaXRzID0gJyc7DQoJaWYgKCR0aHVtYnNpemUpIHsNCgkJJHRodW1iU2l6ZXMgPSBkb19s aXN0KCR0aHVtYnNpemUsICRkZWxpbSk7DQoJCWlmIChjb3VudCgkdGh1bWJTaXplcykgPT0g MSkgew0KCQkJJHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQgPSBlcmVnX3JlcGxhY2UoIlte MC05XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdW5pdHMgPSBlcmVnX3JlcGxhY2Uo IlswLTldIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICR0aHVt YkhVbml0cyA9ICgkdW5pdHMgPT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVuaXRzOw0KCQl9 IGVsc2Ugew0KCQkJJHRodW1iV2lkdGggPSBlcmVnX3JlcGxhY2UoIlteMC05XSIsICcnLCAk dGh1bWJTaXplc1swXSk7DQoJCQkkdGh1bWJIZWlnaHQgPSBlcmVnX3JlcGxhY2UoIlteMC05 XSIsICcnLCAkdGh1bWJTaXplc1sxXSk7DQoJCQkkdW5pdHMgPSBlcmVnX3JlcGxhY2UoIlsw LTldIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICgkdW5pdHMg PT0gJycgJiYgJHRodW1iV2lkdGggIT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVuaXRzOw0K CQkJJHVuaXRzID0gZXJlZ19yZXBsYWNlKCJbMC05XSIsICcnLCAkdGh1bWJTaXplc1sxXSk7 DQoJCQkkdGh1bWJIVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICR0aHVtYkhlaWdodCAhPSAn JykgPyAkdGh1bWJIVW5pdHMgOiAkdW5pdHM7DQoJCX0NCgl9DQoNCgkvLyBTZXQgdXAgdGhl IHRodW1idGV4dCBwb3NpdGlvbnMNCgkkcG9zQXJyYXkgPSBhcnJheSgpOw0KCSRzaG93b3B0 cyA9IGRvX2xpc3QoJHRodW1idGV4dCwgJGRlbGltKTsNCglmb3JlYWNoICgkc2hvd29wdHMg YXMgJGl0ZW0pIHsNCgkJJHNob3dwb3MgPSBkb19saXN0KCRpdGVtLCAkcGFyYW1kZWxpbSk7 DQoJCWlmIChjb3VudCgkc2hvd3BvcykgPiAxICYmIGluX2FycmF5KCRzaG93cG9zWzBdLCRz aG93TG9jcykpIHsNCgkJCSRwb3NBcnJheVskc2hvd3Bvc1swXV0gPSAkc2hvd3Bvc1sxXTsN CgkJfSBlbHNlIHsNCgkJCSRwb3NBcnJheVskc2hvd0xvY3NbMF1dID0gKChjb3VudCgkc2hv d3Bvcyk+MSkgPyAkc2hvd3Bvc1sxXSA6ICRzaG93cG9zWzBdKTsNCgkJfQ0KCX0NCg0KCS8v IENvbnN0cnVjdCB0aGUgb3V0cHV0DQoJJGZpZWxkUkUgPSAnL1w/KCcuaW1wbG9kZSgnfCcs ICRmaWVsZE1hcCkuJ3x1cmwpLyc7DQoJJHRodW1idGV4dFBsYXRlID0gKCgkdGh1bWJ0ZXh0 d3JhcCkgPyAnPCcgLiAkdGh1bWJ0ZXh0d3JhcCAuICgoJHRodW1idGV4dGNsYXNzICE9ICIi KSA/ICcgY2xhc3M9IicgLiR0aHVtYnRleHRjbGFzcy4gJyInIDogJycpIC4gJz4nIDogJycp IC4kdGh1bWJob2xkZXIuICgoJHRodW1idGV4dHdyYXApID8gJzwvJyAuICR0aHVtYnRleHR3 cmFwLiAnPicgOiAnJyk7DQoJJG91dFN0ciA9ICcnOw0KDQoJaWYgKCRkZWJ1Zykgew0KCQlk bXAoJHJzKTsNCgl9DQoNCglpZigkcnMpIHsNCgkJJHRodW1idGV4dEN1cnI9IiI7DQoJCWZv cmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCSR0aGVUaHVtYiA9IGh1LiRpbWdfZGlyLicvJyAu ICRyb3dbJ2lkJ10gLiAkdGh1bWJtb2QgLiAkcm93WydleHQnXTsNCgkJCSRmdWxsID0gaHUu JGltZ19kaXIuJy8nIC4gJHJvd1snaWQnXSAuICRmdWxsbW9kIC4kcm93WydleHQnXTsNCgkJ CWlmICgkZ3JvdXBuYW1lID09PSAiP2MiKSB7DQoJCQkJJGdycCA9ICRyb3dbJ2NhdGVnb3J5 J107DQoJCQl9IGVsc2UgaWYgKCRncm91cG5hbWUgPT09ICI/aWQiKSB7DQoJCQkJJGdycCA9 ICRyb3dbJ2lkJ107DQoJCQl9IGVsc2UgaWYgKCRncm91cG5hbWUgPT09ICI/YXV0aG9yIikg ew0KCQkJCSRncnAgPSAkcm93WydhdXRob3InXTsNCgkJCX0gZWxzZSBpZiAoJGdyb3VwbmFt ZSA9PT0gIj9kYXRlIikgew0KCQkJCSRncnAgPSAkcm93WydkYXRlJ107DQoJCQl9IGVsc2Ug aWYgKCRncm91cG5hbWUgPT09ICI/YWx0Iikgew0KCQkJCSRncnAgPSAkcm93WydhbHQnXTsN CgkJCX0gZWxzZSBpZiAoJGdyb3VwbmFtZSA9PT0gIj9jYXB0aW9uIikgew0KCQkJCSRncnAg PSAkcm93WydjYXB0aW9uJ107DQoJCQl9IGVsc2UgaWYgKCRncm91cG5hbWUgPT09ICI/ZXh0 Iikgew0KCQkJCSRncnAgPSAkcm93WydleHQnXTsNCgkJCX0gZWxzZSBpZiAoJGdyb3VwbmFt ZSA9PT0gIj9uYW1lIikgew0KCQkJCSRncnAgPSAkcm93WyduYW1lJ107DQoJCQl9IGVsc2Ug aWYgKCRncm91cG5hbWUgPT09ICI/d2lkdGgiKSB7DQoJCQkJJGdycCA9ICRyb3dbJ3cnXTsN CgkJCX0gZWxzZSBpZiAoJGdyb3VwbmFtZSA9PT0gIj9oZWlnaHQiKSB7DQoJCQkJJGdycCA9 ICRyb3dbJ2gnXTsNCgkJCX0gZWxzZSBpZiAoc3Vic3RyKCRncm91cG5hbWUsMCwxKSA9PT0g Ij8iKSB7DQoJCQkJLy8gU3BsaXQgb2ZmIHRoZSBmaWVsZCBuYW1lIGZyb20gdGhlIHF1ZXN0 aW9uIG1hcmsNCgkJCQkkZmllbGRuYW1lID0gc3Vic3RyKCRncm91cG5hbWUsMSk7DQoJCQkJ aWYgKGlzc2V0KCR0aGlzYXJ0aWNsZVskZmllbGRuYW1lXSkpIHsNCgkJCQkJJGdycCA9ICR0 aGlzYXJ0aWNsZVskZmllbGRuYW1lXTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkZ3JwID0gJyc7 DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQkkZ3JwID0gJGdyb3VwbmFtZTsNCgkJCX0NCg0K CQkJLy8gSGFuZGxlIGltYWdlY2FwdGlvbg0KCQkJJGNhcHRpb25Nc2cgPSAkaW1hZ2VjYXB0 aW9uOw0KCQkJJG1hdGNoZXMgPSBhcnJheSgpOw0KCQkJJGN0ciA9IHByZWdfbWF0Y2hfYWxs KCRmaWVsZFJFLCAkY2FwdGlvbk1zZywgJG1hdGNoZXMsIFBSRUdfU0VUX09SREVSKTsNCgkJ CWZvciAoJGlkeCA9IDA7ICRpZHggPCAkY3RyOyAkaWR4KyspIHsNCgkJCQkkZmllbGRuYW1l ID0gJG1hdGNoZXNbJGlkeF1bMV07DQoJCQkJJGtleSA9IGFycmF5X3NlYXJjaCgkZmllbGRu YW1lLCAkZmllbGRNYXApOw0KCQkJCWlmICgka2V5KSB7DQoJCQkJCSRyZXAgPSAkcm93WyRr ZXldOw0KCQkJCX0gZWxzZSBpZiAoJGZpZWxkbmFtZSA9PSAidXJsIikgew0KCQkJCQkkcmVw ID0gJGZ1bGw7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJHJlcCA9ICRmaWVsZG5hbWU7DQoJCQkJ fQ0KCQkJCSRjYXB0aW9uTXNnID0gc3RyX3JlcGxhY2UoJG1hdGNoZXNbJGlkeF1bMF0sICRy ZXAsICRjYXB0aW9uTXNnKTsNCgkJCX0NCg0KCQkJLy8gSGFuZGxlIHRodW1idGV4dA0KCQkJ JHRodW1idGV4dEFycmF5ID0gYXJyYXlfY29tYmluZSgkc2hvd0xvY3MsIGFycmF5KCIiLCIi LCIiLCIiLCIiKSk7IC8vIEluaXRpYWxpc2UgZXZlcnkgZWxlbWVudA0KCQkJZm9yZWFjaCAo JHBvc0FycmF5IGFzICRwb3MgPT4gJHRleHQpIHsNCgkJCQkkbWF0Y2hlcyA9IGFycmF5KCk7 DQoJCQkJJGN0ciA9IHByZWdfbWF0Y2hfYWxsKCRmaWVsZFJFLCAkdGV4dCwgJG1hdGNoZXMs IFBSRUdfU0VUX09SREVSKTsNCgkJCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgJGN0cjsgJGlk eCsrKSB7DQoJCQkJCSRmaWVsZG5hbWUgPSAkbWF0Y2hlc1skaWR4XVsxXTsNCgkJCQkJJGtl eSA9IGFycmF5X3NlYXJjaCgkZmllbGRuYW1lLCAkZmllbGRNYXApOw0KCQkJCQlpZiAoJGtl eSkgew0KCQkJCQkJJHJlcCA9ICRyb3dbJGtleV07DQoJCQkJCX0gZWxzZSBpZiAoJGZpZWxk bmFtZSA9PSAidXJsIikgew0KCQkJCQkJJHJlcCA9ICRmdWxsOw0KCQkJCQl9IGVsc2Ugew0K CQkJCQkJJHJlcCA9ICRmaWVsZG5hbWU7DQoJCQkJCX0NCgkJCQkJJHRleHQgPSBzdHJfcmVw bGFjZSgkbWF0Y2hlc1skaWR4XVswXSwgJHJlcCwgJHRleHQpOw0KCQkJCX0NCgkJCQkkdGh1 bWJ0ZXh0QXJyYXlbJHBvc10gPSAkdGV4dDsNCgkJCX0NCg0KCQkJLy8gQ29uc3RydWN0IHRo ZSBsaW5rIGFuZCBwdXQgdGh1bWJ0ZXh0IGluIHRoZSBhcHByb3ByaWF0ZSBwb3NpdGlvbnMN CgkJCSRvdXRTdHIgLj0gKCR0aHVtYnRleHRBcnJheVsib25jaGFuZ2UiXSAmJiAkdGh1bWJ0 ZXh0QXJyYXlbIm9uY2hhbmdlIl0gIT0gJHRodW1idGV4dEN1cnIpID8gc3RyX3JlcGxhY2Uo JHRodW1iaG9sZGVyLCBodG1sc3BlY2lhbGNoYXJzX2RlY29kZSgkdGh1bWJ0ZXh0QXJyYXlb Im9uY2hhbmdlIl0pLCAkdGh1bWJ0ZXh0UGxhdGUpIDogJyc7DQoJCQkkb3V0U3RyIC49ICgk d3JhcHRhZyAhPSAiIikgPyAnPCcgLiR3cmFwdGFnLiAoKCRjZWxsY2xhc3MgIT0gIiIpID8g JyBjbGFzcz0iJyAuJGNlbGxjbGFzcy4gJyInIDogJycpIC4gJz4nIDogJyc7DQoJCQkkb3V0 U3RyIC49ICgkdGh1bWJ0ZXh0QXJyYXlbImFib3ZlIl0pID8gc3RyX3JlcGxhY2UoJHRodW1i aG9sZGVyLCBodG1sc3BlY2lhbGNoYXJzX2RlY29kZSgkdGh1bWJ0ZXh0QXJyYXlbImFib3Zl Il0pLCAkdGh1bWJ0ZXh0UGxhdGUpIDogJyc7DQoJCQkkb3V0U3RyIC49ICc8YSBocmVmPSIn LiRmdWxsLiciJy4oKCR0cmlnZ2VyIHx8ICRncnApID8gJyByZWw9IicgLiR0cmlnZ2VyLiRn cnAuICciJyA6ICcnKS4nIHRpdGxlPSInIC4kY2FwdGlvbk1zZy4gJyInIC4oKCRsaW5rY2xh c3MgIT0gIiIpID8gJyBjbGFzcz0iJyAuJGxpbmtjbGFzcy4gJyInIDogJycpLiAnPicgLigo JHRodW1idGV4dEFycmF5WyJiZWZvcmUiXSkgPyBzdHJfcmVwbGFjZSgkdGh1bWJob2xkZXIs IGh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlKCR0aHVtYnRleHRBcnJheVsiYmVmb3JlIl0pLCAk dGh1bWJ0ZXh0UGxhdGUpIDogJycpLiAnPGltZyBzcmM9IicgLiR0aGVUaHVtYi4gJyIgYWx0 PSInIC4kcm93WydhbHQnXS4gJyInIC4gKCgkaW1nY2xhc3MgIT0gIiIpID8gJyBjbGFzcz0i JyAuJGltZ2NsYXNzLiAnIicgOiAnJykgLiAoKCR0aHVtYldpZHRoKSA/ICcgd2lkdGg9Iicg LiAkdGh1bWJXaWR0aC4kdGh1bWJXVW5pdHMuICciJyA6ICcnKSAuICgoJHRodW1iSGVpZ2h0 KSA/ICcgaGVpZ2h0PSInIC4gJHRodW1iSGVpZ2h0LiR0aHVtYkhVbml0cy4gJyInIDogJycp IC4gJyAvPicgLigoJHRodW1idGV4dEFycmF5WyJhZnRlciJdKSA/IHN0cl9yZXBsYWNlKCR0 aHVtYmhvbGRlciwgaHRtbHNwZWNpYWxjaGFyc19kZWNvZGUoJHRodW1idGV4dEFycmF5WyJh ZnRlciJdKSwgJHRodW1idGV4dFBsYXRlKSA6ICcnKS4gJzwvYT4nLm47DQoJCQkkb3V0U3Ry IC49ICgkdGh1bWJ0ZXh0QXJyYXlbImJlbG93Il0pID8gc3RyX3JlcGxhY2UoJHRodW1iaG9s ZGVyLCBodG1sc3BlY2lhbGNoYXJzX2RlY29kZSgkdGh1bWJ0ZXh0QXJyYXlbImJlbG93Il0p LCAkdGh1bWJ0ZXh0UGxhdGUpIDogJyc7DQoJCQkkb3V0U3RyIC49ICgkd3JhcHRhZyAhPSAi IikgPyAnPC8nIC4kd3JhcHRhZy4gJz4nIDogJyc7DQoJCQkkb3V0U3RyIC49IG47DQoJCQkk dGh1bWJ0ZXh0Q3VyciA9ICR0aHVtYnRleHRBcnJheVsib25jaGFuZ2UiXTsNCgkJfQ0KDQoJ CS8vIEFkZCB0aGUgcGFnaW5nIGZlYXR1cmVzIGlmIHJlcXVpcmVkDQoJCWlmICgoJGxpbWl0 ID4gMCkgJiYgJHNob3dwYWdlbGlua3MpIHsNCgkJCSRuZXh0ID0gKCRudW1QYWdlcyA+IDEg JiYgJHRodW1icGFnZSAhPSAkbnVtUGFnZXMpOw0KCQkJJHByZXYgPSAoJG51bVBhZ2VzID4g MSAmJiAkdGh1bWJwYWdlID4gMSk7DQoNCgkJCS8vIFJlcGxhY2UgYW55IHBhZ2luZyBpbmZv IGluIHRoZSBxdWVyeSBzdHJpbmcNCgkJCSRwcmV2UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJl dGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJHRodW1icGFnZS0xKTsNCgkJCSRuZXh0 UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwg JHRodW1icGFnZSsxKTsNCg0KCQkJJG91dFN0ciAuPSAoJG5hdndyYXB0YWcgIT0gIiIpID8g JzwnIC4kbmF2d3JhcHRhZy4gKCgkbmF2Y2xhc3MgIT0gIiIpID8gJyBjbGFzcz0iJyAuJG5h dmNsYXNzLiAnIicgOiAnJykgLiAnPicgOiAnJzsNCgkJCSRvdXRTdHIgLj0gKCRwcmV2KSA/ ICc8YScgLiAoKCRwcmV2Y2xhc3MgIT0gIiIpID8gJyBjbGFzcz0iJyAuJHByZXZjbGFzcy4g JyInIDogJycpIC4gJyBocmVmPSInIC4kcHJldlBhZ2UuICciPicgLiRwcmV2bGFiZWwuICc8 L2E+Jy5uIDogJyc7DQoJCQkkb3V0U3RyIC49ICgkbmV4dCkgPyAnPGEnIC4gKCgkbmV4dGNs YXNzICE9ICIiKSA/ICcgY2xhc3M9IicgLiRuZXh0Y2xhc3MuICciJyA6ICcnKSAuICcgaHJl Zj0iJyAuJG5leHRQYWdlLiAnIj4nIC4kbmV4dGxhYmVsLiAnPC9hPicubiA6ICcnOw0KCQkJ JG91dFN0ciAuPSAoJG5hdndyYXB0YWcgIT0gIiIpID8gJzwvJyAuJG5hdndyYXB0YWcuICc+ JyA6ICcnOw0KCQkJJG91dFN0ciAuPSBuOw0KCQl9DQoJfQ0KDQoJcmV0dXJuICRvdXRTdHI7 DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjQ6ImhlbHAi O3M6Mzg1NzY6Igk8cD48ZGl2IGlkPSJzbWRfaGVscCI+PC9wPgoKCTxoMSBpZD0idG9wIj5z bWRfc2xpbWJveDwvaDE+CgoJPGgyIGlkPSJjb250ZW50cyI+Q29udGVudHM8L2gyPgoKCTx1 bD4KCQk8bGk+PGEgaHJlZj0iI2ZlYXR1cmVzIj5GZWF0dXJlczwvYT48L2xpPgoJCTxsaT48 YSBocmVmPSIjYXV0aG9yIj5BdXRob3I8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2luc3Rh bGwiPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9hPjwvbGk+CgkJPGxpPjxhIGhy ZWY9IiN1c2FnZSI+VGFnIHVzYWdlPC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjY2hhbmdl cyI+Q2hhbmdlcyBmcm9tIHByZXZpb3VzIHZlcnNpb248L2E+PC9saT4KCQk8bGk+PGEgaHJl Zj0iI2F0dHMiPkF0dHJpYnV0ZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2ZpZWxkcyI+ QXJ0aWNsZSBmaWVsZCBjb2RlczwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjaW1hZ2VfZmll bGRzIj5JbWFnZSBmaWVsZCBjb2RlczwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBo cmVmPSIjZXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNzdHls ZSI+U3R5bGluZzwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjY2hhbmdlbG9nIj5DaGFuZ2Vs b2c8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NyZWRpdHMiPkNyZWRpdHM8L2E+PC9saT4K CTwvdWw+CgoJPGgyIGlkPSJmZWF0dXJlcyI+RmVhdHVyZXM8L2gyPgoKCTx1bD4KCQk8bGk+ R2VuZXJhdGVzIGEgbGlzdCBvZiB0aHVtYm5haWxzIHRoYXQgY2FuIGJlIHN0eWxlZCBhbnkg d2F5IHlvdSBsaWtlPC9saT4KCQk8bGk+RmxleGlibGUgd2F5IG9mIGV4dHJhY3RpbmcgaW1h Z2VzIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGRhdGFiYXNlOyBh cmJpdHJhcnkgaW5jbHVzaW9uL2V4Y2x1c2lvbiBvZiBjYXRlZ29yaWVzIG9yIGltYWdlIElE czwvbGk+CgkJPGxpPkxpc3RzIG9mIGNhdGVnb3JpZXMgYW5kIElEcyBjYW4gYmUgcHVsbGVk IGZyb20gYW55IGZpZWxkIGluIHRoZSBjdXJyZW50IGFydGljbGUsIGluY2x1ZGluZyBjdXN0 b20gZmllbGRzPC9saT4KCQk8bGk+U3VwcG9ydHMgZ2x6X2N1c3RvbV9maWVsZHMgZm9yIGV2 ZW4gZ3JlYXRlciBmbGV4aWJpbGl0eSAoY3VycmVudGx5IHJlcXVpcmVzIGEgc21hbGwgbW9k IHRvIHB1Ymxpc2gucGhwKTwvbGk+CgkJPGxpPlN1YmNhdGVnb3JpZXM6IHNwZWNpZnkgYSBw YXJlbnQgYW5kIGFsbCBjaGlsZCBjYXRlZ29yaWVzIGFyZSBhdXRvbWF0aWNhbGx5IGluY2x1 ZGVkPC9saT4KCQk8bGk+U2hvdyBhc3NvY2lhdGVkIGltYWdlIHRleHQgaW4gdmFyaW91cyBs b2NhdGlvbnMgYXJvdW5kIHRoZSB0aHVtYm5haWxzPC9saT4KCQk8bGk+UGFnaW5nIGFuZCBt dWx0aXBsZSBnYWxsZXJpZXMgcGVyIHBhZ2U8L2xpPgoJCTxsaT5TdXBwb3J0cyBTbGltYm94 LCBMaWdodGJveCwgTGl0ZWJveCwgTW9vbmJveCwgVGhpY2tib3ggYW5kIHBlcmhhcHMgc29t ZSBtb3JlIGJlc2lkZXMuIEZvciBhIHdpZGVyIHJhbmdlLCBzZWUgPGEgaHJlZj0iaHR0cDov L3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzk1Ny9zbWRfZ2FsbGVyeSI+c21kX2dhbGxlcnk8 L2E+PC9saT4KCTwvdWw+CgoJPGgyIGlkPSJhdXRob3IiPkF1dGhvcjwvaDI+CgoJPHA+PGEg aHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbW1lbnRGb3JtIj5TdGVmIERhd3Nvbjwv YT4uIEZvciBvdGhlciBzb2Z0d2FyZSBieSBtZSwgb3IgdG8gbWFrZSBhIGRvbmF0aW9uLCBz ZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFn ZTwvYT4uPC9wPgoKCTxwPk9yaWdpbmFsbHkgYmFzZWQgb24gPGEgaHJlZj0iaHR0cDovL3d3 dy5kaWdpdGFsaWEuYmUvc29mdHdhcmUvc2xpbWJveCI+c2xpbWJveCwgYSBsaWdodHdlaWdo dCBMaWdodGJveCBjbG9uZTwvYT4gYnkgQ2hyaXN0b3BoZSBCZXlscy4gRm9yIG1vcmUgaW5m byBvciB0cm91Ymxlc2hvb3Rpbmcgb24gdGhlIGxpZ2h0Ym94IHNpZGUgb2YgdGhpbmdzIChh cyBvcHBvc2VkIHRvIHRoZSB0aHVtYm5haWwgZ2VuZXJhdGlvbiBzaWRlIG9mIHRoaW5ncykg PGEgaHJlZj0iaHR0cDovL3d3dy5mcmVld2Vic2Zhcm1zLmNvbS9mb3J1bXMvdmlld3RvcGlj LnBocD9waWQ9MzMxNiNwMzMxNiI+c2VlIENocmlzdG9waGUmIzgyMTc7cyBmb3J1bTwvYT4u PC9wPgoKCTxoMiBpZD0iaW5zdGFsbCI+SW5zdGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRpb248 L2gyPgoKCTxwIGNsYXNzPSJyZXF1aXJlZCI+UmVxdWlyZXMgPGEgaHJlZj0iaHR0cDovL3N0 ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfbGliX3YwLjMyLnR4dCI+c21kX2xpYiB2MC4z MjwvYT4gdG8gYmUgaW5zdGFsbGVkIGFuZCBhY3RpdmF0ZWQuPC9wPgoKCTxwPkRvd25sb2Fk IHRoZSBwbHVnaW4gZnJvbSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9y Zy9wbHVnaW5zLzc0MS9zbWRfc2xpbWJveCI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhl IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4s IHBhc3RlIHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+ IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVn aW4uPC9wPgoKCTxwPllvdSB3aWxsIGFsc28gbmVlZCBhIGphdmFzY3JpcHQgbGlicmFyeSB0 byBwZXJmb3JtIHRoZSBsaWdodGJveCBlZmZlY3QsIHdoaWNoIHlvdSBtdXN0IGxvYWQgb24g eW91ciBwYWdlIGFzIHBlciB0aGUgaW5zdHJ1Y3Rpb25zIGZvciB0aGF0IGxpYnJhcnkuIEFs dGhvdWdoIHRoZSBleGFtcGxlcyBpbiB0aGlzIHBhZ2UgYXJlIGZvciBTbGltYm94LCB0aGUg cGx1Z2luIHdpbGwgd29yayB3aXRoIGEgbnVtYmVyIG9mIGZyZWVseS1hdmFpbGFibGUgamF2 YXNjcmlwdCBsaWJyYXJpZXMgJiM4MjEyOyBvZnRlbiB3aXRob3V0IG1vZGlmaWNhdGlvbi4g U29tZSBsaWJyYXJpZXMgKGUuZy4gVGhpY2tib3gpIHNpbXBseSByZXF1aXJlIGFuIGFkZGl0 aW9uYWwgY2xhc3MgdG8gYmUgc2V0IG9uIHRoZSBpbWFnZSB0YWdzLjwvcD4KCgk8cD5WaXNp dCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMu cGhwP2lkPTIwNzE0Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVw b3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8 cD5UbyByZW1vdmUgdGhlIHBsdWdpbiwgc2ltcGx5IGRlbGV0ZSBpdCBmcm9tIHRoZSBBZG1p bi0mZ3Q7UGx1Z2lucyB0YWIgYW5kIHJlbW92ZSB5b3VyIHRoaXJkIHBhcnR5IGxpYnJhcmll cy48L3A+CgoJPGgyIGlkPSJ1c2FnZSI+VXNhZ2U8L2gyPgoKCTxwPlRoZSBwbHVnaW4gb3B0 aW9ucyBnb3Zlcm4gd2hpY2ggdGh1bWJuYWlscyB0byB1c2UgYW5kIGhvdyB0aGV5IGFyZSBk aXNwbGF5ZWQuIE9uY2UgYSB0aHVtYiBpcyBjbGlja2VkLCBjb250cm9sIGlzIGhhbmRlZCBv dmVyIHRvIG1vb3Rvb2xzL2pRdWVyeS9wcm90b3R5cGUgdG8gZG8gdGhlIGZhbmN5IHdvcmsu IFRoZXJlZm9yZSwgaWYgeW91IHdpc2ggdG8gY29uZmlndXJlIHRoZSBsb29rIG9mIHRoZSAm IzgyMjA7bGlnaHRib3gmIzgyMjE7IHBhcnQsIHlvdSBuZWVkIHRvIGVkaXQgaXRzIGphdmFz Y3JpcHQgYW5kL29yIGFzc29jaWF0ZWQgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4u PC9wPgoKCTxwPkJlZm9yZSB5b3UgY2FuIHVzZSBzbWRfc2xpbWJveCB5b3UgaGF2ZSB0byBl bnN1cmUgdGhhdCB0aGUgcGFnZSBjYW4gcmVhZCB0aGUgZXh0ZXJuYWwgbGlicmFyeSBmaWxl cy4gWW91IGRvIHRoaXMgYnkgcHV0dGluZyA8Y29kZT4mbHQ7c2NyaXB0Jmd0OzwvY29kZT4g YW5kIDxjb2RlPiZsdDtsaW5rJmd0OzwvY29kZT4gdGFncyBhcyB1c3VhbCBpbiB5b3VyIHBh Z2UgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPi48L3A+CgoJPGgzIGlkPSJjaGFuZ2VzIj5D aGFuZ2VzIGZyb20gcHJldmlvdXMgdmVyc2lvbjwvaDM+CgoJPHA+RXhwZXJpZW5jZWQgdXNl cnMgb2Ygc21kX3NsaW1ib3gsIHBsZWFzZSBub3RlIHRoZXNlIGltcG9ydGFudCBjaGFuZ2Vz IHRvIHRoZSBwbHVnaW46PC9wPgoKCTx1bD4KCQk8bGk+QWZ0ZXIgb3ZlcndoZWxtaW5nIHN1 cHBvcnQgZnJvbSB0aGUgcG9sbCwgPGNvZGU+c21kX3NsaW1ib3hfaW5jPC9jb2RlPiBpcyBu b3cgcmVtb3ZlZC4gSWYgeW91IHVzZSBpdCwgYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkPC9s aT4KCQk8bGk+QWNjb3JkaW5nbHksIDxjb2RlPmxpYmNoZWNrPC9jb2RlPiBoYXMgYmVlbiBy ZW1vdmVkPC9saT4KCQk8bGk+PGNvZGU+Y2F0bGFiZWw8L2NvZGU+IGhhcyBiZWVuIHJlbW92 ZWQuIFdpdGggbW9yZSA8Y29kZT4/PC9jb2RlPiBhbmQgPGNvZGU+ITwvY29kZT4gPGEgaHJl Zj0iI2ZpZWxkcyI+YXJ0aWNsZSBmaWVsZCBjb2RlczwvYT4gbm93IGF2YWlsYWJsZSwgYW5k IHRoZSBhYmlsaXR5IHRvIGNvbWJpbmUgdGhlbSAoZS5nLiA/cy0/YykgeW91IGNhbiBub3cg cGVyZm9ybSB0aGUgc2FtZSBmdW5jdGlvbiBhcyA8Y29kZT5jYXRsYWJlbDwvY29kZT4gYnkg dXNpbmcgPGNvZGU+Y2F0ZWdvcnk9JnF1b3Q7YXJ0aWNsZS0/aWQmcXVvdDs8L2NvZGU+PC9s aT4KCQk8bGk+PGNvZGU+c3ViY2F0czwvY29kZT4gaW1wcm92ZWQuIE5vdyB0YWtlcyBhbiBp bnRlZ2VyICYjODIyMDtsZXZlbCYjODIyMTsgdGhhdCBzcGVjaWZpZXMgaG93IGZhciBkb3du IHRoZSB0cmVlIHRvIGdvLiBGb3IgdGhlIHNhbWUgYmVoYXZpb3VyIGFzIGJlZm9yZSwgdXNl IDxjb2RlPnN1YmNhdHM9JnF1b3Q7YWxsJnF1b3Q7PC9jb2RlPjwvbGk+CgkJPGxpPnNob3dh bHQvc2hvd2NhcHRpb24vYWx0Y2xhc3MvY2FwdGlvbmNsYXNzL3RleHRwb3MgaGF2ZSBiZWVu IHJlbW92ZWQuIFVzZSA8Y29kZT50aHVtYnRleHQ8L2NvZGU+LCA8Y29kZT50aHVtYnRleHR3 cmFwPC9jb2RlPiBhbmQgPGNvZGU+dGh1bWJ0ZXh0Y2xhc3M8L2NvZGU+IGluc3RlYWQ8L2xp PgoJCTxsaT48Y29kZT5vcmRlcmJ5PC9jb2RlPiBpcyBub3cgY2FsbGVkIDxjb2RlPnNvcnQ8 L2NvZGU+IGluIGxpbmUgd2l0aCBvdGhlciA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiB0YWdzLCBhbmQgdGFrZXMgYSBzcGFjZS1kZWxpbWl0ZWQgZGlyZWN0aW9uIG1vZGlmaWVy IGluc3RlYWQgb2YgdGhlIG9sZCBjb2xvbiBkZWxpbWl0ZXIuIDxjb2RlPm9yZGVyYnk8L2Nv ZGU+IGlzIHN0aWxsIHN1cHBvcnRlZCBmb3Igbm93IGFuZCB3aWxsIGJlIGNvbnZlcnRlZCB0 byB0aGUgbmV3IDxjb2RlPnNvcnQ8L2NvZGU+IHRhZyBidXQgd2lsbCBpc3N1ZSBhIHdhcm5p bmcgaW4gcHJvZHVjdGlvbi9kZWJ1ZyBtb2RlczwvbGk+CgkJPGxpPjxjb2RlPnRodW1iPC9j b2RlPiBpcyBub3cgZW5oYW5jZWQgdG8gYWxsb3cgeW91IHRvIHNwZWNpZnkgd2hldGhlciB0 aGUgZnVsbC1zaXplIGltYWdlIGFuZC9vciB0aGUgdGh1bWJuYWlsIGFyZSBkaXNwbGF5ZWQg dXNpbmcgdGhlICYjODIxNjt0JiM4MjE3OyBpbWFnZSBvciBub3QuIFNvIHlvdSBjYW4gbm93 IHN3YXAgdGh1bWJuYWlsIGFuZCBmdWxsLXNpemUgaWYgeW91IHdpc2gsIG9yIG1ha2UgdGhl bSBzaG93IGlkZW50aWNhbCBpbWFnZXM8L2xpPgoJCTxsaT48Y29kZT50cmlnZ2VyPC9jb2Rl PiBhZGRlZC4gVGhpcyBkZWZhdWx0cyB0byAmIzgyMjA7bGlnaHRib3gtJiM4MjIxOyB3aGlj aCBpcyB3aGF0IHNsaW1ib3ggdXNlcyBpbiB0aGUgPGNvZGU+cmVsPC9jb2RlPiBhdHRyaWJ1 dGUgb2YgdGhlIGFuY2hvcnMuIE90aGVyIGxpYnJhcmllcyBtYXkgdXNlIG90aGVyIHdvcmRz IHRvIGlkZW50aWZ5IHRoZW1zZWx2ZXMsIHNvIHRoaXMgYWxsb3dzIHlvdSB0byBtb2RpZnkg dGhlIHN0cmluZyB0byBzdWl0PC9saT4KCQk8bGk+PGNvZGU+ZGVsaW08L2NvZGU+IGFkZGVk LiBJZiB5b3UgZG9uJiM4MjE3O3QgbGlrZSB1c2luZyBhIGNvbW1hIGFzIGEgZGVsaW1pdGVy LCBjaGFuZ2UgaXQuIFNldCA8Y29kZT5kZWxpbT0mcXVvdDt8JnF1b3Q7PC9jb2RlPiBpZiB1 c2luZyBjaGVja2JveGVzIGFuZCBtdWx0aS1zZWxlY3RzIHdpdGggZ2x6X2N1c3RvbV9maWVs ZHM8L2xpPgoJCTxsaT48Y29kZT5uYXZ3cmFwdGFnPC9jb2RlPiBhZGRlZCBzbyB0aGUgbmF2 aWdhdGlvbiBibG9jayBjYW4gYmUgd3JhcHBlZCBpbiBhIGRpZmZlcmVudCB0YWcgdG8gZWFj aCBpbWFnZTwvbGk+CgkJPGxpPjxjb2RlPmxpbmtjbGFzczwvY29kZT4gYWRkZWQgc28geW91 IGNhbiBzcGVjaWZ5IGEgc2VwYXJhdGUgY2xhc3MgZm9yIHRoZSBpbWFnZSBhbmNob3JzIGlm IHlvdSB3aXNoPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHMiPkF0 dHJpYnV0ZXM8L2gzPgoKCTxwPldpdGhvdXQgYW55IG9wdGlvbnMgdGhlIHBsdWdpbiBkaXNw bGF5cyBldmVyeSBpbWFnZSBpbiB5b3VyIGVudGlyZSBjb2xsZWN0aW9uIGFuZCB3b24mIzgy MTc7dCBsb29rIHZlcnkgcHJldHR5ICh0aG91Z2ggeW91IGNhbiBoZWxwIGEgYml0IGJ5IHN0 YXJ0aW5nIHdpdGggdGhlIDxhIGhyZWY9IiNzdHlsZSI+PHNwYW4gY2xhc3M9ImNhcHMiPkNT Uzwvc3Bhbj48L2E+KS4gVGhlIGZvbGxvd2luZyBvcHRpb25zIHRhbWUgdGhlIHBsdWdpbiBh IGxpdHRsZTo8L3A+CgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dC1uYW1lIj5jYXRlZ29yeTwvc3Bhbj4gOiBhIGxpc3Qgb2YgaW1hZ2UgY2F0ZWdvcmllcy4g QnkgZGVmYXVsdCB0aGUgbGlzdCBzaG91bGQgYmUgY29tbWEtc2VwYXJhdGVkIGJ1dCB0aGlz IGNhbiBiZSBjaGFuZ2VkIHdpdGggdGhlIDxjb2RlPmRlbGltPC9jb2RlPiBvcHRpb24uIFRo aXMgYXR0cmlidXRlIG1heSB0YWtlIGFueSBvZiB0aGUgc3BlY2lhbCA8YSBocmVmPSIjZmll bGRzIj5maWVsZCBjb2RlczwvYT4gYnkgZ2l2aW5nIGl0cyBuYW1lIGFmdGVyIGEgPGNvZGU+ PzwvY29kZT4gKHRvIGluY2x1ZGUgdGhhdCBmaWVsZCkgb3IgPGNvZGU+ITwvY29kZT4gKHRv IGV4Y2x1ZGUgdGhhdCBmaWVsZCk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUi PmltYWdlaWQ8L3NwYW4+IDogYSBsaXN0IG9mIGltYWdlIElEcy4gVGFrZXMgZXhhY3RseSB0 aGUgc2FtZSBzeW50YXggYXMgdGhlIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiBhdHRyaWJ1dGU8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnN1YmNhdHM8L3NwYW4+IDogaG93 IGZhciAmIzgyMTY7ZG93biYjODIxNzsgdG8gdHJhdmVyc2UgaW1hZ2Ugc3ViLWNhdGVnb3Jp ZXMuIFRha2VzIGFuIGludGVnZXIgdmFsdWUgb3IgJiM4MjE2O2FsbCYjODIxNzsuIDAgKHRo ZSBkZWZhdWx0KSBtZWFucyBubyBjaGlsZCBjYXRlZ29yaWVzOyAxIHVzZXMgdGhlIG1haW4g Y2F0ZWdvcmllcyBhbmQgdGhlIGZpcnN0IGxldmVsIG9mIGNoaWxkcmVuOyAyIHVzZXMgdGhl IG1haW4gY2F0ZWdvcmllcyBhbmQgdXAgdG8gdHdvIGNoaWxkIHN1Yi1jYXRlZ29yaWVzOyBh bmQgc28gb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmltYWdlY2FwdGlv bjwvc3Bhbj4gOiB0aGUgdGV4dCB0byBkaXNwbGF5IHVuZGVyIHRoZSBsYXJnZSBsaWdodGJv eCBpbWFnZS4gSXQgY2FuIGJlIGFueSBmaXhlZCBzdHJpbmcgKHJhdGhlciBwb2ludGxlc3Mh KSBvciBhIGNvbWJpbmF0aW9uIG9mIGZpeGVkIHRleHQgYW5kIDxhIGhyZWY9IiNpbWFnZV9m aWVsZHMiPmltYWdlIGZpZWxkIGNvZGVzPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHQtbmFtZSI+dGh1bWI8L3NwYW4+IDogaWYgeW91IHdpc2ggdGhlIGZ1bGxzaXplIGltYWdl cyBkaXNwbGF5ZWQgaW4gdGhlIGxpZ2h0Ym94IHRvIGJlIHRoZSB0aHVtYm5haWxzLCBvciBp ZiB5b3Ugd2FudCB0aGUgdGh1bWJuYWlsIGdhbGxlcnkgdG8gdXNlIHRoZSBmdWxsc2l6ZSBp bWFnZXMsIHNwZWNpZnkgaXQgd2l0aCB0aGlzIGF0dHJpYnV0ZS4gVXNlIDxjb2RlPnRodW1i PSZxdW90OzEmcXVvdDs8L2NvZGU+IHRvIHNwZWNpZnkgdGhhdCBib3RoIGZ1bGxzaXplIGlt YWdlIGFuZCB0aHVtYm5haWwgZGlzcGxheSB0aGUgJiM4MjE2O3QmIzgyMTc7ICh0aHVtYm5h aWwpIGltYWdlLiBDb252ZXJzZWx5LCB1c2UgPGNvZGU+dGh1bWI9JnF1b3Q7MCZxdW90Ozwv Y29kZT4gdG8gc3BlY2lmeSB0aGF0IGJvdGggZnVsbHNpemUgYW5kIHRodW1ibmFpbHMgdXNl IHRoZSBmdWxsIHNpemUgaW1hZ2VzLiBZb3UgY2FuIGFsc28gY2hvb3NlIG9uZSBvciB0aGUg b3RoZXIgYnkgZ2l2aW5nIHRoaXMgYXR0cmlidXRlIHR3byBudW1iZXJzIHNlcGFyYXRlZCBi eSBhIGNvbG9uLjxkaXYgY2xhc3M9ImJyZWFrIj5Gb3IgJiM4MjE2O25vcm1hbCYjODIxNzsg b3BlcmF0aW9uICYjODIxMjsgaS5lLiBmdWxsc2l6ZSBpbWFnZSBpcyBmdWxsIHNpemUsIHRo dW1ibmFpbCBpcyAgdGh1bWIgc2l6ZWQgJiM4MjEyOyBzcGVjaWZ5IDxjb2RlPnRodW1iPSZx dW90OzA6MSZxdW90OzwvY29kZT4uIFRvIHJldmVyc2UgdGhpcywgdXNlIDxjb2RlPnRodW1i PSZxdW90OzE6MCZxdW90OzwvY29kZT4uIE5vdGUgdGhhdCA8Y29kZT4xOjE8L2NvZGU+IGFu ZCA8Y29kZT4wOjA8L2NvZGU+IGFsc28gd29yayB0byBzZXQgYm90aCBpbWFnZXMgdG8gdGhl IHNhbWUgc2l6ZSBpZiB5b3UgcHJlZmVyIHRoYXQgc3ludGF4IG92ZXIgdXNpbmcgYSBzaW5n bGUgZGlnaXQ8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmxpbWl0 PC9zcGFuPiA6IHRoZSBudW1iZXIgb2YgaW1hZ2UgdGh1bWJuYWlscyB0byBzaG93IHBlciBw YWdlLiAwIChvciBvbWl0dGVkKSBtZWFucyBlc3NlbnRpYWxseSB1bmxpbWl0ZWQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm1heGxpbWl0PC9zcGFuPiA6IHRoZSBhYnNv bHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgdG8gcHVsbCBmcm9tIHRoZSBkYXRhYmFz ZS4gMCAob3Igb21pdHRlZCkgbWVhbnMgZXNzZW50aWFsbHkgdW5saW1pdGVkPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5zb3J0PC9zcGFuPiA6IGEgbGlzdCBvZiB3YXlz IHRvIG9yZGVyIHRoZSByZXN1bHRzOyBieSBkZWZhdWx0IGl0IGlzIGJ5IGNhdGVnb3J5LiBT cGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGJ5IGFkZGluZyA8Y29kZT5hc2M8L2NvZGU+IG9yIDxj b2RlPmRlc2M8L2NvZGU+IHRvIGFueSB2YWx1ZSwgZS5nLiA8Y29kZT5zb3J0PSZxdW90O2Nh dGVnb3J5LCBkYXRlIGRlc2MmcXVvdDs8L2NvZGU+IHdvdWxkIHNvcnQgYnkgY2F0ZWdvcnkg Zmlyc3QsIHRoZW4gZGVzY2VuZGluZyBkYXRlLiBUYWtlcyBhbnkgb2YgdGhlIDxhIGhyZWY9 IiNpbWFnZV9maWVsZHMiPmltYWdlIGZpZWxkIGNvZGVzPC9hPiBwbHVzIHR3byBzcGVjaWFs IGNvZGVzOjxkaXYgY2xhc3M9ImJyZWFrIj48Y29kZT5maXhlZDwvY29kZT4gZm9yY2VzIHRo dW1icyB0byBiZSBvdXRwdXQgaW4gdGhlIG9yZGVyIGdpdmVuIGluIDxjb2RlPmltYWdlaWQ8 L2NvZGU+LjwvZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj48Y29kZT5yYW5kb208L2NvZGU+IGFj dHMgc2xpZ2h0bHkgZGlmZmVyZW50bHkgZnJvbSB0aGUgb3RoZXJzOiBpZiBpdCBhcHBlYXJz IGFzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0LCByYW5kb20gaW1hZ2VzIHdpbGwgYmUg cHVsbGVkIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB0aGV5IHdpbGwgdGhlbiBiZSBzb3J0ZWQg YWNjb3JkaW5nIHRvIHRoZSBvcHRpb25zIGxpc3RlZCBhZnRlciBpdC4gSG93ZXZlciwgaWYg aXQgYXBwZWFycyBhbnl3aGVyZSBlbHNlIGluIHRoZSBsaXN0LCBhbnkgc29ydCBpdGVtcyBi ZWZvcmUgaXQgd2lsbCBkZXRlcm1pbmUgdGhlIG9yZGVyIG9mIGRhdGEgcHVsbGVkIGZyb20g dGhlIGRhdGFiYXNlLCBhbmQgdGhlIHJlc3VsdHMgd2lsbCA8ZW0+dGhlbjwvZW0+IGJlIG9y ZGVyZWQgcmFuZG9tbHkgKGluIHRoYXQgY2FzZSwgYW55IGl0ZW1zIGxpc3RlZCBhZnRlciA8 Y29kZT5yYW5kb208L2NvZGU+IHdpbGwgYmUgaWdub3JlZCwgdGhvdWdoIDxjb2RlPmZpeGVk PC9jb2RlPiBpcyBzdGlsbCBob25vdXJlZCkuIFNlZSA8YSBocmVmPSIjZWcyIj5leGFtcGxl IDI8L2E+IGZvciBtb3JlPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1l Ij50cmlnZ2VyPC9zcGFuPiA6IGluIG9yZGVyIHRvIGluZGljYXRlIHRvIHRoZSBqYXZhc2Ny aXB0IGxpYnJhcnkgdGhhdCBpbWFnZXMgYXJlIHRvIGJlICYjODIyMDtsaWdodGJveGVkJiM4 MjIxOyB0aGUgJiM4MjE2O3JlbCYjODIxNzsgYXR0cml1dGUgb2YgYW5jaG9yIGltYWdlcyBp cyBvZnRlbiB1c2VkICh0aGlja2JveCBpcyB0aGUgZXhjZXB0aW9uIGFuZCB1c2VzIGl0cyBv d24gY2xhc3MpLiBTaW5jZSB0aGUgbWV0aG9kIG9mIGluZGljYXRpbmcgaG93IHRvIGxpZ2h0 Ym94IGFuIGltYWdlIHZhcmllcywgdGhpcyBhdHRyaWJ1dGUgY2FuIGJlIHRhaWxvcmVkIHRv IG1hdGNoIHdoaWNoZXZlciBqYXZhc2NyaXB0IGxpYnJhcnkgeW91IGFyZSB1c2luZyAoc2Vl IHRoZWlyIGluc3RydWN0aW9ucykuIEJ5IGRlZmF1bHQsIGl0IGlzIHNldCB0byAmIzgyMjA7 bGlnaHRib3gtJiM4MjIxOyB3aGljaCBzaG91bGQgY292ZXIgbW9zdCBtYWpvciBsaWdodGJv eCBnYWxsZXJ5IGVmZmVjdHMuIElmIHlvdSB3aXNoIHRvIHJlbW92ZSB0aGUgPGNvZGU+cmVs PC9jb2RlPiwgZW1wdHkgYm90aCA8Y29kZT50cmlnZ2VyPC9jb2RlPiBhbmQgPGNvZGU+Z3Jv dXBuYW1lPC9jb2RlPiBhdHRyaWJ1dGVzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj5ncm91cG5hbWU8L3NwYW4+IDogd2hlbiBtYWtpbmcgbXVsdGlwbGUgZ2FsbGVyaWVz IG9yIGZvciBzcGVjaWFsIGJlaGF2aW91cnMsIHRoaXMgYXR0cmlidXRlIGFsbG93cyB5b3Ug dG8gbG9naWNhbGx5ICYjODIyMDtncm91cCYjODIyMTsgdGh1bWJuYWlscy48YnIgLz4KT25j ZSBhIHZpc2l0b3IgY2xpY2tzIGEgdGh1bWJuYWlsIGFuZCBjb250cm9sIGlzIHBhc3NlZCB0 byB0aGUgamF2YXNjcmlwdCBjb2RlLCBuYXZpZ2F0aW9uIGlzIHZpYSB0aGUgTmV4dC9QcmV2 IGxpbmtzLiBXaXRob3V0IHN1cHBseWluZyBhIDxjb2RlPmdyb3VwbmFtZTwvY29kZT4sIDxl bT5hbGw8L2VtPiBsaWdodGJveGFibGUgaW1hZ2VzIGZyb20gPGVtPmFsbDwvZW0+IHNtZF9z bGltYm94IHRhZ3Mgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgbmF2aWdhdGlvbi4gU28gaWYg eW91IGhhZCAzIHNsaW1ib3ggdGFncyBvbiB0aGUgcGFnZSwgZWFjaCB3aXRoIDIwIGltYWdl cyBpbiB0aGVtLCB0aGUgbGlnaHRib3ggd291bGQgc2hvdyAmIzgyMjA7SW1hZ2UgMSBvZiA2 MCYjODIyMTsgYW5kIGFsbG93IHlvdSB0byBuYXZpZ2F0ZSBhbW9uZyBhbGwgb2YgdGhlbS48 ZGl2IGNsYXNzPSJicmVhayI+T24gYXJ0aWNsZSBsaXN0IHBhZ2VzLCB0aGlzIGlzIG9mdGVu IHVuZGVzaXJhYmxlIHNvIHRvIGNoYW5nZSB0aGlzIGJlaGF2aW91ciwgZ2l2ZSBlYWNoIHNs aW1ib3ggdGFnIGEgdW5pcXVlIDxjb2RlPmdyb3VwbmFtZTwvY29kZT47IHRoYXQgd2lsbCBs aW1pdCB0aGUgbmF2aWdhdGlvbiBvbmx5IHRvIHRoZSBncm91cCBvZiBpbWFnZXMgaW4gdGhh dCB0YWcuIDxjb2RlPmdyb3VwbmFtZTwvY29kZT4gY2FuIGJlIGFueSB0ZXh0IHlvdSBsaWtl IChpdCBkZWZhdWx0cyB0byAmIzgyMjA7c21kJiM4MjIxOyksIG9yIHlvdSBjYW4gc3VwcGx5 IGFueSBvZiB0aGUgPGEgaHJlZj0iI2ltYWdlX2ZpZWxkcyI+aW1hZ2UgZmllbGQgY29kZXM8 L2E+IHRvIHNsaWNlIGFuZCBkaWNlIHRoZSB0aHVtYm5haWxzIGFueSB3YXkgeW91IGNob29z ZS4gU2VlIDxhIGhyZWY9IiNlZzQiPmV4YW1wbGUgNDwvYT4gZm9yIG1vcmU8L2Rpdj48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnNob3dwYWdlbGlua3M8L3NwYW4+IDog ZGlzcGxheXMgY2xpY2thYmxlIG5leHQvcHJldmlvdXMgbGlua3MgdW5kZXIgdGhlIHRodW1i bmFpbHMsIGFsbG93aW5nIHlvdSB0byBuYXZpZ2F0ZSBmcm9tIHBhZ2UgdG8gcGFnZSBhbmQg b25seSBzaG93IDxjb2RlPmxpbWl0PC9jb2RlPiB0aHVtYnMgcGVyIHBhZ2UuIEl0IGlzIG9u ICg8Y29kZT4xPC9jb2RlPikgYnkgZGVmYXVsdCBpZiBsaW1pdCBpcyBncmVhdGVyIHRoYW4g MC4gVXNlIDxjb2RlPnNob3dwYWdlbGlua3M9JnF1b3Q7MCZxdW90OzwvY29kZT4gdG8gdHVy biBpdCBvZmY8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmdhbGxlcnlpZDwv c3Bhbj4gOiBpZiB1c2luZyA8Y29kZT5zaG93cGFnZWxpbmtzPC9jb2RlPiwgdGhpcyBpcyB0 aGUgc3RyaW5nIHRoYXQgaXMgdXNlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gbXVsdGlw bGUgc2xpbWJveCBnYWxsZXJpZXMgb24gYSBzaW5nbGUgcGFnZS4gSXQgYWxsb3dzIHBhZ2lu ZyB0byBiZSBjb250cm9sbGVkIG9uIGEgcGVyLWdhbGxlcnkgYmFzaXMsIHNvIGNsaWNraW5n IE5leHQvUHJldiBpbiBvbmUgZ2FsbGVyeSB3b24mIzgyMTc7dCBhZmZlY3QgdGhlIHRodW1i bmFpbHMgaW4gb3RoZXIgZ2FsbGVyaWVzIG9uIHRoZSBzYW1lIHBhZ2UuIEVhY2ggZ2FsbGVy eSBvbiBhIHBhZ2UgPGVtPm11c3Q8L2VtPiBoYXZlIGEgdW5pcXVlIDxjb2RlPmdhbGxlcnlp ZDwvY29kZT4gaW4gb3JkZXIgZm9yIHBhZ2luZyB0byB3b3JrLiBUaGUgZ29vZCBuZXdzIGlz IHlvdSYjODIxNztsbCBwcm9iYWJseSBuZXZlciBoYXZlIHRvIHVzZSB0aGlzIGF0dHJpYnV0 ZSBiZWNhdXNlIGl0IHdvcmtzIGF1dG9tYXRpY2FsbHkgZm9yIHlvdS4gSW4gdGhlICh2ZXJ5 KSB1bmxpa2VseSBldmVudCBpdCBnZW5lcmF0ZXMgdHdvIGlkZW50aWNhbCBzdHJpbmdzLCB5 b3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlv dXIuPGRpdiBjbGFzcz0iYnJlYWsiPkl0IHRha2VzIGVpdGhlciBhIGZpeGVkIHN0cmluZyAo ZS5nLiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7bXlHYWxsZXJ5MSZxdW90OzwvY29kZT4pOyBv ciBhICYjODIxNjs/JiM4MjE3OyBmb2xsb3dlZCBieSB1cCB0byB0d28gbnVtYmVycyBzZXBh cmF0ZWQgYnkgYSBjb2xvbiAodGhlIGNvbG9uIGNhbiBiZSBjaGFnbmVkIHdpdGggPGNvZGU+ cGFyYW1kZWxpbTwvY29kZT4pLiBJbnRlcm5hbGx5LCB0aGUgcGx1Z2luIGdlbmVyYXRlcyBh IHVuaXF1ZSAoMzItY2hhcmFjdGVyKSBzdHJpbmcgYmFzZWQgb24gdGhlIG90aGVyIGF0dHJp YnV0ZXMgZ2l2ZW4uIFlvdSB1c2UgdGhlIHR3byBudW1iZXJzIHRvIGNvbnRyb2wgd2hpY2gg Y2hhcmFjdGVycyBmcm9tIHRoaXMgc3RyaW5nIHRvIHVzZSBpbiB5b3VyIHVuaXF1ZSBjb2Rl LiBUaGUgZmlyc3QgbnVtYmVyIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyB0byBnZW5l cmF0ZSBhbmQgdGhlIDJuZCBudW1iZXIgaXMgaG93IG1hbnkgY2hhcmFjdGVycyB0byBza2lw IGVhY2ggdGltZSBpdCBwaWNrcyBvbmUgZnJvbSB0aGUgc3RyaW5nICh3cmFwcGluZyBiYWNr IHRvIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nIGlmIGl0IGZhbGxzIG9mZiB0aGUgZW5kKS48 L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+QW4gZXhhbXBsZTogc3VwcG9zZSB0aGUgdGFnIGdl bmVyYXRlZCB0aGlzIHN0cmluZyBpbnRlcm5hbGx5OiA8Y29kZT4yY2I1YmJmOGIwYzJjMDI4 ZDhmMjM0YjRiZDQ2ZmRkZTwvY29kZT4uIFRoZXNlIGFyZSB0aGUgcmVzdWx0cyBvZiB2YXJp b3VzIHZhbHVlczo8L2Rpdj48L2xpPgoJPC91bD4KCgk8dGFibGU+CgkJPHRyPgoJCQk8dGg+ Z2FsbGVyeWlkPTwvdGg+CgkJCTx0aD5yZXN1bHQ8L3RoPgoJCQk8dGg+cmVtYXJrczwvdGg+ CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gJiM4MjIwOyYjODIyMTsgb3IgJiM4MjIwOz80OjYm IzgyMjE7IDwvdGQ+CgkJCTx0ZD4gMmZjZiA8L3RkPgoJCQk8dGQ+IHRoZSBkZWZhdWx0IDwv dGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gJiM4MjIwOz84JiM4MjIxOyA8L3RkPgoJCQk8 dGQ+IDJjYjViYmY4IDwvdGQ+CgkJCTx0ZD4gdGhlIGZpcnN0IDggY2hhcmFjdGVycyA8L3Rk PgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+ICYjODIyMDs/NzozJiM4MjIxOyA8L3RkPgoJCQk8 dGQ+IDI1ZjBjOGYgPC90ZD4KCQkJPHRkPiBsZW5ndGggNywgY2hvb3NpbmcgZXZlcnkgM3Jk IGNoYXJhY3RlciA8L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+ICYjODIyMDs/ODo3JiM4 MjIxOyA8L3RkPgoJCQk8dGQ+IDI4MjRmNWM4IDwvdGQ+CgkJCTx0ZD4gbGVuZ3RoIDgsIGNo b29zaW5nIGV2ZXJ5IDd0aCBjaGFyYWN0ZXIgKHdyYXBzKSA8L3RkPgoJCTwvdHI+Cgk8L3Rh YmxlPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj53cmFwdGFnPC9zcGFu PiA6IChYKUhUTUwgdGFnIHRvIHdyYXAgZWFjaCAmIzgyMTY7Y2VsbCYjODIxNzsgKGVmZmVj dGl2ZWx5IGEgdGh1bWJuYWlsIGltYWdlKSB3aXRoLiBEbyBub3Qgc3BlY2lmeSB0aGUgJmx0 OyBvciAmZ3Q7IGNoYXJhY3RlcnMuIEZvciBhIHZhbGlkIHBhZ2UsIHRoZSBvbmx5IHVzZWZ1 bCBvcHRpb25zIGFyZSAmIzgyMjA7ZGl2JiM4MjIxOywgJiM4MjIwO2xpJiM4MjIxOyBvciAm IzgyMjA7cCYjODIyMTsuIERlZmF1bHQ6IGVtcHR5IChpLmUuIG5vIHRhZyk8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRodW1ic2l6ZTwvc3Bhbj4gOiBlaXRoZXIgZm9y IHNwZWNpYWwgZWZmZWN0cywgb3IgaW4gb3JkZXIgdG8gdmFsaWRhdGUgYWdhaW5zdCA8c3Bh biBjbGFzcz0iY2FwcyI+WEhUTUw8L3NwYW4+LCB0aGUgaW1hZ2UgdGh1bWJuYWlscyBzaG91 bGQgaGF2ZSA8Y29kZT53aWR0aDwvY29kZT4gYW5kIDxjb2RlPmhlaWdodDwvY29kZT4gYXR0 cmlidXRlcy4gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gY2Fubm90IHN1cHBseSB0 aGlzIGF1dG9tYXRpY2FsbHksIGJ1dCB0aGlzIGF0dHJpYnV0ZSB3aWxsLjxkaXYgY2xhc3M9 ImJyZWFrIj5TaW1wbHkgc3BlY2lmeSB1cCB0byB0d28gdmFsdWVzIHNlcGFyYXRlZCBieSBh IGNvbW1hICh5b3UgY2FuIG92ZXJyaWRlIHRoaXMgd2l0aCA8Y29kZT5kZWxpbTwvY29kZT4p IHRvIGRlZmluZSB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB5b3VyIHRodW1ibmFpbHMgKGlu IHBpeGVscyBieSBkZWZhdWx0KS4gRm9yIGV4YW1wbGU6IDxjb2RlPnRodW1ic2l6ZT0mcXVv dDs0MCwgNjAmcXVvdDs8L2NvZGU+IHdpbGwgc2V0IDQwLXBpeGVsIHggNjAtcGl4ZWwgdGh1 bWJuYWlscy4gU3VwcGx5aW5nIG9ubHkgb25lIHZhbHVlIHdpbGwgc2V0IGJvdGggd2lkdGgg YW5kIGhlaWdodCB0byB0aGUgc2FtZSB2YWx1ZS4gQWRkaW5nIHVuaXRzIGFmdGVyIGVhY2gg dmFsdWUgKCYjODIyMDtweCYjODIyMTssICYjODIyMDtlbSYjODIyMTssICYjODIyMDslJiM4 MjIxOyBldGMpIHdpbGwgdXNlIHRob3NlIHVuaXRzIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQg cGl4ZWxzLjwvZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj5UbyBzcGVjaWZ5IGp1c3QgdGhlIHdp ZHRoLCBwdXQgdGhlIGNvbW1hIGluIGJ1dCBsZWF2ZSB0aGUgc2Vjb25kIHBhcmFtZXRlciBl bXB0eSAoZS5nLiA8Y29kZT50aHVtYnNpemU9JnF1b3Q7MmVtLCZxdW90OzwvY29kZT4pLiBT aW1pbGFybHkgdG8gc3BlY2lmeSB0aGUgaGVpZ2h0IG9ubHksIGxlYXZlIHRoZSBmaXJzdCB2 YWx1ZSBlbXB0eSBieSBzdGFydGluZyB3aXRoIGEgY29tbWEgKGUuZy4gPGNvZGU+dGh1bWJz aXplPSZxdW90OywxMCUmcXVvdDs8L2NvZGU+KTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+dGh1bWJ0ZXh0PC9zcGFuPiA6IHlvdSBjYW4gcGxhY2UgdGV4dCBh cm91bmQgZWFjaCB0aHVtYm5haWwuIExpa2UgPGNvZGU+aW1hZ2VjYXB0aW9uPC9jb2RlPiwg Z2l2ZSBhbnkgZml4ZWQgdGV4dCBhbmQvb3IgPGEgaHJlZj0iI2ltYWdlX2ZpZWxkcyI+aW1h Z2UgZmllbGQgY29kZXM8L2E+IHRvIGFkZCBpdCBiZWxvdyBldmVyeSB0aHVtYm5haWwgKGlu c2lkZSB0YWcgPGNvZGU+dGh1bWJ0ZXh0d3JhcDwvY29kZT4gd2l0aCBhIGNsYXNzIG9mIDxj b2RlPnRodW1idGV4dGNsYXNzPC9jb2RlPikuIEJ5IGRlZmF1bHQsIHRleHQgaXMgcGxhY2Vk IDxjb2RlPmJlbG93PC9jb2RlPiB0aGUgaW1hZ2UgYnV0IGNhbiBiZSBwbGFjZWQgaW4gYW55 IG9mIDUgcG9zaXRpb25zLCBhcyBnaXZlbiBpbiB0aGUgdGFibGUgYmVsb3cuIDxjb2RlPm9u Y2hhbmdlPC9jb2RlPiBpcyB2ZXJ5IHVzZWZ1bCBmb3IgYXBwbHlpbmcgaGVhZGVycyB3aGVu IHRoZSBjYXRlZ29yeSBjaGFuZ2VzLiBTZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZSA2PC9h Pi48L2xpPgoJPC91bD4KCgk8dGFibGU+CgkJPHRyPgoJCQk8dGg+cG9zaXRpb248L3RoPgoJ CQk8dGg+cmVtYXJrczwvdGg+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4gYWJvdmUgPC90ZD4K CQkJPHRkPiBhYm92ZSB0aGUgdGh1bWJuYWlsLCBub3QgY2xpY2thYmxlIDwvdGQ+CgkJPC90 cj4KCQk8dHI+CgkJCTx0ZD4gYmVsb3cgPC90ZD4KCQkJPHRkPiBiZWxvdyB0aGUgdGh1bWJu YWlsLCBub3QgY2xpY2thYmxlIChkZWZhdWx0KSA8L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8 dGQ+IGJlZm9yZSA8L3RkPgoJCQk8dGQ+IGltbWVkaWF0ZWx5IGluIGZyb250IG9mIHRoZSB0 aHVtYm5haWwsIGNsaWNrYWJsZSBhcyBwYXJ0IG9mIHRoZSBsaW5rIDwvdGQ+CgkJPC90cj4K CQk8dHI+CgkJCTx0ZD4gYWZ0ZXIgPC90ZD4KCQkJPHRkPiBpbW1lZGlhdGVseSBmb2xsb3dp bmcgdGhlIHRodW1ibmFpbCwgY2xpY2thYmxlIGFzIHBhcnQgb2YgdGhlIGxpbmsgPC90ZD4K CQk8L3RyPgoJCTx0cj4KCQkJPHRkPiBvbmNoYW5nZSA8L3RkPgoJCQk8dGQ+IGFib3ZlIGV2 ZXJ5IHRodW1ibmFpbCBidXQgPGVtPm9ubHk8L2VtPiBpZiBpdHMgY29udGVudHMgY2hhbmdl cyBmcm9tIHRoZSBpbWFnZSBiZWZvcmUgaXQgPC90ZD4KCQk8L3RyPgoJPC90YWJsZT4KCgk8 dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+dGh1bWJ0ZXh0d3JhcDwvc3Bhbj4g OiAoWClIVE1MIHRhZyB0byB3cmFwIGFyb3VuZCBlYWNoIHRodW1idGV4dCBpdGVtLiBEbyBu b3Qgc3BlY2lmeSB0aGUgJmx0OyBvciAmZ3Q7IGNoYXJhY3RlcnMuIERlZmF1bHQ6IHNwYW48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRodW1idGV4dGNsYXNzPC9zcGFu PiA6IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIHRvIGFwcGx5IHRvIGV2 ZXJ5IHRodW1idGV4dCBpdGVtLiBEZWZhdWx0OiBlbXB0eSAoaS5lLiBubyBjbGFzcyk8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmRlbGltPC9zcGFuPiA6IFRoZSBkZWxp bWl0ZXIgdG8gdXNlIGJldHdlZW4gaXRlbXMgaW4gbGlzdHMgKDxjb2RlPmNhdGVnb3J5PC9j b2RlPiwgPGNvZGU+aW1hZ2VpZDwvY29kZT4sIDxjb2RlPnRodW1idGV4dDwvY29kZT4gZXRj KS4gSWYgdXNpbmcgZ2x6X2N1c3RvbV9maWVsZHMgJiM4MjEyOyBlc3BlY2lhbGx5IHdpdGgg Y2hlY2tib3hlcyBvciBhIG11bHRpIHNlbGVjdCAmIzgyMTI7IHlvdSBzaG91bGQgY2hhbmdl IDxjb2RlPmRlbGltPC9jb2RlPiB0byBhIHBpcGUgJiM4MjE2O3wmIzgyMTc7IGNoYXJhY3Rl cjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+cGFyYW1kZWxpbTwvc3Bhbj4g OiBieSBkZWZhdWx0IGluIHRoZSA8Y29kZT50aHVtYnRleHQ8L2NvZGU+IGF0dHJpYnV0ZSwg eW91IHNlcGFyYXRlIHBhcmFtZXRlcnMgZnJvbSBvcHRpb24gbmFtZXMgdXNpbmcgdGhlIGNv bG9uLiBJbiBzb21lIGNhc2UgeW91IG1heSB3aXNoIHRvIHVzZSB0aGUgY29sb24gaW4geW91 ciBzdHJpbmcgb2YgdGV4dCBzbyB5b3Ugd2lsbCBuZWVkIHRvIHNldCB0aGUgZGVsaW1pdGVy IHRvIHNvbWV0aGluZyBlbHNlLiBJdCBjYW4gYmUgcHJldHR5IG11Y2ggYW55IHN0cmluZyB5 b3UgbGlrZSAoZS5nLiA8Y29kZT5wYXJhbWRlbGltPSZxdW90O1tbU1FVSUQmcXVvdDs8L2Nv ZGU+KSwganVzdCBtYWtlIHN1cmUgaXQgZG9lc24mIzgyMTc7dCBhcHBlYXIgYW55d2hlcmUg ZWxzZSBpbiB5b3VyIHRleHQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNl bGxjbGFzczwvc3Bhbj4gOiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBm b3IgZWFjaCAmIzgyMTY7Y2VsbCYjODIxNzsgdGhhdCBkaXNwbGF5cyBhIHRodW1ibmFpbC4g RGVmYXVsdDogZW1wdHkgKGkuZS4gbm8gY2xhc3MpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dC1uYW1lIj5saW5rY2xhc3M8L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwv c3Bhbj4gY2xhc3MgZm9yIHRoZSBhbmNob3IgdGFnIG9mIGVhY2ggaW1hZ2UuIERlZmF1bHQ6 IGVtcHR5IChpLmUuIG5vIGNsYXNzKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFt ZSI+aW1nY2xhc3M8L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xh c3MgZm9yIGVhY2ggaW1nIHRhZy4gRGVmYXVsdDogZW1wdHkgKGkuZS4gbm8gY2xhc3MpPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5uYXZ3cmFwdGFnPC9zcGFuPiA6IHdo ZW4gPGNvZGU+c2hvd3BhZ2VsaW5rczwvY29kZT4gaXMgb24sIHNvbWUgbmV4dC9wcmV2IGxp bmtzIGFyZSBwbGFjZWQgdW5kZXIgZWFjaCBnYWxsZXJ5IHRvIHBhZ2UgdGhyb3VnaCA8Y29k ZT5saW1pdDwvY29kZT4gdGh1bWJuYWlscyBhdCBhIHRpbWUuIFRoaXMgYXR0cmlidXRlIHNw ZWNpZmllcyB0aGUgKFgpSFRNTCB0YWcgdG8gd3JhcCBhcm91bmQgdGhlIHdob2xlIG5hdmln YXRpb24gYmxvY2suIERvIG5vdCBzcGVjaWZ5IHRoZSAmbHQ7IG9yICZndDsgY2hhcmFjdGVy cy4gRGVmYXVsdDogZW1wdHkgKGkuZS4gbm8gdGFnKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSI+bmF2Y2xhc3M8L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwv c3Bhbj4gY2xhc3MgZm9yIHRoZSBuZXh0L3ByZXYgY29udGFpbmVyLiBEZWZhdWx0OiBlbXB0 eSAoaS5lLiBubyBjbGFzcyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnBy ZXZsYWJlbDwvc3Bhbj4gOiBMYWJlbCBmb3IgdGhlICYjODIxNjtwcmV2aW91cyBwYWdlJiM4 MjE3OyBvZiBwaWN0dXJlcyB3aGVuIHVzaW5nIDxjb2RlPnNob3dwYWdlbGlua3M8L2NvZGU+ LiBEZWZhdWx0OiAmIzgyMjA7UHJldiYjODIyMTsuIEN1c3RvbWlzYWJsZSBpbiBkaWZmZXJl bnQgbGFuZ3VhZ2VzIHZpYSA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bmV4dGxhYmVsPC9zcGFuPiA6IExhYmVsIGZv ciB0aGUgJiM4MjE2O25leHQgcGFnZSYjODIxNzsgb2YgcGljdHVyZXMgd2hlbiB1c2luZyA8 Y29kZT5zaG93cGFnZWxpbmtzPC9jb2RlPi4gRGVmYXVsdDogJiM4MjIwO05leHQmIzgyMjE7 LiBDdXN0b21pc2FibGUgaW4gZGlmZmVyZW50IGxhbmd1YWdlcyB2aWEgPHNwYW4gY2xhc3M9 ImNhcHMiPk1MUDwvc3Bhbj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnBy ZXZjbGFzczwvc3Bhbj4gOiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBm b3IgdGhlICYjODIxNjtwcmV2JiM4MjE3OyBsaW5rLiBEZWZhdWx0OiBzbWRfc2xpbWJveF9w cmV2PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5uZXh0Y2xhc3M8L3NwYW4+ IDogPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgZm9yIHRoZSAmIzgyMTY7 bmV4dCYjODIxNzsgbGluay4gRGVmYXVsdDogc21kX3NsaW1ib3hfbmV4dDwvbGk+Cgk8L3Vs PgoKCTxoMyBpZD0iZmllbGRzIj5BcnRpY2xlIGZpZWxkIGNvZGVzPC9oMz4KCgk8cD5Vc2Ug dGhlc2UgY29kZXMgdG8gZ3JhYiBpdGVtcyBmcm9tIHRoZSBjdXJyZW50bHkgZGlzcGxheWVk IGFydGljbGUgYW5kIGluamVjdCB0aGVtIGludG8gc21kX3NsaW1ib3ggdGFnIGF0dHJpYnV0 ZXMuIEFsbCBvZiB0aGUgdGFncyBjYW4gYmUgY29tYmluZWQgd2l0aCBmaXhlZCB0ZXh0IChl LmcuIDxjb2RlPmNhdGVnb3J5PSZxdW90O215Y2F0LT9hcnRpY2xlX2ltYWdlXz9zJnF1b3Q7 PC9jb2RlPiBtaWdodCBjaG9vc2UgaW1hZ2VzIGZyb20gdGhlIGNhdGVnb3J5ICYjODIyMDtt eWNhdC0xMl9saW9uJiM4MjIxOyBpZiB0aGUgY3VycmVudCBhcnRpY2xlIHdhcyBpbiBzZWN0 aW9uICYjODIxNjtsaW9uJiM4MjE3OyBhbmQgaGFkIGFuIGFydGljbGUgaW1hZ2Ugb2YgJiM4 MjE2OzEyJiM4MjE3OykuIE5vdGUgdGhhdCBhbnkgYXJ0aWNsZSBvciBjdXN0b20gZmllbGRz ICYjODIxMjsgaW5jbHVkaW5nIHRob3NlIHV0aWxpc2luZyBnbHpfY3VzdG9tX2ZpZWxkcyAm IzgyMTI7IG1heSBjb250YWluIGxpc3RzIG9mIGl0ZW1zLjwvcD4KCgk8dWw+CgkJPGxpPjxj b2RlPj9jPC9jb2RlPiA6IHVzZSB0aGUgY3VycmVudCBnbG9iYWwgKGFydGljbGUpIGNhdGVn b3J5PC9saT4KCQk8bGk+PGNvZGU+IWM8L2NvZGU+IDogdXNlcyBldmVyeXRoaW5nIGV4Y2Vw dCB0aGUgY3VycmVudCBnbG9iYWwgY2F0ZWdvcnk8L2xpPgoJCTxsaT48Y29kZT4/czwvY29k ZT4gOiB1c2UgdGhlIGN1cnJlbnQgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gc2Vj dGlvbjwvbGk+CgkJPGxpPjxjb2RlPiFzPC9jb2RlPiA6IHVzZXMgZXZlcnl0aGluZyBleGNl cHQgdGhlIGN1cnJlbnQgc2VjdGlvbjwvbGk+CgkJPGxpPjxjb2RlPj90PC9jb2RlPiA6IHVz ZSB0aGUgY3VycmVudCBhcnRpY2xlJiM4MjE3O3MgdXJsLXRpdGxlPC9saT4KCQk8bGk+PGNv ZGU+IXQ8L2NvZGU+IDogdXNlcyBhbGwgdXJsLXRpdGxlcyBleGNlcHQgdGhlIGN1cnJlbnQg YXJ0aWNsZSAocHJvYmFibHkgbm90IG11Y2ggdXNlISk8L2xpPgoJCTxsaT48Y29kZT4/aWQ8 L2NvZGU+IDogdXNlIHRoZSBjdXJyZW50IGFydGljbGUmIzgyMTc7cyBJRCBhcyB0aGUgbmFt ZSBvZiBhbiBpbWFnZSBjYXRlZ29yeS4gVXNlZnVsIHRvIG1ha2UgYSBwZXItYXJ0aWNsZSBp bWFnZSBnYWxsZXJ5IChlLmcuIDxjb2RlPmNhdGVnb3J5PSZxdW90O2FydGljbGUtP2lkJnF1 b3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48Y29kZT4haWQ8L2NvZGU+IDogdXNlcyBhbGwgaW1h Z2UgSURzIGV4Y2VwdCB0aGUgY3VycmVudCBhcnRpY2xlPC9saT4KCQk8bGk+PGNvZGU+P2Zp ZWxkbmFtZTwvY29kZT4gOiBsb29rcyBpbiB0aGUgZ2l2ZW4gZmllbGRuYW1lIG9mIHRoZSBj dXJyZW50IGFydGljbGUuIERlc2lnbmVkIHByaW1hcmlseSBmb3IgdXNlIHdpdGggY3VzdG9t IGZpZWxkcyAoZS5nLiA8Y29kZT5pbWFnZWlkPSZxdW90Oz9jdXN0b20xJnF1b3Q7PC9jb2Rl PiksIGl0IGNhbiBhbHNvIGJlIGFueSBvdGhlciBmaWVsZCBmcm9tIHlvdXIgYXJ0aWNsZS4g Q29tbW9uIGZpZWxkcyBhcmUgPGNvZGU+P2V4Y2VycHQ8L2NvZGU+IEA/Y2F0ZWdvcnkxQCA8 Y29kZT4/a2V5d29yZHM8L2NvZGU+IEA/YXJ0aWNsZV9pbWFnZUAgb3IgPGNvZGU+P2F1dGhv cmlkPC9jb2RlPi48L2xpPgoJPC91bD4KCgk8cD5UbyBuZWdhdGUgYW55IGNhdGVnb3J5IHNl bGVjdGlvbiwgdXNlIDxjb2RlPiFjYXRlZ29yeTwvY29kZT4gb3IgPGNvZGU+IWZpZWxkX25h bWU8L2NvZGU+LiBJZiB5b3UgbGlzdCBzcGVjaWZpYyBpbWFnZSBjYXRlZ29yaWVzIChlLmcu IDxjb2RlPmNhdGVnb3J5PSZxdW90OyFsYW5kc2NhcGUsICFiaXJkcyZxdW90OzwvY29kZT4p IHRob3NlIGNhdGVnb3JpZXMgd2lsbCBiZSBleGNsdWRlZC4gSWYgeW91IHNwZWNpZnkgYSBm aWVsZCBuYW1lIHN1Y2ggYXMgPGNvZGU+IWtleXdvcmRzPC9jb2RlPiwgdGhlIGNvbnRlbnRz IG9mIHRoYXQgZmllbGQgd2lsbCBiZSByZWFkIGFuZCB0aGUgbGlzdCBvZiBpbWFnZSBjYXRl Z29yaWVzIGZvdW5kIHRoZXJlIHdpbGwgYmUgZXhjbHVkZWQuPC9wPgoKCTxwPk5vdGUgdGhh dCBpZiB5b3Ugc3BlY2lmeSBhIGZpZWxkIG5hbWUgYW5kIHRoYXQgZmllbGQgaW4gdGhlIGFy dGljbGUgaXMgZW1wdHksIHRoZSBuYW1lIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiBpdCB3YXMg YW4gYWN0dWFsIGltYWdlIGNhdGVnb3J5LiBTbyBpZiB5b3Ugc3BlY2lmaWVkIDxjb2RlPmNh dGVnb3J5PSZxdW90Oz9rZXl3b3JkcyZxdW90OzwvY29kZT4gYW5kIHRoZSAmIzgyMTY7a2V5 d29yZHMmIzgyMTc7IGZpZWxkIGluIHRoZSBjdXJyZW50IGFydGljbGUgd2FzIGVtcHR5LCBp dCB3b3VsZCBsb29rIGZvciBhbiBpbWFnZSBjYXRlZ29yeSBuYW1lZCAmIzgyMjA7a2V5d29y ZHMmIzgyMjE7LjwvcD4KCgk8cD5BbHNvIG5vdGUgdGhhdCwgcmVnYXJkbGVzcyBvZiB0aGUg b3JkZXIgeW91IGxpc3QgdGhlbSwgYWxsICYjODIxNjtwb3NpdGl2ZXMmIzgyMTc7IHdpbGwg YmUgcHJvY2Vzc2VkIGZpcnN0LCB0aGVuIGFueSBleGNsdXNpb25zIGFwcGxpZWQuPC9wPgoK CTxoMyBpZD0iaW1hZ2VfZmllbGRzIj5JbWFnZSBmaWVsZCBjb2RlczwvaDM+CgoJPHA+TGlr ZSA8YSBocmVmPSIjZmllbGRzIj5hcnRpY2xlIGZpZWxkIGNvZGVzPC9hPiwgdGhlc2UgY2Fu IGJlIHNwZWNpZmllZCB0byBncmFiIHBpZWNlcyBvZiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBj dXJyZW50IGltYWdlLiBOb3RlIHRoYXQgdGhlICYjODIxNjtuZWdhdGlvbiYjODIxNzsgdmVy c2lvbnMgZG9uJiM4MjE3O3QgbWFrZSBzZW5zZSBoZXJlIHNvIHRoZSBjb2RlcyBhcmUgJiM4 MjE2O2luY2x1ZGUgb25seSYjODIxNzs6PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+P2NhdGVn b3J5PC9jb2RlPiA6IGltYWdlIGNhdGVnb3J5PC9saT4KCQk8bGk+PGNvZGU+P2NhcHRpb248 L2NvZGU+IDogaW1hZ2UgY2FwdGlvbjwvbGk+CgkJPGxpPjxjb2RlPj9hbHQ8L2NvZGU+IDog aW1hZ2UgYWx0IHRleHQ8L2xpPgoJCTxsaT48Y29kZT4/bmFtZTwvY29kZT4gOiBpbWFnZSAo dXN1YWxseSBmaWxlKSBuYW1lPC9saT4KCQk8bGk+PGNvZGU+P2lkPC9jb2RlPiA6IGltYWdl IElEPC9saT4KCQk8bGk+PGNvZGU+P2RhdGU8L2NvZGU+IDogaW1hZ2UgdXBsb2FkIGRhdGVz dGFtcDwvbGk+CgkJPGxpPjxjb2RlPj9hdXRob3I8L2NvZGU+IDogaW1hZ2UgYXV0aG9yICh3 aG8gdXBsb2FkZWQgaXQgdG8gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4pPC9saT4K CQk8bGk+PGNvZGU+P2V4dDwvY29kZT4gOiBpbWFnZSBmaWxlIGV4dGVuc2lvbjwvbGk+CgkJ PGxpPjxjb2RlPj93aWR0aDwvY29kZT4gOiBpbWFnZSB3aWR0aCBpbiBwaXhlbHM8L2xpPgoJ CTxsaT48Y29kZT4/aGVpZ2h0PC9jb2RlPiA6IGltYWdlIGhlaWdodCBpbiBwaXhlbHM8L2xp PgoJCTxsaT48Y29kZT4/dXJsPC9jb2RlPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPiBvZiB0aGUgZnVsbC1zaXplIGltYWdlICYjODIxMjsgY2FuIG9ubHkgYmUgdXNl ZCB3aXRoIDxjb2RlPmltYWdlY2FwdGlvbjwvY29kZT4gb3IgPGNvZGU+dGh1bWJ0ZXh0PC9j b2RlPjwvbGk+Cgk8L3VsPgoKCTxwPkZvciBleGFtcGxlLCB0byBzaG93IHRoZSBhbHQgdGV4 dCB1bmRlciB0aGUgbWFpbiBpbWFnZSBpbnN0ZWFkIG9mIHRoZSBjYXB0aW9uICh3aGljaCBp dCBvdGhlcndpc2UgdXNlcyBieSBkZWZhdWx0KSA6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+aW1hZ2VjYXB0aW9uPSZxdW90Oz9hbHQmcXVvdDsKPC9j b2RlPjwvcHJlPgoKCTxwPkZvciB0aGUgYWR2ZW50dXJvdXM6PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+aW1hZ2VjYXB0aW9uPSZxdW90Oz9jYXB0aW9u IGJ5ID9hdXRob3IKICAgICBbP2V4dCBwaWN0dXJlOiA/d2lkdGh4P2hlaWdodHB4XSZxdW90 Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBtaWdodCBzaG93IGEgY2FwdGlvbiBzdWNoIGFz ICYjODIyMDtMYWtlIFdpbmRlcm1lcmUgYXQgbmlnaHQgYnkgU3RlZiBbanBnIHBpY3R1cmU6 IDgwMCYjMjE1OzYwMHB4XSYjODIyMTsuPC9wPgoKCTxwPlRvIHB1dCAoYWJvdmUgZWFjaCB0 aHVtYm5haWwpIHRoZSB0ZXh0ICYjODIyMDtGaWxlZCBpbiYjODIyMTsgYW5kIHRoZW4gdGhl IGNhdGVnb3J5IG5hbWUgb2YgdGhlIGltYWdlLCBmb2xsb3dlZCBieSBpdHMgZmlsZW5hbWUg aW4gc3F1YXJlIGJyYWNrZXRzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPnRodW1idGV4dD0mcXVvdDthYm92ZTogRmlsZWQgaW4gP2NhdGVnb3J5IFs/ bmFtZV0mcXVvdDsmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Zb3UgY2FuIGNvbWJpbmUgZGVm aW5pdGlvbnMsIGVhY2ggc2VwYXJhdGVkIGJ5IGEgY29tbWEsIGZvciBleGFtcGxlOjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPnRodW1idGV4dD0mcXVv dDthYm92ZTpGaWxlZCBpbiA/Y2F0ZWdvcnkgWz9uYW1lICg/d2lkdGggeCA/aGVpZ2h0KV0s CiAgICAgYmVsb3c6P2F1dGhvciZxdW90OyZsdDsvY29kZSZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPlRoYXQgd291bGQgYWRkIHRoZSBjYXRlZ29yeSwgZmlsZW5hbWUsIHdpZHRoIGFuZCBo ZWlnaHQgYWJvdmUgdGhlIGltYWdlIGFuZCB0aGUgYXV0aG9yICh0aGUgcGVyc29uIHdobyB1 cGxvYWRlZCBpdCkgYmVsb3cgdGhlIHRodW1ibmFpbC4gWW91IGNhbiBnZXQgYXMgY3JlYXRp dmUgYXMgeW91IGxpa2UuPC9wPgoKCTxwPk5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byB1c2Ug YSBjb2xvbiBpbiB0aGUgdGV4dCBpdHNlbGYsIHlvdSB3aWxsIG5lZWQgdG8gb3ZlcnJpZGUg dGhlIGRlZmF1bHQgYW5kIHNldCBpdCB0byBhbnkgc3RyaW5nIG9mIGNoYXJhY3RlcnMgeW91 IHByZWZlciB1c2luZyB0aGUgPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4gb3B0aW9uLjwvcD4K Cgk8aDIgaWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDI+CgoJPGgzIGlkPSJlZzEiPkV4YW1w bGUgMTwvaDM+CgoJPHA+U2hvdyBhbGwgaW1hZ2VzIGluIHRoZSBsYW5kc2NhcGUgY2F0ZWdv cnksIHRlbiBhdCBhIHRpbWU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3R4cDpzbWRfc2xpbWJveCBjYXRlZ29yeT0mcXVvdDtsYW5kc2NhcGUm cXVvdDsgbGltaXQ9JnF1b3Q7MTAmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMyBp ZD0iZWcyIj5FeGFtcGxlIDI8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3R4cDpzbWRfc2xpbWJveCBjYXRlZ29yeT0mcXVvdDtkb2dzLCBiaXJk cyZxdW90OyBsaW1pdD0mcXVvdDs5JnF1b3Q7CiAgICAgdGh1bWJ0ZXh0PSZxdW90O2FmdGVy Oj9jYXB0aW9uJnF1b3Q7IHdyYXB0YWc9JnF1b3Q7bGkmcXVvdDsKICAgICBjZWxsY2xhc3M9 JnF1b3Q7Y2VsbCZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+U2hvdyBhbGwgaW1h Z2VzIGluIHRoZSBkb2dzIGFuZCBiaXJkcyBjYXRlZ29yaWVzLCA5IHBlciBwYWdlLiBBZGQg dGhlIGNhcHRpb25zIHVuZGVyIHRoZSB0aHVtYm5haWxzIGFuZCBtYWtlIHRoZW0gY2xpY2th YmxlIHRvby4gV3JhcCBlYWNoIGltYWdlIGluIGEgPGNvZGU+bGk8L2NvZGU+IHRhZyBhbmQg Z2l2ZSBlYWNoIGEgY2xhc3Mgb2YgJiM4MjE2O2NlbGwmIzgyMTc7IChpbXBsaWVzIHlvdSBt dXN0IG1hbnVhbGx5IGFkZCBhIGNvcnJlc3BvbmRpbmcgPGNvZGU+Jmx0O3VsJmd0OzwvY29k ZT4gdGFnIGFyb3VuZCB0aGUgcGx1Z2luIGluIG9yZGVyIHRvIG1haW50YWluIHBhZ2UgdmFs aWRpdHkpLjwvcD4KCgk8cD5JZiB5b3UgYWRkZWQgPGNvZGU+c29ydD0mcXVvdDtkYXRlIGRl c2MsIHJhbmRvbSZxdW90OzwvY29kZT4gdG8gdGhlIGFib3ZlIHRhZywgeW91IHdvdWxkIGdl dCB0aGUgbW9zdCByZWNlbnQgOSBpbWFnZXMgb24gdGhlIGZpcnN0IHBhZ2UsIGJ1dCBzaG93 biBpbiBhIHJhbmRvbSBvcmRlci4gVGhlIG5leHQgcGFnZSB3b3VsZCBzaG93IHRoZSBuZXh0 IG1vc3QtcmVjZW50IDkgaW1hZ2VzLCBhZ2FpbiBzb3J0ZWQgcmFuZG9tbHkgd2l0aGluIHRo ZW1zZWx2ZXMuPC9wPgoKCTxwPkhvd2V2ZXIsIHN3aXRjaGluZyB0aGUgYXR0cmlidXRlcyB0 bzogPGNvZGU+c29ydD0mcXVvdDtyYW5kb20sIGRhdGUgZGVzYyZxdW90OzwvY29kZT4gd291 bGQgY2hhbmdlIHRoZSBvdXRwdXQuIFlvdSB3b3VsZCB0aGVuIGdldCA5IHJhbmRvbSBpbWFn ZXMgb24gdGhlIGZpcnN0IHBhZ2UsIHdpdGggdGhlIG1vc3QgcmVjZW50IG9uZXMgb2YgdGhl IGdyb3VwIHNob3duIGZpcnN0LiBDbGlja2luZyAmIzgyMTY7TmV4dCYjODIxNzsgd291bGQg c2hvdyBhbm90aGVyIDkgcmFuZG9tIGltYWdlcyAoc29tZSBtYXkgYmUgdGhlIHNhbWUgYXMg cGFnZSAxKSwgYWdhaW4gc29ydGVkIGluIGRlc2NlbmRpbmcgb3JkZXIgb2YgZGF0ZS4gRm9y IHRoaXMgcmVhc29uICh1bmxlc3MgeW91JiM4MjE3O3JlIHNpbXBseSB1c2luZyB0aGUgcGx1 Z2luIHRvIHByZXR0eSB1cCBhIHBhZ2Ugd2l0aCByYW5kb20gaW1hZ2VzKSBpZiB5b3UmIzgy MTc7cmUgdXNpbmcgcmFuZG9tIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byA8Y29kZT5zb3J0 PC9jb2RlPiwgeW91IHByb2JhYmx5IHdhbnQgdG8gZGlzYWJsZSBwYWdpbmcgYnkgc2V0dGlu ZyBzaG93cGFnZWxpbmtzPSYjODIyMDswJiM4MjIxOy48L3A+CgoJPGgzIGlkPSJlZzMiPkV4 YW1wbGUgMzwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4m bHQ7dHhwOnNtZF9zbGltYm94IGltYWdlaWQ9JnF1b3Q7NDgsIDI1LCA0JnF1b3Q7CiAgICAg Y2F0ZWdvcnk9JnF1b3Q7ZG9ncywgP2N1c3RvbTEmcXVvdDsgc3ViY2F0cz0mcXVvdDthbGwm cXVvdDsgbGltaXQ9JnF1b3Q7MjAmcXVvdDsKICAgICBwcmV2bGFiZWw9JnF1b3Q7QmFjayZx dW90OyBzb3J0PSZxdW90O25hbWUgZGVzYywgY2F0ZWdvcnkmcXVvdDsgLyZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPlNob3cgaW1hZ2VzIHdpdGggSURzIDQ4LCAyNSBhbmQgNCBhcyB3ZWxs IGFzIGFsbCBpbWFnZXMgaW4gdGhlIGRvZ3MgY2F0ZWdvcnkgYW5kIGFsc28gcHVsbCB0aGUg aW1hZ2UgY2F0ZWdvcnkgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhcnRpY2xlJiM4MjE3O3Mg Y3VzdG9tMSBmaWVsZCAoaWYgY3VzdG9tMSBoZWxkIDxjb2RlPmJpcmRzLCBsYW5kc2NhcGVz PC9jb2RlPiB5b3UmIzgyMTc7ZCBnZXQgcGljdHVyZXMgZnJvbSBhbGwgdGhyZWUgY2F0ZWdv cmllcyBhbmQgYWxsIHRoZWlyIHN1Yi1jYXRlZ29yaWVzKS4gVGhlIHRhZyBhbHNvIGxpbWl0 cyB0aGUgbnVtYmVyIG9mIHRodW1icyBwZXIgcGFnZSB0byAyMCwgY2hhbmdlcyB0aGUgcHJl dmlvdXMgcGFnZSBsYWJlbCB0byAmIzgyMjA7QmFjayYjODIyMTsgYW5kIHNvcnRzIHRoZSBp bWFnZXMgaW4gZGVzY2VuZGluZyBvcmRlciBvZiBuYW1lLCB0aGVuIGNhdGVnb3J5LjwvcD4K Cgk8aDMgaWQ9ImVnNCI+RXhhbXBsZSA0PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3NsaW1ib3ggY2F0ZWdvcnk9JnF1b3Q7c3Rh dGljLCBjYXQtP2lkJnF1b3Q7CiAgICAgaW1hZ2VpZD0mcXVvdDshYXJ0aWNsZV9pbWFnZSZx dW90OyBsaW1pdD0mcXVvdDs2JnF1b3Q7IGdyb3VwbmFtZT0mcXVvdDs/YyZxdW90OwogICAg IHNob3dwYWdlbGlua3M9JnF1b3Q7MCZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ SWYgdGhlIHBlcnNvbiBpcyBjdXJyZW50bHkgdmlld2luZyBhcnRpY2xlIElEIDY3LCBzaG93 IGFsbCBpbWFnZXMgZnJvbSB0aGUgJiM4MjE2O3N0YXRpYyYjODIxNzsgY2F0ZWdvcnkgYW5k IHRoZSAmIzgyMTY7Y2F0LTY3JiM4MjE3OyBjYXRlZ29yeS4gSWYgYW55IGltYWdlIGluIGVp dGhlciBvZiB0aG9zZSBjYXRlZ29yaWVzIGlzIGZvdW5kIHRvIGhhdmUgYW4gSUQgb2YgdGhl IGFydGljbGUgaW1hZ2UgZnJvbSB0aGUgY3VycmVudCBhcnRpY2xlLCB0aGF0IHBpY3R1cmUg d2lsbCBiZSBpZ25vcmVkLiBPbmx5IHNob3cgNiBwaWN0dXJlcyBhbmQgZG9uJiM4MjE3O3Qg c2hvdyB0aGUgbmV4dC9wcmV2IGxpbmtzIG9uIHRoZSBwYWdlLjwvcD4KCgk8cD5BbHNvLCBn cm91cCB0aGUgbGlnaHRib3ggcGljdHVyZXMgYnkgaW1hZ2UgY2F0ZWdvcnkuIFRoaXMgbWVh bnMgdGhhdCBpZiBzb21lb25lIGNsaWNrcyBvbiBhIHBpY3R1cmUgZnJvbSB0aGUgJiM4MjIw O3N0YXRpYyYjODIyMTsgY2F0ZWdvcnksIHRoZSBTbGltYm94IG5leHQvcHJldiBsaW5rcyBv bmx5IG5hdmlnYXRlIGJldHdlZW4gdGhvc2UgcGljdHVyZXMuIFRoZSB1c2VyIHdpbGwgaGF2 ZSB0byBjbG9zZSB0aGUgbGlnaHRib3ggYW5kIGNsaWNrIGEgcGljdHVyZSBpbiB0aGUgY2F0 LTY3IGNhdGVnb3J5IHRvIHNob3cgcGljdHVyZXMgZnJvbSB0aGUgb3RoZXIgZ3JvdXAuPC9w PgoKCTxwPk9uIHRoZSBzdXJmYWNlIHRoZSBncm91cG5hbWUgb3B0aW9uIG1heSBzZWVtIGEg bGl0dGxlIHN1cGVyZmx1b3VzIGJ1dCBpdCBjYW4gYmUgdXNlZnVsIHRvIGFsbG93IHBlb3Bs ZSB0byBvbmx5IGZsaWNrIHRocm91Z2ggYSBzdWJzZXQgb2YgdGhlIHBpY3R1cmVzIG9uIGVh Y2ggcGFnZSwgYmFzZWQgb24gdGhlaXIgY2F0ZWdvcnksIGZpbGUgbmFtZSwgYXV0aG9yLCB3 aWR0aC9oZWlnaHQsIGFsdC9jYXB0aW9uLCBldmVuIElEIGlmIHlvdSB3YW50IHRoZW0gdG8g YWxsIGJlIHVuaXF1ZSBlbnRpdGllcy4gWW91IGNhbiBhbHNvIHVzZSBhIGZpeGVkIHZhbHVl IHJlYWQgZnJvbSBhIGZpZWxkIGluIHRoZSBjdXJyZW50IGFydGljbGUsIGUuZy4gPGNvZGU+ Z3JvdXBuYW1lPSZxdW90Oz9jdXN0b20yJnF1b3Q7PC9jb2RlPi4gVXNlZnVsIHdoZW4gdXNl ZCBpbiBjb25qdW5jdGlvbiB3aXRoIHNvcnQuPC9wPgoKCTxoMyBpZD0iZWc1Ij5FeGFtcGxl IDU8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpzbWRfc2xpbWJveCBjYXRlZ29yeT0mcXVvdDs/YywgP2N1c3RvbTEsICFjdXN0b20yLCAh c3RhdGljJnF1b3Q7CiAgICAgbGltaXQ9JnF1b3Q7OCZxdW90OyBtYXhsaW1pdD0mcXVvdDsz MiZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+QSBiaXQgb2YgYSBjb250cml2ZWQg ZXhhbXBsZSB0aGF0IHNob3dzIGhvdyBjcmF6eSB5b3UgY2FuIGdldDogVGhpcyB3aWxsIHNo b3cgYSBtYXhpbXVtIG9mIDMyIGltYWdlcyBmcm9tIGFuIGltYWdlIGNhdGVnb3J5IHdpdGgg dGhlIHNhbWUgbmFtZSBhcyB0aGUgY3VycmVudCBnbG9iYWwgY2F0ZWdvcnksIHBsdXMgYWxs IGltYWdlcyBmcm9tIGNhdGVnb3JpZXMgbGlzdGVkIGluIHRoZSBjdXN0b20xIGZpZWxkIG9m IHRoZSBjdXJyZW50IGFydGljbGUgYnV0IDxlbT5leGNsdWRpbmc8L2VtPiBpbWFnZXMgZnJv bSBjYXRlZ29yaWVzIGxpc3RlZCBpbiBjdXN0b20yIGFuZCBhbHNvIGV4Y2x1ZGluZyB0aGUg JiM4MjE2O3N0YXRpYyYjODIxNzsgY2F0ZWdvcnkuIFNob3cgOCBpbWFnZSB0aHVtYm5haWxz IGF0IGEgdGltZSAoaS5lLiA0IHBhZ2VzKS48L3A+CgoJPGgzIGlkPSJlZzYiPkV4YW1wbGUg NjwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnNtZF9zbGltYm94IGNhdGVnb3J5PSZxdW90Oz9QaG90byBjb3VudHJ5JnF1b3Q7IHN1YmNh dHM9JnF1b3Q7YWxsJnF1b3Q7CiAgICAgdGh1bWJ0ZXh0PSZxdW90O29uY2hhbmdlOiAmYW1w O2FtcDtsdDtoNCZhbXA7YW1wO2d0Oz9jYXRlZ29yeSZhbXA7YW1wO2x0Oy9oNCZhbXA7YW1w O2d0OyZxdW90OwogICAgIGdyb3VwbmFtZT0mcXVvdDs/YyZxdW90OyB0aHVtYnRleHR3cmFw PSZxdW90OyZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+QSB3b3JrLXNhdmluZyB0 YWchIFB1bGxzIG91dCBhbGwgcGljdHVyZXMgZnJvbSB0aGUgY2F0ZWdvcnkgZ2l2ZW4gaW4g dGhlIGN1c3RvbSBmaWVsZCBsYWJlbGxlZCAmIzgyMTY7UGhvdG8gY291bnRyeSYjODIxNzss IGluY2x1ZGluZyBhbnkgc3ViLWNhdGVnb3JpZXMuIEJ5IGRlZmF1bHQgaXQgc29ydHMgdGhl bSBieSBjYXRlZ29yeSwgd2hpY2ggaXMgcGVyZmVjdC4gVGhlIGNsZXZlciBiaXQgaXMgPGNv ZGU+dGh1bWJ0ZXh0PC9jb2RlPiwgd2hpY2ggdGVsbHMgdGhlIHBsdWdpbiB0byBkaXNwbGF5 IHRoZSBjYXRlZ29yeSBuYW1lIGFib3ZlIHRoZSBpbWFnZXMgYnV0IDxlbT5vbmx5PC9lbT4g d2hlbiB0aGUgY2F0ZWdvcnkgY2hhbmdlcy4gVGhlIHJlc3VsdCBpcyBjYXRlZ29yeSBoZWFk aW5ncyAoc3Vycm91bmRlZCBieSBoNCB0YWdzLCB3aXRob3V0IHRoZSBkZWZhdWx0IDxjb2Rl PnRodW1idGV4dHdyYXA8L2NvZGU+IHNwYW4pIGFib3ZlIGVhY2ggZ3JvdXAgb2YgaW1hZ2Vz LiBOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gaW5jbHVkZSBzaW1wbGUgPHNwYW4gY2xhc3M9 ImNhcHMiPkhUTUw8L3NwYW4+IHRhZ3MgeW91IGNhbiwgYnV0IHRoZXkgbXVzdCBiZSBlbmNv ZGVkIHdpdGggdGhlaXIgY2hhcmFjdGVyIGNvZGUgZXF1aXZhbGVudHMgb3IgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gZ2V0cyBtYWQuPC9wPgoKCTxwPlRoZSA8Y29kZT5ncm91 cG5hbWU8L2NvZGU+IG9wdGlvbiB0ZWxscyBzbGltYm94IHRvIG9ubHkgcGVybWl0IHN0ZXBw aW5nIHRocm91Z2ggZWFjaCBpbWFnZSBpbiBlYWNoIGNhdGVnb3J5LiBZb3UgY2Fubm90ICYj ODIxNjtmYWxsIG9mZiYjODIxNzsgdGhlIGVuZCBvZiBvbmUgY2F0ZWdvcnkgaW50byB0aGUg bmV4dCB3aGVuIHVzaW5nIHRoZSBOZXh0L1ByZXYgbGlua3MgaW4gdGhlIGxpZ2h0Ym94Ljwv cD4KCgk8cD5JZiB5b3Ugd2FudGVkIHRvIHNob3cgY2F0ZWdvcnkgaGVhZGluZ3MgdGhhdCBn cm91cGVkIHBpY3R1cmVzIGJ5IGF1dGhvciBhcyB3ZWxsIHlvdSBjb3VsZCB1c2U6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+c29ydD0mcXVvdDtjYXRl Z29yeSwgYXV0aG9yJnF1b3Q7CiAgICAgdGh1bWJ0ZXh0PSZxdW90O29uY2hhbmdlOiAmYW1w O2FtcDtsdDtoNCZhbXA7YW1wO2d0Oz9jYXRlZ29yeQogICAgIChieSA/YXV0aG9yKSZhbXA7 YW1wO2x0Oy9oNCZhbXA7YW1wO2d0OyZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+QWRkIGEg bGl0dGxlIGJpdCBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBhbmQgeW91ciBz aW5nbGUgc2xpbWJveCB0YWcgY2FuIGxvb2sgbGlrZSBpdCYjODIxNztzIGNyZWF0aW5nIG11 bHRpcGxlIGdhbGxlcmllcywgYWxsIGF1dG9tYXRpY2FsbHkuPC9wPgoKCTxoMiBpZD0ic3R5 bGUiPlN0eWxpbmcgd2l0aCA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPjwvaDI+CgoJ PHA+VGhlcmUgYXJlIChkZWxpYmVyYXRlbHkpIHZlcnkgZmV3IGxheW91dCBhdHRyaWJ1dGVz IGZvciB0aGUgcGx1Z2luIGJlY2F1c2UgcHJldHR5IG11Y2ggZXZlcnl0aGluZyBjYW4gYmUg YWNjZXNzZWQgZnJvbSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiB0byBsYXkgeW91 ciBpbWFnZXMgb3V0IGhvd2V2ZXIgeW91IGxpa2UgdGhlbS4gV2FudCB0byBjaGFuZ2UgdGhl IG51bWJlciBvZiBpbWFnZXMgcGVyIHJvdz8gQ2hhbmdlIHRoZSB3aWR0aCBvZiB0aGUgY29u dGFpbmluZyAmbHQ7ZGl2Jmd0OyBhbmQgc2V0IHRoZSB3aWR0aCBvZiBlYWNoIHRodW1ibmFp bCBzcGFjZSB0byBhIHBhcnRpY3VsYXIgc2l6ZS48L3A+CgoJPHA+VGhlIGZvbGxvd2luZyBs b2dpY2FsIHN0cnVjdHVyZSBhcHBsaWVzOjwvcD4KCgk8dWw+CgkJPGxpPkFuIG9wdGlvbmFs IHdyYXB0YWcgYW5kIGNlbGxjbGFzcyBhcm91bmQgZWFjaCAmIzgyMjA7Y2VsbCYjODIyMTsg KGkuZS4gbGlua2VkIHRodW1ibmFpbCk8L2xpPgoJCTxsaT5BIGxpbmsgZWxlbWVudCBjb250 YWluaW5nIHRoZSB0aHVtYm5haWwmIzgyMTc7cyA8Y29kZT4mbHQ7aW1nJmd0OzwvY29kZT4g dGFnIHdpdGggYW4gb3B0aW9uYWwgaW1nY2xhc3M8L2xpPgoJCTxsaT5UaGUgdGh1bWJ0ZXh0 IGlzIGEgJmx0O3NwYW4mZ3Q7IHdpdGggYW4gb3B0aW9uYWwgdGh1bWJ0ZXh0Y2xhc3MgYW5k IGNhbiBhcHBlYXIgYWJvdmUsIGJlbG93IG9yIHdpdGhpbiB0aGUgbGluayBlbGVtZW50PC9s aT4KCQk8bGk+VGhlIG5leHQvcHJldiBsaW5rcyBhcmUgd3JhcHBlZCBpbiB0aGUgb3B0aW9u YWwgbmF2d3JhcHRhZyBjb250YWluZXIgYW5kIGNhbiBiZSBnaXZlbiBhbiBvcHRpb25hbCBu YXZjbGFzczwvbGk+CgkJPGxpPlRoZSBuZXh0IGxpbmsgaGFzIGEgKGRlZmF1bHQpIGNsYXNz IG9mICYjODIyMDtzbWRfc2xpbWJveF9uZXh0JiM4MjIxOyBhbmQgcHJldiBoYXMgJiM4MjIw O3NtZF9zbGltYm94X3ByZXYmIzgyMjE7LiBUaGVzZSBjYW4gYmUgY2hhbmdlZCBvciByZW1v dmVkIGlmIHlvdSB3aXNoPC9saT4KCTwvdWw+CgoJPHA+VXNpbmcgPHNwYW4gY2xhc3M9ImNh cHMiPkNTUzwvc3Bhbj4gc2VsZWN0b3JzIHlvdSBjYW4gYWNjZXNzIGV2ZXJ5IHBhcnQgb2Yg dGhlIHN0cnVjdHVyZS4gQW4gZXhhbXBsZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFu PiBsYXlvdXQgaXMgZ2l2ZW4gaGVyZSB0byBnZXQgeW91IHN0YXJ0ZWQgKGFzc3VtZXMgYSB3 cmFwdGFnIG9mICYjODIxNjtsaSYjODIxNzssIGEgY29udGFpbmluZyAmIzgyMTY7dWwmIzgy MTc7IGFyb3VuZCB0aGUgcGx1Z2luIHRhZyB3aXRoIGEgY2xhc3Mgb2YgPGNvZGU+c21kX3Ns aW1ib3g8L2NvZGU+IGFuZCA8Y29kZT5uYXZjbGFzcz0mcXVvdDtzbWRfc2xpbWJveF9uYXYm cXVvdDs8L2NvZGU+KS4gUGFzdGUgaXQgaW50byB5b3VyIDxzcGFuIGNsYXNzPSJjYXBzIj5D U1M8L3NwYW4+IHRlbXBsYXRlIGFuZCB5b3UmIzgyMTc7cmUgZ29vZCB0byBnby48L3A+Cgo8 cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4uc21kX3NsaW1ib3ggewoJ ZmxvYXQ6bGVmdDsKCXdpZHRoOjYwMHB4OwoJbWFyZ2luOjFlbSAwOwoJY2xlYXI6Ym90aDsK CWxpc3Qtc3R5bGU6bm9uZTsKfQouc21kX3NsaW1ib3ggbGkgewoJd2lkdGg6MTUwcHg7Cglo ZWlnaHQ6MTUwcHg7CglmbG9hdDpsZWZ0OwoJbWFyZ2luOjFlbSBhdXRvOwoJdGV4dC1hbGln bjpjZW50ZXI7Cn0KLnNtZF9zbGltYm94IGltZyB7CgltYXJnaW46MCBhdXRvOwp9Ci5zbWRf c2xpbWJveCBzcGFuIHsKCWZsb2F0OmxlZnQ7Cgl3aWR0aDoxNDBweDsKCXBhZGRpbmc6MnB4 IDAgMCA1cHg7Cn0KLnNtZF9zbGltYm94X25hdiB7CgljbGVhcjpib3RoOwoJd2lkdGg6NTAw cHg7CglwYWRkaW5nOjIwcHg7Cn0KLnNtZF9zbGltYm94X3ByZXYgewoJZmxvYXQ6bGVmdDsK fQouc21kX3NsaW1ib3hfbmV4dCB7CglmbG9hdDpyaWdodDsKfQo8L2NvZGU+PC9wcmU+CgoJ PGgyIGlkPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4xOSBKYW4g MDcgfCAwLjEgfCBJbml0aWFsIHJlbGVhc2U8L2xpPgoJCTxsaT4yMCBKYW4gMDcgfCAwLjEx IHwgQWRkZWQgIWNhdGVnb3J5IChuZWdhdGlvbikgc3VwcG9ydC4gVGhhbmtzIFZpdHJ1dml1 czwvbGk+CgkJPGxpPjAyIEZlYiAwNyB8IDAuMTIgfCBBZGRlZCBpbWFnZWlkLCB3aXRoIG5l Z2F0aW9uIHN1cHBvcnQgKHRoYW5rcyB3b3VhcmVuKSBhbmQgdGV4dHBvcyBvcHRpb24gKHRo YW5rcyBsZWUpPC9saT4KCQk8bGk+MDYgRmViIDA3IHwgMC4yIHwganMgYW5kIGNzcyBjYW4g bm93IGJlIGxvYWRlZCBlbHNld2hlcmUgKHRoYW5rcyBqc3R1YmJzKS4gQWRkZWQgd3JhcHRh ZyBhbmQgY2hhbmdlZCBkZWZhdWx0cyB0byBtYWtlIG91dHB1dCBsZXNzIGxpa2UgdGFnLXNv dXAgKHRoYW5rcyB3b3VhcmVuKTwvbGk+CgkJPGxpPjEzIEZlYiAwNyB8IDAuMjEgfCBBZGRl ZCBvcmRlcmJ5PSYjODIyMDtmaXhlZCYjODIyMTsgKHRoYW5rcyBsZWUpIGFuZCBtaW5vciB3 YXJuZml4ICh0aGFua3MgYmVuamlib3QpPC9saT4KCQk8bGk+MDQgTWFyIDA3IHwgMC4yMiB8 IEFkZGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+IHN1cHBvcnQsIHN1YmNhdGVn b3J5IHN1cHBvcnQgYW5kIGV4dGVuZGVkIHRoZSBjYXRlZ29yeS9pbWFnZWlkIG9wdGlvbnMu IE5vdyByZXF1aXJlcyBzbWRfbGliIChpbmNsdWRlZCBpbiB0aGUgemlwIGZpbGUgZm9yIGNv bnZlbmllbmNlIGJ1dCBhdmFpbGFibGUgc2VwYXJhdGVseSBhcyB3ZWxsKTwvbGk+CgkJPGxp PjA0IE1hciAwNyB8IDAuMjMgfCBGaXhlZCBvcmRlcmJ5IHdoZW4gdXNpbmcgcmFuZG9tICh0 aGFua3MgbXJkYWxlKSBhbmQgYWRkZWQgYWJpbGl0eSB0byBvdmVycmlkZSBtYXhsaW1pdDwv bGk+CgkJPGxpPjE5IE1hciAwNyB8IDAuMjQgfCBBbGxvd2VkIHNtZF9zbGltYm94X2luYyB0 byBiZSBpZ25vcmVkIHZpYSA8Y29kZT5saWJjaGVjaz0mcXVvdDswJnF1b3Q7PC9jb2RlPiAo dGhhbmtzIHBhcHVhc3MpPC9saT4KCQk8bGk+MzAgSnVuIDA3IHwgMC4yNGIgfCBGaXhlZCBw YWdpbmcgaW4gc3ViLWRpcmVjdG9yeSBpbnN0YWxsYXRpb25zICh0aGFua3MgdWx0cmFtZWdh IGFuZCBRd2VzdCk8L2xpPgoJCTxsaT4yOCBKdWwgMDcgfCAwLjI1IHwgU3VwZXJjaGFyZ2Vk IHRoZSBncm91cG5hbWUgb3B0aW9uICh0aGFua3MgW0F4ZWxdKTwvbGk+CgkJPGxpPjMxIEp1 bCAwNyB8IDAuMjVhIHwgTWFpbnRlbmFuY2UgdXBncmFkZSBvbmx5LiBObyBmZWF0dXJlcywg anVzdCBidW5kbGVkIHRoZSBsYXRlc3Qgc2xpbWJveC9tb290b29scyBsaWJyYXJ5IGFuZCBm aXhlZCB0aGUgaGVscCBmaWxlPC9saT4KCQk8bGk+MDQgQXVnIDA3IHwgMC4yNjogfCBGaXhl ZCBwYWdpbmcgdG8gYWxsb3cgbXVsdGlwbGUgc2xpbWJveCB0YWdzIHBlciBwYWdlIHRvIGNv LWV4aXN0ICh0aGFua3Mgd2hlYXRpY3VzKTwvbGk+CgkJPGxpPjIyIEF1ZyAwNyB8IDAuMjc6 IHwgQWRkZWQgdGh1bWJuYWlscy1hcy1tYWluLWltYWdlIG9wdGlvbiAodGhhbmtzIHByb2dy ZTU1KTwvbGk+CgkJPGxpPjMwIEF1ZyAwNyB8IDAuMjggfCBBZGRlZCBjdXN0b21pc2FibGUg Y2FwdGlvbnMgdW5kZXIgdGhlIG1haW4gaW1hZ2UgKHRoYW5rcyBBZGFtX1YpIGFuZCBjb25z b2xpZGF0ZWQgb3JkZXJieSAoaW50ZXJuYWwgY29kZSk8L2xpPgoJCTxsaT4xNCBTZXAgMDcg fCAwLjI5IHwgQWRkZWQgdGhlIHRodW1ic2l6ZSBvcHRpb24gdG8gc2V0IHRodW1ibmFpbCBk aW1lbnNpb25zICh0aGFua3MgU2ltYW5layk8L2xpPgoJCTxsaT4yMCBTZXAgMDcgfCAwLjI5 YSB8IEZpeGVkIHVuZGVjbGFyZWQgaW5kZXggd2FybmluZ3MgKHRoYW5rcyBBbWJpdGlvdXNs ZW1vbik8L2xpPgoJCTxsaT4yMCBPY3QgMDcgfCAwLjI5YiB8IEZpeGVkIHRoZSBmaXggdGhh dCBicm9rZSBpbiB2MC4yNCAodGhhbmtzIE1yLlNtaXRoKSBhbmQgdGhlICYjODIxNjtweCYj ODIxNzsgdGh1bWJzaXplIGlzc3VlICh0aGFua3Mgcm9iaW43NDYpPC9saT4KCQk8bGk+MDMg Tm92IDA3IHwgMC4yMTAgfCBVc2VzIHNtZF9saWIgdjAuMyBzbyBpbnRlZ2VyIHJhbmdlcyBh cmUgbm93IG9ubHkgYWxsb3dlZCBpbiBpbWFnZWlkLiBBZGRlZCB0aHVtYnRleHQvdGh1bWJ0 ZXh0Y2xhc3MvcGFyYW1kZWxpbS4gRGVwcmVjYXRlZCBzaG93YWx0L3Nob3djYXB0aW9uL2Fs dGNsYXNzL2NhcHRpb25jbGFzcy90ZXh0cG9zPC9saT4KCQk8bGk+MjggTm92IDA3IHwgMC4y MTEgfCBVc2VzIHNtZF9saWIgdjAuMzEuIEZpeGVkIHNvbWUgd2FybmluZ3MgYW5kIGFkZGVk IG9uY2hhbmdlIGhlYWRpbmcgc3VwcG9ydCAodGhhbmtzIGthcmwuc3BlbmNlciwgZGVjb2Rl cmx0ZCk8L2xpPgoJCTxsaT4yMCBKYW4gMDggfCAwLjIxMiB8IEFkZGVkIHRodW1idGV4dHdy YXAgKHRoYW5rcyBqb2RlY2kpIGFuZCA8Y29kZT4/dXJsPC9jb2RlPiAodGhhbmtzIG1hcmt1 c2ZhbGspIDsgZml4ZWQgd2hpdGVzcGFjZSBhcm91bmQgJiM4MjE2Oz8mIzgyMTc7IGNvZGVz PC9saT4KCQk8bGk+MDEgQXByIDA4IHwgMC4zIHwgVXNlcyBzbWRfbGliIHYwLjMyLiBCYWNr cG9ydGVkIGZlYXR1cmVzIGFuZCByZWZhY3RvcmlzYXRpb24gZnJvbSBzbWRfZ2FsbGVyeSA7 IGFkZGVkIHRyaWdnZXIsIGRlbGltLCBuYXZ3cmFwdGFnIGFuZCBsaW5rY2xhc3MgKHRoYW5r cyBtYXJpb3MpIDsgY2hhbmdlZCBzdWJjYXRzIGFuZCB0aHVtYiAodGhhbmtzIGZhbmdvbmsp IDsgZGVwcmVjYXRlZCBzbWRfc2xpbWJveF9pbmMgOyByZW1vdmVkIGNhdGxhYmVsLCBsaWJj aGVjayBhbmQgdGhlIGRlcHJlY2F0ZWQgYXR0cyBmcm9tIHYwLjIxMCA7IHJlbmFtZWQgb3Jk ZXJieSBhcyBzb3J0IDsgTW9vbmJveCwgTGlnaHRib3gsIExpdGVib3gsIEltYWdlYm94IGFu ZCBUaGlja2JveCAoalF1ZXJ5KSBub3cgc3VwcG9ydGVkIDsgYWxzbyB3b3JrcyB3aXRoIGds el9jdXN0b21fZmllbGRzICh0aGFua3MgcHJvZ3JlNTUgYW5kIGdlcmhhcmQpPC9saT4KCQk8 bGk+MDkgSnVuIDA4IHwgMC4zMSB8IEZpeGVkIDxjb2RlPnNvcnQ8L2NvZGU+IHdoZW4gdXNp bmcgPGNvZGU+bGltaXQ8L2NvZGU+IGFuZCBzYXZlZCBhIHF1ZXJ5ICh0aGFua3Mgcm9iaW43 NDYpPC9saT4KCQk8bGk+MTkgRGVjIDA4IHwgMC4zMiB8IEZpeGVkIDxzcGFuIGNsYXNzPSJj YXBzIj5NTFA8L3NwYW4+IHN0cmluZyBidWc8L2xpPgoJCTxsaT4yMiBGZWIgMDkgfCAwLjMz IHwgQWxsb3dlZCA8Y29kZT5yZWw8L2NvZGU+IHRvIGJlIHJlbW92ZWQgKHRoYW5rcyA8c3Bh biBjbGFzcz0iY2FwcyI+T01HQzwvc3Bhbj5ocmlzKTwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0i Y3JlZGl0cyI+Q3JlZGl0czwvaDI+CgoJPHA+VGhpcyBwbHVnaW4gb3JpZ2luYWxseSBwbGFn aWFyaXNlZCBpZGVhcyBmcm9tIFJvYiBTYWJsZSYjODIxNztzIHJzc190aHVtYnBvcCBhbmQg aGFzIGJlZW4gYnVpbHQgdXAgZnJvbSB0aGVyZSB3aXRoIHN1Z2dlc3Rpb25zIGZyb20gdmFy aW91cyA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPmVycyBpbiB0aGUgY29tbXVuaXR5 LiBJdCBhbHNvIHdvdWxkbiYjODIxNzt0IGV4aXN0IHdpdGhvdXQgdGhlIGhhcmQgd29yayBv ZiBDaHJpc3RvcGhlIEJleWxzJiM4MjE3OyBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBvZiBT bGltYm94LiBNYW55IHRoYW5rcyB0byBhbGwgd2hvIGhhdmUgaGVscGVkIGNyYWZ0IHRoaXMg cGx1Z2luLCBhbmQgb2YgY291cnNlIHRvIHRoZSBhd2Vzb21lIFRlYW0gVGV4dFBhdHRlcm4u PC9wPgoKCTxwPjwvZGl2PjwvcD4KPCEtLSAtLS0gQkVHSU4gUExVR0lOIENTUyAtLS0gLS0+ CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNDU7 fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAi Q291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNG RkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9y ZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxh eTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9o ZWxwIC5yZXF1aXJlZCB7Y29sb3I6cmVkO30KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxw IGE6dmlzaXRlZCB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRl ci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hl bHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVj b3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmct Ym90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdl b3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNz bWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzox MHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsg fQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzY5MzsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBz YW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDIycHggMCAwOyB0ZXh0 LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30KI3Nt ZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXIt c3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwIDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJj YXNlOyB9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9o ZWxwIGxpIHsgbWFyZ2luLWxlZnQ6MzVweDsgfQojc21kX2hlbHAgLmF0dC1uYW1lIHsgZm9u dC13ZWlnaHQ6Ym9sZDsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGln bjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTsgbWFyZ2luOjAgYXV0bzt9CiNzbWRfaGVs cCB0ZCwgI3NtZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVl bSAwO30KI3NtZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+Cjwh LS0gLS0tIEVORCBQTFVHSU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7czozMjoiZDM5MmQ0 ZWNhZDEzYmRlNjExMjg4N2UxN2FkMmQ2NDgiO30=