{"blobs":{"5cae595937aba6dd814985bd2081ea76721a0ddd502d2a970fcdb05f38971777":"LS0tCm5hbWU6IGRhdGEtY29uY3VycmVuY3ktZGVidWdnaW5nCmRlc2NyaXB0aW9uOiBVc2Ugd2hlbiBkYXRhIGlzIHdyb25nLCBtaXNzaW5nLCBkdXBsaWNhdGVkIG9yIG91dCBvZiBzeW5jLCBjb3VudHMgb3IgYmFsYW5jZXMgZG8gbm90IGFkZCB1cCwgYSByZWNvcmQgY2hhbmdlZCB1bmV4cGVjdGVkbHksIGEgYnVnIGhhcHBlbnMgb25seSB1bmRlciBsb2FkIG9yIG9ubHkgc29tZXRpbWVzOiByYWNlIGNvbmRpdGlvbnMsIGxvc3QgdXBkYXRlcywgZG91YmxlIHByb2Nlc3NpbmcsIHRyYW5zYWN0aW9ucywgaXNvbGF0aW9uIGxldmVscywgcmVwbGljYSBsYWcsIHN0YWxlIGNhY2hlLCBwYXJ0aWFsIGZhaWx1cmUuCmxpY2Vuc2U6IEFwYWNoZS0yLjAgQU5EIE1JVAptZXRhZGF0YToKICBzb3VyY2U6IFtodHRwczovL2dpdGh1Yi5jb20vdHJpZ2dlcmRvdGRldi9zdGFmZi1lbmdpbmVlcmluZy1za2lsbHMvYmxvYi9tYWluL3NraWxscy9zdGFmZi1lbmdpbmVlcmluZy1za2lsbHMtcmFjZS1jb25kaXRpb25zL1NLSUxMLm1kLCBodHRwczovL2dpdGh1Yi5jb20vdHJpZ2dlcmRvdGRldi9zdGFmZi1lbmdpbmVlcmluZy1za2lsbHMvYmxvYi9tYWluL3NraWxscy9zdGFmZi1lbmdpbmVlcmluZy1za2lsbHMtY29uc2lzdGVuY3ktbW9kZWxzL1NLSUxMLm1kLCBodHRwczovL2dpdGh1Yi5jb20vUHJhbW9kRHV0dGEvcWFza2lsbHMvYmxvYi9tYWluL3NlZWQtc2tpbGxzL3JhY2UtY29uZGl0aW9uLWZpbmRlci9TS0lMTC5tZF0KLS0tCiMgRGF0YSBhbmQgQ29uY3VycmVuY3kgRGVidWdnaW5nCgpSYWNlcyBoYXZlIGRldGVybWluaXN0aWMgY2F1c2VzIHRoYXQgc2hvdyB1cCBub25kZXRlcm1pbmlzdGljYWxseS4gRmluZCB0aGUgc2hhcmVkIHN0YXRlLCB0aGVuIGNvbnRyb2wgdGhlIHRpbWluZyB1bnRpbCB0aGUgZmFpbHVyZSBoYXBwZW5zIGV2ZXJ5IHRpbWUuCgojIyBQaW4gZG93biB0aGUgbWlzbWF0Y2gKLSBTdGF0ZSBleGFjdGx5IHdoYXQgaXMgd3Jvbmc6IHdoaWNoIHJlY29yZHMgYW5kIGZpZWxkcywgZXhwZWN0ZWQgdmVyc3VzIGFjdHVhbCwgc2luY2Ugd2hlbi4gQ29tcGFyZSB3aXRoIHRoZSBzb3VyY2Ugb2YgdHJ1dGggKHBheW1lbnQgcHJvdmlkZXIsIGxlZGdlciwgYXVkaXQgbG9nLCBldmVudCBoaXN0b3J5KS4KLSBCdWlsZCBhIHRpbWVsaW5lIGZvciB0aGUgYWZmZWN0ZWQgcmVjb3JkcyBmcm9tIGxvZ3MgYW5kIGF1ZGl0IGRhdGE6IGV2ZXJ5IHdyaXRlLCBieSB3aGljaCByZXF1ZXN0LCBqb2Igb3IgdXNlciwgd2l0aCB0aW1lc3RhbXBzIGFuZCBjb3JyZWxhdGlvbiBpZHMuIEludGVybGVhdmVkIHdyaXRlcyB0byB0aGUgc2FtZSByZWNvcmQgYXJlIHRoZSBmaXJzdCBzdXNwZWN0LgotIEFzayBvZiBldmVyeSByZWFkOiBjb3VsZCBpdCBoaXQgYSBkaWZmZXJlbnQgcGxhY2UgdGhhbiB0aGUgd3JpdGU/IE1vc3QgIml0IHNhdmVkIGJ1dCBzaG93cyB0aGUgb2xkIHZhbHVlIiBidWdzIGFyZSB3cml0dGVuIHRvIG9uZSBwbGFjZSBhbmQgcmVhZCBmcm9tIGFub3RoZXIuCgojIyBVc3VhbCBjYXVzZXMKLSBDaGVjayB0aGVuIGFjdDogdHdvIHJlcXVlc3RzIGJvdGggc2VlICJubyBzdWNoIGVtYWlsIiBhbmQgYm90aCBjcmVhdGUgYSB1c2VyLgotIFJlYWQsIG1vZGlmeSwgd3JpdGU6IHR3byByZXF1ZXN0cyByZWFkIHN0b2NrIDEgYW5kIGJvdGggd3JpdGUgMDsgb25lIHVwZGF0ZSBpcyBsb3N0LgotIEFjdGluZyBvbiBhIHN0YWxlIHN0YXR1czogdHdvIHdvcmtlcnMgYm90aCBzZWUgInBhaWQiLCBib3RoIGNhbGwgdGhlIHNoaXBwaW5nIEFQSS4KLSBEdXBsaWNhdGUgZGVsaXZlcnkgd2l0aG91dCBkZWR1cGxpY2F0aW9uOiBhIHJldHJpZWQgcmVxdWVzdCwgYSByZXNlbnQgd2ViaG9vaywgYSBxdWV1ZSBtZXNzYWdlIGRlbGl2ZXJlZCB0d2ljZSwgb3ZlcmxhcHBpbmcgc2NoZWR1bGVkIHJ1bnMgKHNlZSBiYWNrZ3JvdW5kLWpvYnMgZm9yIHRoZSBqb2Itc2lkZSBydWxlcykuCi0gUGFydGlhbCBmYWlsdXJlOiBzdGVwIHR3byBvZiB0aHJlZSBmYWlsZWQgd2l0aCBubyB0cmFuc2FjdGlvbiBvciBjb21wZW5zYXRpb24sIGxlYXZpbmcgdGhlIHJlY29yZCBoYWxmIGRvbmUuCi0gQ29uc2lzdGVuY3kgZ2FwczogcmVwbGljYSBsYWcgKHR5cGljYWxseSAxMOKAkzUwMCBtcyksIGEgY2FjaGUgc3RhbGUgdW50aWwgaXRzIFRUTCwgYSBzZWFyY2ggaW5kZXggdGhhdCByZWZyZXNoZXMgc2Vjb25kcyBsYXRlciwgYSByZWFkIG1vZGVsIHdhaXRpbmcgZm9yIGFuIGV2ZW50IHRvIGJlIGNvbnN1bWVkLgotIElzb2xhdGlvbjogdW5kZXIgcmVhZCBjb21taXR0ZWQsIHRoZSBkZWZhdWx0IG9mIG1vc3QgZGF0YWJhc2VzLCB0d28gdHJhbnNhY3Rpb25zIGNhbiByZWFkIHRoZSBzYW1lIHJvdyBhbmQgYm90aCB3cml0ZS4gUmVwZWF0YWJsZSByZWFkIGFuZCBzZXJpYWxpemFibGUgcHJldmVudCBtb3JlIGFub21hbGllcyBidXQgbWFrZSBjb25mbGljdGluZyB0cmFuc2FjdGlvbnMgZmFpbCwgc28gdGhlIGNhbGxlciBtdXN0IHJldHJ5LgotIENsaWVudCBzaWRlOiBhbiBvbGRlciByZXNwb25zZSBhcnJpdmluZyBhZnRlciBhIG5ld2VyIG9uZSwgZG91YmxlIGNsaWNrcywgdHdvIHRhYnMsIGFuIG9wdGltaXN0aWMgdXBkYXRlIHRoYXQgd2FzIG5ldmVyIHJvbGxlZCBiYWNrLgoKIyMgUmVwcm9kdWNlIGl0IG9uIHB1cnBvc2UKLSBSdW4gdGhlIGNvbXBldGluZyBvcGVyYXRpb25zIHRydWx5IGluIHBhcmFsbGVsIG9uIHRoZSBzYW1lIHJlY29yZCAodHdvIGNsaWVudHMsIHR3byBicm93c2VyIGNvbnRleHRzLCB0d28gd29ya2VycyksIHdpdGggdW5pcXVlIHRlc3QgZGF0YSBwZXIgcnVuLgotIENvbnRyb2wgdGhlIHRpbWluZyBpbnN0ZWFkIG9mIHNsZWVwaW5nOiBob2xkIG9uZSByZXF1ZXN0IG9yIHRyYW5zYWN0aW9uIGF0IHRoZSBjcml0aWNhbCBwb2ludCAoYSBicmVha3BvaW50LCBhIGhvb2ssIGFuIGludGVyY2VwdGVkIHJlcXVlc3QpLCByZWxlYXNlIHRoZSBvdGhlciBmaXJzdCwgdGhlbiB0cnkgdGhlIHJldmVyc2Ugb3JkZXIuCi0gV2lkZW4gdGhlIHdpbmRvdzogYWRkIGxhdGVuY3ksIHRocm90dGxlIENQVSBvciBuZXR3b3JrLCBsb29wIHRoZSBzY2VuYXJpbyBtYW55IHRpbWVzIGluIHBhcmFsbGVsLiBGaW5kIHRoZSB0aHJlc2hvbGQgYnkgaGFsdmluZyB0aGUgZGVsYXkgYmV0d2VlbiB0aGUgdHdvIG9wZXJhdGlvbnMuCi0gQXNzZXJ0IG9uIHRoZSBmaW5hbCBzZXR0bGVkIHN0YXRlIChjb3VudHMsIHN1bXMsIHVuaXF1ZW5lc3MpIGFuZCByZXBlYXQgdGhlIHRlc3Q7IG9uZSBmYWlsdXJlIGluIG1hbnkgcnVucyBpcyBhIGZhaWx1cmUuCgojIyBGaXhlcywgc2ltcGxlc3QgZmlyc3QKMS4gQSB1bmlxdWUgY29uc3RyYWludCB0aGF0IHJlamVjdHMgdGhlIGR1cGxpY2F0ZS4KMi4gQW4gYXRvbWljIHVwZGF0ZSAoU0VUIHN0b2NrID0gc3RvY2sgLSAxIFdIRVJFIGlkID0gPyBBTkQgc3RvY2sgPiAwKSB3aXRoIGEgY2hlY2sgb2YgdGhlIGFmZmVjdGVkIHJvdyBjb3VudC4KMy4gQW4gdXBzZXJ0IGluc3RlYWQgb2YgYSBsb29rdXAgZm9sbG93ZWQgYnkgYW4gaW5zZXJ0Lgo0LiBBIGNvbmRpdGlvbmFsIHN0YXR1cyBjaGFuZ2UgKFdIRVJFIHN0YXR1cyA9ICdwYWlkJykgY2xhaW1lZCBiZWZvcmUgdGhlIHNpZGUgZWZmZWN0Lgo1LiBPcHRpbWlzdGljIGxvY2tpbmcgd2l0aCBhIHZlcnNpb24gY29sdW1uOyByZXBvcnQgb3IgcmV0cnkgdGhlIGNvbmZsaWN0Lgo2LiBBIHJvdyBsb2NrIChTRUxFQ1QgLi4uIEZPUiBVUERBVEUpIGluIGEgc2hvcnQgdHJhbnNhY3Rpb24gd2hlbiB3b3JrIG11c3QgaGFwcGVuIGJldHdlZW4gdGhlIHJlYWQgYW5kIHRoZSB3cml0ZS4KNy4gQSBkaXN0cmlidXRlZCBsb2NrIG9ubHkgYXMgYSBsYXN0IHJlc29ydCwgd2l0aCBhbiBleHBpcnksIGFuZCBhIGZlbmNpbmcgdG9rZW4gd2hlbiBpdCBndWFyZHMgZXh0ZXJuYWwgd29yay4KLSBSZWFkcyB0aGF0IG11c3Qgc2hvdyB0aGUgdXNlcidzIG93biB3cml0ZTogcmV0dXJuIHRoZSB3cml0dGVuIGRhdGEsIG9yIHJlYWQgZnJvbSB0aGUgcHJpbWFyeSByaWdodCBhZnRlciB0aGUgd3JpdGU7IHVwZGF0ZSB0aGUgY2FjaGUgb24gd3JpdGUgaW5zdGVhZCBvZiBkZWxldGluZyBpdC4KLSBNYWtlIHJldHJpZWQgb3BlcmF0aW9ucyBpZGVtcG90ZW50IHNvIGR1cGxpY2F0ZSBkZWxpdmVyaWVzIGRvIG5vdGhpbmcuCgojIyBCZWZvcmUgeW91IGZpbmlzaAotIFsgXSBUaGUgbWlzbWF0Y2ggaXMgc3RhdGVkIHdpdGggcmVjb3JkIGlkcyBhbmQgYSB0aW1lbGluZS4KLSBbIF0gVGhlIHJhY2Ugb3IgZ2FwIHdhcyByZXByb2R1Y2VkIGRldGVybWluaXN0aWNhbGx5LCBvciB3aHkgbm90IGlzIGV4cGxhaW5lZC4KLSBbIF0gVGhlIGZpeCB1c2VzIHRoZSBzaW1wbGVzdCBtZWNoYW5pc20gdGhhdCBjbG9zZXMgdGhlIHdpbmRvdywgd2l0aCBhIHRlc3QgdGhhdCBydW5zIHRoZSBvcGVyYXRpb25zIGNvbmN1cnJlbnRseS4KLSBbIF0gRGF0YSBkYW1hZ2VkIGJ5IHRoZSBidWcgaXMgbGlzdGVkLCB3aXRoIGEgcmVwYWlyIHBsYW4gZm9yIHRoZSBwZXJzb24gdG8gYXBwcm92ZS4K","7da409bbe3d596dd74921d7943d1894a417d3a3b7dd91d47b01b28d317dc7a1a":"ZGF0YS1jb25jdXJyZW5jeS1kZWJ1Z2dpbmc6IHRoaXJkLXBhcnR5IG5vdGljZXMKClRoaXMgc2tpbGwgY29tYmluZXMgT3JxZXN0cmlhJ3Mgb3duIHRleHQgd2l0aCBtYXRlcmlhbCBmcm9tIHRoZSBzb3VyY2VzIGJlbG93LgpBZGFwdGVkIGZvciBPcnFlc3RyaWE6IGNvbmRlbnNlZCBhbmQgY2hhbmdlZC4KCjEuIHRyaWdnZXJkb3RkZXYvc3RhZmYtZW5naW5lZXJpbmctc2tpbGxzLCBza2lsbHMvc3RhZmYtZW5naW5lZXJpbmctc2tpbGxzLXJhY2UtY29uZGl0aW9ucwogICBodHRwczovL2dpdGh1Yi5jb20vdHJpZ2dlcmRvdGRldi9zdGFmZi1lbmdpbmVlcmluZy1za2lsbHMvYmxvYi9tYWluL3NraWxscy9zdGFmZi1lbmdpbmVlcmluZy1za2lsbHMtcmFjZS1jb25kaXRpb25zL1NLSUxMLm1kCiAgIExpY2Vuc2U6IEFwYWNoZS0yLjAKICAgQ29weXJpZ2h0IFsyMDI2XSBbVHJpZ2dlci5kZXZdIChhcyB3cml0dGVuIGluIHRoZSB1cHN0cmVhbSBMSUNFTlNFIGFwcGVuZGl4KQoKMi4gdHJpZ2dlcmRvdGRldi9zdGFmZi1lbmdpbmVlcmluZy1za2lsbHMsIHNraWxscy9zdGFmZi1lbmdpbmVlcmluZy1za2lsbHMtY29uc2lzdGVuY3ktbW9kZWxzCiAgIGh0dHBzOi8vZ2l0aHViLmNvbS90cmlnZ2VyZG90ZGV2L3N0YWZmLWVuZ2luZWVyaW5nLXNraWxscy9ibG9iL21haW4vc2tpbGxzL3N0YWZmLWVuZ2luZWVyaW5nLXNraWxscy1jb25zaXN0ZW5jeS1tb2RlbHMvU0tJTEwubWQKICAgTGljZW5zZTogQXBhY2hlLTIuMAogICBDb3B5cmlnaHQgWzIwMjZdIFtUcmlnZ2VyLmRldl0gKGFzIHdyaXR0ZW4gaW4gdGhlIHVwc3RyZWFtIExJQ0VOU0UgYXBwZW5kaXgpCgozLiBQcmFtb2REdXR0YS9xYXNraWxscywgc2VlZC1za2lsbHMvcmFjZS1jb25kaXRpb24tZmluZGVyCiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9QcmFtb2REdXR0YS9xYXNraWxscy9ibG9iL21haW4vc2VlZC1za2lsbHMvcmFjZS1jb25kaXRpb24tZmluZGVyL1NLSUxMLm1kCiAgIExpY2Vuc2U6IE1JVAogICBDb3B5cmlnaHQgKGMpIDIwMjYgUHJhbW9kIER1dHRhIChUaGUgVGVzdGluZyBBY2FkZW15KQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClByYW1vZER1dHRhL3Fhc2tpbGxzLCBzZWVkLXNraWxscy9yYWNlLWNvbmRpdGlvbi1maW5kZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpNSVQgTGljZW5zZQoKQ29weXJpZ2h0IChjKSAyMDI2IFByYW1vZCBEdXR0YSAoVGhlIFRlc3RpbmcgQWNhZGVteSkKClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKU09GVFdBUkUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQXBhY2hlIExpY2Vuc2UgMi4wLCBmb3I6IHRyaWdnZXJkb3RkZXYvc3RhZmYtZW5naW5lZXJpbmctc2tpbGxzLCBza2lsbHMvc3RhZmYtZW5naW5lZXJpbmctc2tpbGxzLXJhY2UtY29uZGl0aW9uczsgdHJpZ2dlcmRvdGRldi9zdGFmZi1lbmdpbmVlcmluZy1za2lsbHMsIHNraWxscy9zdGFmZi1lbmdpbmVlcmluZy1za2lsbHMtY29uc2lzdGVuY3ktbW9kZWxzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCgogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KCiAgIDEuIERlZmluaXRpb25zLgoKICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCgogICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQogICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCgogICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCiAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCiAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQogICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgoKICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQogICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgoKICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCiAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KCiAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCiAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAogICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCgogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgogICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCiAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgoKICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCiAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCiAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KCiAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCiAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CiAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgogICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CiAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCiAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCiAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQogICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CiAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAogICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KCiAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAogICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KCiAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCiAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQogICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQogICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCiAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CiAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCiAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCiAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAogICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAoKICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCgogICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCiAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCgogICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAogICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCiAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cwogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAogICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAogICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgoKICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCiAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgogICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCgogICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawogICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgogICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQogICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAogICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCgogICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCiAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCiAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgoKICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCiAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgogICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwogICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQogICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgoKICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCiAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQogICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQogICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQogICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCiAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgogICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCgogICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCiAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCiAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCiAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCiAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCgogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMK"},"entities":{"agents":[],"projects":[],"skills":[{"files":[{"blob":"7da409bbe3d596dd74921d7943d1894a417d3a3b7dd91d47b01b28d317dc7a1a","executable":false,"path":"LICENSE.txt"},{"blob":"5cae595937aba6dd814985bd2081ea76721a0ddd502d2a970fcdb05f38971777","executable":false,"path":"SKILL.md"}],"id":"skill-data-concurrency-debugging","name":"data-concurrency-debugging","origin":"orqestria-builtin-skill-data-concurrency-debugging","version":"1.0.0+1461e80aeab753e648a2026a"}],"teams":[],"workflows":[]},"format":"orqestria.bundle","package":{"description":"data-concurrency-debugging: Trace failures to their root cause and independently verify fixes across frontend, backend, data and integrations.","id":"orqestria-skill-data-concurrency-debugging","kind":"skill","name":"data-concurrency-debugging","readme":"# data-concurrency-debugging\n\ndata-concurrency-debugging: Trace failures to their root cause and independently verify fixes across frontend, backend, data and integrations.\n\nIncludes the complete skill and its supporting files (2 files). The exact authored scope is preserved below.\n\nOriginal skill description (source language)\n\nUse when data is wrong, missing, duplicated or out of sync, counts or balances do not add up, a record changed unexpectedly, a bug happens only under load or only sometimes: race conditions, lost updates, double processing, transactions, isolation levels, replica lag, stale cache, partial failure.\n\nInstall the skill, review its source and trust settings, then enable it for the relevant project or agent.","requirements":["Orqestria installed on your computer."],"root":"skill-data-concurrency-debugging","version":"1.0.0+4078cd2e04929d1091b96bcf"},"schemaVersion":1}
