My43LjIKZTliZThlYzJhMmVhMGU3YmU0ZjdlNjcwZWEzNWFmZDNkNWE1ZWY3ZgoECG86GVNhc3M6OlRyZWU6OlJvb3ROb2RlDDoOQGNoaWxkcmVuWxRvOhxTYXNzOjpUcmVlOjpDb21tZW50Tm9kZQw6C0B2YWx1ZVsGSSICJwMvKi8gR3JpZCBNYXRoIEVuZ2luZQogKi8gPT09PT09PT09PT09PT09PQogKi8gVGhlIGBzdWAgZnVuY3Rpb25zIGdpdmUgeW91IGRpcmVjdCBhY2Nlc3MgdG8gdGhlIG1hdGggbGF5ZXIsCiAqLyB3aXRob3V0IGFueSBzeW50YXgtc3VnYXIgbGlrZSBzaG9ydGhhbmQgcGFyc2luZywgYW5kIG5vcm1hbGl6YXRpb24uCiAqLyBJZiB5b3UgcHJlZmVyIG5hbWVkIGFyZ3VtZW50cywgYW5kIHN0cmlwcGVkLWRvd24gc3ludGF4LAogKi8geW91IGNhbiB1c2UgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5IGluIHlvdXIgY29kZSDigJMKICovIHJlcGxhY2luZyBgc3BhbmAsIGBndXR0ZXJgLCBhbmQgYHNsaWNlYC4KICovCiAqLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsc28gdXNlZnVsCiAqLyBmb3IgYnVpbGRpbmcgbWl4aW5zIG9yIG90aGVyIGV4dGVuc2lvbnMgdG8gU3VzeS4KICovIEFwcGx5IHRoZSBTdXN5IHN5bnRheCB0byBuZXcgbWl4aW5zIGFuZCBmdW5jdGlvbnMsCiAqLyB1c2luZyBvdXIgIlBsdWdpbiBIZWxwZXJzIiwKICovIG9yIHdyaXRlIHlvdXIgb3duIHN5bnRheCBhbmQgcGFzcyB0aGUgbm9ybWFsaXplZCByZXN1bHRzIGFsb25nCiAqLyB0byBgc3VgIGZvciBjb21waWxhdGlvbi4KICovCiAqLyBAZ3JvdXAgc3UtbWF0aAogKi8KICovIEBzZWUgc3Utc3BhbgogKi8gQHNlZSBzdS1ndXR0ZXIKICovIEBzZWUgc3Utc2xpY2UKICovIEBpZ25vcmUgX3N1LXN1bQogKi8gQGlnbm9yZSBfc3UtY2FsYy1zcGFuCiAqLyBAaWdub3JlIF9zdS1jYWxjLXN1bQogKi8gQGlnbm9yZSBfc3UtbmVlZHMtY2FsYy1vdXRwdXQgKi8GOgZFVDoKQHR5cGU6C3NpbGVudDsGWwA6DkBmaWxlbmFtZTA6DUBvcHRpb25zewA6CkBsaW5laQY6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOw5pBjoMQG9mZnNldGkGOg1AZW5kX3Bvc287Egc7DmkdOxNpJzoKQGZpbGVJIncvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19zdS1tYXRoLnNjc3MGOwlUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CUY6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEZvOwcMOwhbBkkiAqUELyogU3UgU3BhbgogKiAtLS0tLS0tCiAqLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIGEgQ1NTLXJlYWR5IHNwYW4gd2lkdGgsCiAqLyBiYXNlZCBvbiBub3JtYWxpemVkIHNwYW4gYW5kIGNvbnRleHQgZGF0YSDigJMKICovIGEgbG93LWxldmVsIHZlcnNpb24gb2YgYHN1c3ktc3BhbmAsCiAqLyB3aXRoIGFsbCBvZiB0aGUgbG9naWMgYW5kIG5vbmUgb2YgdGhlIHN5bnRheCBzdWdhci4KICovCiAqLyAtIEdyaWRzIGRlZmluZWQgd2l0aCB1bml0bGVzcyBudW1iZXJzIHdpbGwgcmV0dXJuIGAlYCB2YWx1ZXMuCiAqLyAtIEdyaWRzIGRlZmluZWQgd2l0aCBjb21wYXJhYmxlIHVuaXRzCiAqLyAgIHdpbGwgcmV0dXJuIGEgdmFsdWUgaW4gdGhlIHVuaXRzIHByb3ZpZGVkLgogKi8gLSBHcmlkcyBkZWZpbmVkIHdpdGggYSBtaXggb2YgdW5pdHMsCiAqLyAgIG9yIGEgY29tYmluYXRpb24gb2YgdW50aWxlc3MgbnVtYmVycyBhbmQgdW5pdC1sZW5ndGhzLAogKi8gICB3aWxsIHJldHVybiBhIGBjYWxjKClgIHN0cmluZy4KICovCiAqLyBAZ3JvdXAgc3UtbWF0aAogKi8gQHNlZSBzdXN5LXNwYW4KICovCiAqLyBAcGFyYW0ge251bWJlciB8IGxpc3R9ICRzcGFuIC0KICovICAgTnVtYmVyIG9yIGxpc3Qgb2YgZ3JpZCBjb2x1bW5zIHRvIHNwYW4KICovIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLQogKi8gICBMaXN0IG9mIGNvbHVtbnMgYXZhaWxhYmxlCiAqLyBAcGFyYW0ge251bWJlcn0gJGd1dHRlcnMgLQogKi8gICBXaWR0aCBvZiBhIGd1dHRlciBpbiBjb2x1bW4tY29tcGFyYWJsZSB1bml0cwogKi8gQHBhcmFtIHswIHwgMSB8IC0xfSAkc3ByZWFkIC0KICovICAgTnVtYmVyIG9mIGd1dHRlcnMgc3Bhbm5lZCwKICovICAgcmVsYXRpdmUgdG8gYHNwYW5gIGNvdW50CiAqLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRjb250YWluZXItc3ByZWFkIFskc3ByZWFkXSAtCiAqLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsCiAqLyAgIHJlbGF0aXZlIHRvIGBjb2x1bW5zYCBjb3VudAogKi8gQHBhcmFtIHtpbnRlZ2VyfSAkbG9jYXRpb24gWzFdIC0KICovICAgT3B0aW9uYWwgcG9zaXRpb24gb2Ygc3ViLXNwYW4gYW1vbmcgZnVsbCBzZXQgb2YgY29sdW1ucwogKi8KICovIEByZXR1cm4ge2xlbmd0aH0gLQogKi8gICBSZWxhdGl2ZSBvciBzdGF0aWMgbGVuZ3RoIG9mIGEgc3BhbiBvbiB0aGUgZ3JpZCAqLwY7CVQ7CjsLOwZbADsMMDsNQAs7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ZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsKVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwpGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsKVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVAEDoNQG9wdGlvbnN7ADoOQGtleXdvcmRzbzoeU2Fzczo6VXRpbDo6Tm9ybWFsaXplZE1hcAc6EUBrZXlfc3RyaW5nc3sAOglAbWFwewA6C0BzcGxhdDA6EUBrd2FyZ19zcGxhdDA7DmlQOw9vOxAJOxFvOxIHOw5pUDsTaQ07FG87Egc7DmlQOxNpGzsVQBA7FkAROx1AEDseQBY6DkBvcGVyYW5kMm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6TGl0ZXJhbAk6C0B2YWx1ZW86IFNhc3M6OlNjcmlwdDo6VmFsdWU6OlN0cmluZwk7J0kiC251bWJlcgY7ClQ7HkAWOgpAdHlwZToLc3RyaW5nOiJAZGVwcmVjYXRlZF9pbnRlcnBfZXF1aXZhbGVudDA7DmlQOw9vOxAJOxFvOxIHOw5pUDsTaR87FG87Egc7DmlQOxNpJzsVQBA7FkAROx1AEDoOQG9wZXJhdG9yOgdlcTsOaVA7D287EAk7EUAbOxRvOxIHOw5pUDsTaSc7FUAQOxZAETsdQBA7HkAWMFsIdToXU2Fzczo6VHJlZTo6SWZOb2RlAmAEBAhbCG86J1Nhc3M6OlNjcmlwdDo6VHJlZTo6VW5hcnlPcGVyYXRpb24LOg1Ab3BlcmFuZG86IFNhc3M6OlNjcmlwdDo6VHJlZTo6RnVuY2FsbA86DkBjYWxsYWJsZTA6CkBuYW1lSSINdW5pdGxlc3MGOgZFVDoKQGFyZ3NbBm86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOwlJIglzcGFuBjsKVDoWQHVuZGVyc2NvcmVkX25hbWVJIglzcGFuBjsKVDoKQGxpbmVpUToSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7DmlROgxAb2Zmc2V0aRw6DUBlbmRfcG9zbzsSBzsOaVE7E2khOgpAZmlsZUkidy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3N1LW1hdGguc2NzcwY7ClQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsKRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7ClQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQBA6DUBvcHRpb25zewA6DkBrZXl3b3Jkc286HlNhc3M6OlV0aWw6Ok5vcm1hbGl6ZWRNYXAHOhFAa2V5X3N0cmluZ3N7ADoJQG1hcHsAOgtAc3BsYXQwOhFAa3dhcmdfc3BsYXQwOw5pUTsPbzsQCTsRbzsSBzsOaVE7E2kTOxRvOxIHOw5pUTsTaSI7FUAQOxZAETsdQBA7HkAWOg5Ab3BlcmF0b3I6CG5vdDsOaVE7D287EAk7EW87Egc7DmlROxNpEzsUbzsSBzsOaVE7E2kiOxVAEDsWQBE7HUAQOx5AFjBbBm86G1Nhc3M6OlRyZWU6OlJldHVybk5vZGULOgpAZXhwcm87DAs7CUkiCXNwYW4GOwpUOw1JIglzcGFuBjsKVDsOaVI7D287EAk7EW87Egc7DmlSOxNpFDsUbzsSBzsOaVI7E2kZOxVAEDsWQBE7HUAQOx5AFjoOQGNoaWxkcmVuWwA7HTA7HkAWOw5pUjsPbzsQCTsRbzsSBzsOaVI7E2kMOxRvOxIHOw5pUjsTaRk7FUAQOxZAEW86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ47CUkiDWxvY2F0aW9uBjsKVDoKQGV4cHJvOwcPOwgwOwlJIhZzdS12YWxpZC1sb2NhdGlvbgY7ClQ7C1sIbzsMCzsJSSIJc3BhbgY7ClQ7DUkiCXNwYW4GOwpUOw5pVTsPbzsQCTsRbzsSBzsOaVU7E2knOxRvOxIHOw5pVTsTaSw7FUAQOxZAETsdQBA7HkAWbzsMCzsJSSINbG9jYXRpb24GOwpUOw1JIg1sb2NhdGlvbgY7ClQ7DmlVOw9vOxAJOxFvOxIHOw5pVTsTaS47FG87Egc7DmlVOxNpNzsVQBA7FkAROx1AEDseQBZvOwwLOwlJIgxjb2x1bW5zBjsKVDsNSSIMY29sdW1ucwY7ClQ7DmlVOw9vOxAJOxFvOxIHOw5pVTsTaTk7FG87Egc7DmlVOxNpQTsVQBA7FkAROx1AEDseQBY7H287IAc7IXsAOyJ7ADsjMDskMDsOaVU7D287EAk7EW87Egc7DmlVOxNpFTsUbzsSBzsOaVU7E2lCOxVAEDsWQBE7HUAQOx5AFjoNQGd1YXJkZWQwOgxAZ2xvYmFsMDoOQGNoaWxkcmVuWwA7HTA7HkAWOw5pVTsPbzsQCTsRbzsSBzsOaVU7E2kLOxRvOxIHOw5pVTsTaUI7FUAQOxZAEW87Lw47CUkiCXNwYW4GOwpUOzBvOwcPOwgwOwlJIg1zdS1zbGljZQY7ClQ7C1sIbzsMCzsJSSIJc3BhbgY7ClQ7DUkiCXNwYW4GOwpUOw5pVjsPbzsQCTsRbzsSBzsOaVY7E2kaOxRvOxIHOw5pVjsTaR87FUAQOxZAETsdQBA7HkAWbzsMCzsJSSIMY29sdW1ucwY7ClQ7DUkiDGNvbHVtbnMGOwpUOw5pVjsPbzsQCTsRbzsSBzsOaVY7E2khOxRvOxIHOw5pVjsTaSk7FUAQOxZAETsdQBA7HkAWbzsMCzsJSSINbG9jYXRpb24GOwpUOw1JIg1sb2NhdGlvbgY7ClQ7DmlWOw9vOxAJOxFvOxIHOw5pVjsTaSs7FG87Egc7DmlWOxNpNDsVQBA7FkAROx1AEDseQBY7H287IAc7IXsGSSINdmFsaWRhdGUGOwpUSSINdmFsaWRhdGUGOwpUOyJ7BkkiDXZhbGlkYXRlBjsKVG87Jgk7J286HlNhc3M6OlNjcmlwdDo6VmFsdWU6OkJvb2wIOydGOx5AFjsPbzsQCTsRbzsSBzsOaRI7E2kkOxRvOxIHOw5pEjsTaSk7FUkieS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3V0aWxpdGllcy5zY3NzBjsKVDsWQBE7DmlWOw9vOxAJOxFvOxIHOw5pVjsTaUE7FG87Egc7DmlWOxNpRjsVQBA7FkAROx1AEDsjMDskMDsOaVY7D287EAk7EW87Egc7DmlWOxNpETsUbzsSBzsOaVY7E2lHOxVAEDsWQBE7HUAQOx5AFjsxMDsyMDszWwA7HTA7HkAWOw5pVjsPbzsQCTsRbzsSBzsOaVY7E2kLOxRvOxIHOw5pVjsTaUc7FUAQOxZAEXU7MwKwCAQIWwhvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkZ1bmNhbGwPOg5AY2FsbGFibGUwOgpAbmFtZUkiGl9zdS1uZWVkcy1jYWxjLW91dHB1dAY6BkVUOgpAYXJnc1sKbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs7B0kiCXNwYW4GOwhUOhZAdW5kZXJzY29yZWRfbmFtZUkiCXNwYW4GOwhUOgpAbGluZWlZOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsMaVk6DEBvZmZzZXRpIjoNQGVuZF9wb3NvOxAHOwxpWTsRaSc6CkBmaWxlSSJ3L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsIVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFy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c3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7DGlfOgxAb2Zmc2V0aRU6DUBlbmRfcG9zbzsQBzsMaV87EWkgOgpAZmlsZUkidy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3N1LW1hdGguc2NzcwY7CFQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsIRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CFQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQA86DUBvcHRpb25zewA6DkBrZXl3b3Jkc286HlNhc3M6OlV0aWw6Ok5vcm1hbGl6ZWRNYXAHOhFAa2V5X3N0cmluZ3N7ADoJQG1hcHsAOgtAc3BsYXQwOhFAa3dhcmdfc3BsYXQwOwxpXzsNbzsOCTsPbzsQBzsMaV87EWkMOxJvOxAHOwxpXzsRaSE7E0APOxRAEDsbQA87HEAVMFsIbzodU2Fzczo6VHJlZTo6VmFyaWFibGVOb2RlDjsHSSIVY29udGFpbmVyLXNwcmVhZAY7CFQ6CkBleHBybzsADzsGMDsHSSIUc3UtdmFsaWQtc3ByZWFkBjsIVDsJWwZvOwoLOwdJIhVjb250YWluZXItc3ByZWFkBjsIVDsLSSIVY29udGFpbmVyX3NwcmVhZAY7CFQ7DGlgOw1vOw4JOw9vOxAHOwxpYDsRaS07Em87EAc7DGlgOxFpPjsTQA87FEAQOxtADzscQBU7HW87Hgc7H3sAOyB7ADshMDsiMDsMaWA7DW87Dgk7D287EAc7DGlgOxFpHTsSbzsQBzsMaWA7EWk/OxNA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ZXJzaW9uIG9mIGBzdXN5LWd1dHRlcmAsCiAqLyB3aXRoIGFsbCBvZiB0aGUgbG9naWMgYW5kIG5vbmUgb2YgdGhlIHN5bnRheCBzdWdhci4KICovCiAqLyAtIEdyaWRzIGRlZmluZWQgd2l0aCB1bml0bGVzcyBudW1iZXJzIHdpbGwgcmV0dXJuIGAlYCB2YWx1ZXMuCiAqLyAtIEdyaWRzIGRlZmluZWQgd2l0aCBjb21wYXJhYmxlIHVuaXRzCiAqLyAgIHdpbGwgcmV0dXJuIGEgdmFsdWUgaW4gdGhlIHVuaXRzIHByb3ZpZGVkLgogKi8gLSBHcmlkcyBkZWZpbmVkIHdpdGggYSBtaXggb2YgdW5pdHMsCiAqLyAgIG9yIGEgY29tYmluYXRpb24gb2YgdW50aWxlc3MgbnVtYmVycyBhbmQgdW5pdC1sZW5ndGhzLAogKi8gICB3aWxsIHJldHVybiBhIGBjYWxjKClgIHN0cmluZy4KICovCiAqLyBAZ3JvdXAgc3UtbWF0aAogKi8gQHNlZSBzdXN5LWd1dHRlcgogKi8KICovIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLQogKi8gICBMaXN0IG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQKICovIEBwYXJhbSB7bnVtYmVyfSAkZ3V0dGVycyAtCiAqLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGluIGNvbHVtbi1jb21wYXJhYmxlIHVuaXRzCiAqLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRjb250YWluZXItc3ByZWFkIC0KICovICAgTnVtYmVyIG9mIGd1dHRlcnMgc3Bhbm5lZCwKICovICAgcmVsYXRpdmUgdG8gYGNvbHVtbnNgIGNvdW50CiAqLwogKi8gQHJldHVybiB7bGVuZ3RofSAtCiAqLyAgIFJlbGF0aXZlIG9yIHN0YXRpYyBsZW5ndGggb2Ygb25lIGd1dHRlciBpbiBhIGdyaWQgKi8GOwlUOwo7CzsGWwA7DDA7DUALOw5pajsPbzsQCTsRbzsSBzsOaWo7E2kGOxRvOxIHOw5pAX87E2k9OxVADzsWQBBvOx0OOx5JIg5zdS1ndXR0ZXIGOwlUOx9bCFsHbzsgCzseSSIMY29sdW1ucwY7CVQ7IUkiDGNvbHVtbnMGOwlUOw5pAYE7D287EAk7EW87Egc7DmkBgTsTaQg7FG87Egc7DmkBgTsTaRA7FUAPOxZAEDsMQA87DUALMFsHbzsgCzseSSIMZ3V0dGVycwY7CVQ7IUkiDGd1dHRlcnMGOwlUOw5pAYI7D287EAk7EW87Egc7DmkBgjsTaQg7FG87Egc7DmkBgjsTaRA7FUAPOxZAEDsMQA87DUALMFsHbzsgCzseSSIVY29udGFpbmVyLXNwcmVhZAY7CVQ7IUkiFWNvbnRhaW5lcl9zcHJlYWQGOwlUOw5pAYM7D287EAk7EW87Egc7DmkBgzsTaQg7FG87Egc7DmkBgzsTaRk7FUAPOxZAEDsMQA87DUALMDsnMDsGWwl1OzMCvwoECFsIbzoiU2Fzczo6U2NyaXB0OjpUcmVlOjpPcGVyYXRpb24MOg5Ab3BlcmFuZDFvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkZ1bmNhbGwPOg5AY2FsbGFibGUwOgpAbmFtZUkiDHR5cGUtb2YGOgZFVDoKQGFyZ3NbBm86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOwlJIgxndXR0ZXJzBjsKVDoWQHVuZGVyc2NvcmVkX25hbWVJIgxndXR0ZXJzBjsKVDoKQGxpbmVpAYU6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOw5pAYU6DEBvZmZzZXRpFToNQGVuZF9wb3NvOxIHOw5pAYU7E2kdOgpAZmlsZUkidy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3N1LW1hdGguc2NzcwY7ClQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsKRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7ClQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQBA6DUBvcHRpb25zewA6DkBrZXl3b3Jkc286HlNhc3M6OlV0aWw6Ok5vcm1hbGl6ZWRNYXAHOhFAa2V5X3N0cmluZ3N7ADoJQG1hcHsAOgtAc3BsYXQwOhFAa3dhcmdfc3BsYXQwOw5pAYU7D287EAk7EW87Egc7DmkBhTsTaQ07FG87Egc7DmkBhTsTaR47FUAQOxZAETsdQBA7HkAWOg5Ab3BlcmFuZDJvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkxpdGVyYWwJOgtAdmFsdWVvOiBTYXNzOjpTY3JpcHQ6OlZhbHVlOjpTdHJpbmcJOydJIgtudW1iZXIGOwpUOx5AFjoKQHR5cGU6C3N0cmluZzoiQGRlcHJlY2F0ZWRfaW50ZXJwX2VxdWl2YWxlbnQwOw5pAYU7D287EAk7EW87Egc7DmkBhTsTaSI7FG87Egc7DmkBhTsTaSo7FUAQOxZAETsdQBA6DkBvcGVyYXRvcjoHZXE7DmkBhTsPbzsQCTsRQBs7FG87Egc7DmkBhTsTaSo7FUAQOxZAETsdQBA7HkAWMFsGdToXU2Fzczo6VHJlZTo6SWZOb2RlAjgGBAhbCG86IlNhc3M6OlNjcmlwdDo6VHJlZTo6T3BlcmF0aW9uDDoOQG9wZXJhbmQxbzsADDsGbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs6CkBuYW1lSSIMZ3V0dGVycwY6BkVUOhZAdW5kZXJzY29yZWRfbmFtZUkiDGd1dHRlcnMGOwlUOgpAbGluZWkBhjoSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7C2kBhjoMQG9mZnNldGkPOg1AZW5kX3Bvc287Dwc7C2kBhjsQaRc6CkBmaWxlSSJ3L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsJVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADjoNQG9wdGlvbnN7ADoOQG9wZXJhbmQybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXRlcmFsCToLQHZhbHVlbzogU2Fzczo6U2NyaXB0OjpWYWx1ZTo6TnVtYmVyCjseaQA7G0AUOhVAbnVtZXJhdG9yX3VuaXRzWwA6F0BkZW5vbWluYXRvcl91bml0c1sAOg5Ab3JpZ2luYWwwOwtpAYY7DG87DQk7Dm87Dwc7C2kBhjsQaRs7EW87Dwc7C2kBhjsQaRw7EkAOOxNADzsaQA46DkBvcGVyYXRvcjoHZXE7C2kBhjsMbzsNCTsOQAw7EW87Dwc7C2kBhjsQaRw7EkAOOxNADzsaQA47G0AUOxxvOidTYXNzOjpTY3JpcHQ6OlRyZWU6OlVuYXJ5T3BlcmF0aW9uCzoNQG9wZXJhbmRvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkZ1bmNhbGwPOg5AY2FsbGFibGUwOwhJIg11bml0bGVzcwY7CVQ6CkBhcmdzWwZvOwcLOwhJIgxndXR0ZXJzBjsJVDsKSSIMZ3V0dGVycwY7CVQ7C2kBhjsMbzsNCTsObzsPBzsLaQGGOxBpLzsRbzsPBzsLaQGGOxBpNzsSQA47E0APOxpADjsbQBQ6DkBrZXl3b3Jkc286HlNhc3M6OlV0aWw6Ok5vcm1hbGl6ZWRNYXAHOhFAa2V5X3N0cmluZ3N7ADoJQG1hcHsAOgtAc3BsYXQwOhFAa3dhcmdfc3BsYXQwOwtpAYY7DG87DQk7Dm87Dwc7C2kBhjsQaSY7EW87Dwc7C2kBhjsQaTg7EkAOOxNADzsaQA47G0AUOyM6CG5vdDsLaQGGOwxvOw0JOw5vOw8HOwtpAYY7EGkmOxFvOw8HOwtpAYY7EGk4OxJADjsTQA87GkAOOxtAFDsjOgdvcjsLaQGGOwxvOw0JOw5ADDsRbzsPBzsLaQGGOxBpOjsSQA47E0APOxpADjsbQBQwWwZvOhtTYXNzOjpUcmVlOjpSZXR1cm5Ob2RlCzoKQGV4cHJvOwcLOwhJIgxndXR0ZXJzBjsJVDsKSSIMZ3V0dGVycwY7CVQ7C2kBhzsMbzsNCTsObzsPBzsLaQGHOxBpFDsRbzsPBzsLaQGHOxBpHDsSQA47E0APOxpADjsbQBQ6DkBjaGlsZHJlblsAOxowOxtAFDsLaQGHOwxvOw0JOw5vOw8HOwtpAYc7EGkMOxFvOw8HOwtpAYc7EGkcOxJADjsTQA91OzMCMAkECFsIbzogU2Fzczo6U2NyaXB0OjpUcmVlOjpGdW5jYWxsDzoOQGNhbGxhYmxlMDoKQG5hbWVJIhpfc3UtbmVlZHMtY2FsYy1vdXRwdXQGOgZFVDoKQGFyZ3NbCm86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOwdJIgxndXR0ZXJzBjsIVDoWQHVuZGVyc2NvcmVkX25hbWVJIgxndXR0ZXJzBjsIVDoKQGxpbmVpAYs6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwxpAYs6DEBvZmZzZXRpIjoNQGVuZF9wb3NvOxAHOwxpAYs7EWkqOgpAZmlsZUkidy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3N1LW1hdGguc2NzcwY7CFQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsIRjoPQHJlYWxfcm9vdEki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bmRfcG9zbzsNBzsJaQGwOw5pFToKQGZpbGVJIncvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19zdS1tYXRoLnNjc3MGOwdUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7B0Y6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUAMOg1Ab3B0aW9uc3sAMFsHbzodU2Fzczo6VHJlZTo6VmFyaWFibGVOb2RlDjsGSSIMY29sdW1ucwY7B1Q6CkBleHBybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpGdW5jYWxsDzoOQGNhbGxhYmxlMDsGSSIVc3UtdmFsaWQtY29sdW1ucwY7B1Q6CkBhcmdzWwZvOwALOwZJIgxjb2x1bW5zBjsHVDsISSIMY29sdW1ucwY7B1Q7CWkBsTsKbzsLCTsMbzsNBzsJaQGxOw5pJTsPbzsNBzsJaQGxOw5pLTsQQAw7EUANOxhADDsZQBI6DkBrZXl3b3Jkc286HlNhc3M6OlV0aWw6Ok5vcm1hbGl6ZWRNYXAHOhFAa2V5X3N0cmluZ3N7ADoJQG1hcHsAOgtAc3BsYXQwOhFAa3dhcmdfc3BsYXQwOwlpAbE7Cm87Cwk7DG87DQc7CWkBsTsOaRQ7D287DQc7CWkBsTsOaS47EEAMOxFADTsYQAw7GUASOg1AZ3VhcmRlZDA6DEBnbG9iYWwwOg5AY2hpbGRyZW5bADsYMDsZQBI7CWkBsTsKbzsLCTsMbzsNBzsJaQGxOw5pCzsPbzsNBzsJaQGxOw5pLjsQQAw7EUANbzsaDjsGSSINbG9jYXRpb24GOwdUOxtv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ewA7JzA7MDA7DmkBuTsPbzsQCTsRbzsSBzsOaQG5OxNpGDsUbzsSBzsOaQG5OxNpPzsVQA87FkAQOwxADzsNQAs7MTA7MjA7BlsAOwwwOw1ACzsOaQG5Ow9vOxAJOxFvOxIHOw5pAbk7E2kLOxRvOxIHOw5pAbk7E2k/OxVADzsWQBA7DDA7DUALOw5pAbg7D287EAk7EW87Egc7DmkBuDsTaQg7FG87Egc7DmkBuDsTaTc7FUAPOxZAEDs2VHU7MwJNCQQIWwhvOiJTYXNzOjpTY3JpcHQ6OlRyZWU6Ok9wZXJhdGlvbgw6DkBvcGVyYW5kMW86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOgpAbmFtZUkiCmZsb29yBjoGRVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSIKZmxvb3IGOwlUOgpAbGluZWkBvDoSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7C2kBvDoMQG9mZnNldGkMOg1AZW5kX3Bvc287Dwc7C2kBvDsQaRI6CkBmaWxlSSJ3L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsJVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADToNQG9wdGlvbnN7ADoOQG9wZXJhbmQybzsHCzsISSIJc3BhbgY7CVQ7CkkiCXNwYW4GOwlUOwtpAbw7DG87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BzsOaQHcOxNpEDsVQA87FkAQOwxADzsNQAswWwdvOyALOx5JIgtzcHJlYWQGOwlUOyFJIgtzcHJlYWQGOwlUOw5pAd07D287EAk7EW87Egc7DmkB3TsTaQg7FG87Egc7DmkB3TsTaQ87FUAPOxZAEDsMQA87DUALMFsHbzsgCzseSSINdmFsaWRhdGUGOwlUOyFJIg12YWxpZGF0ZQY7CVQ7DmkB3jsPbzsQCTsRbzsSBzsOaQHeOxNpCDsUbzsSBzsOaQHeOxNpETsVQA87FkAQOwxADzsNQAtvOyIJOwhAAnYBOw5pAd47D287EAk7EW87Egc7DmkB3jsTaRM7FG87Egc7DmkB3jsTaRc7FUAPOxZAEDsMQA87JzA7BlsMdTszAngGBAhbCG86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOgpAbmFtZUkiDXZhbGlkYXRlBjoGRVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSINdmFsaWRhdGUGOwdUOgpAbGluZWkB4DoSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7CWkB4DoMQG9mZnNldGkMOg1AZW5kX3Bvc287DQc7CWkB4DsOaRU6CkBmaWxlSSJ3L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsHVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADDoN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Q2FsYwogKiAtLS0tLS0tCiAqLyBSZXR1cm4gYSB1c2FibGUgc3BhbiB3aWR0aCBhcyBhIGBjYWxjKClgIGZ1bmN0aW9uLAogKi8gaW4gb3JkZXIgdG8gY3JlYXRlIG1peGVkLXVuaXQgZ3JpZHMuCiAqLwogKi8gQGdyb3VwIHN1LW1hdGgKICovIEBhY2Nlc3MgcHJpdmF0ZQogKi8KICovIEBwYXJhbSB7bnVtYmVyIHwgbGlzdH0gJHNwYW4gLQogKi8gICBQcmUtc2xpY2VkIGxpc3Qgb2YgZ3JpZCBjb2x1bW5zIHRvIHNwYW4KICovIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLQogKi8gICBMaXN0IG9mIGNvbHVtbnMgYXZhaWxhYmxlCiAqLyBAcGFyYW0ge251bWJlcn0gJGd1dHRlcnMgLQogKi8gICBXaWR0aCBvZiBhIGd1dHRlciBpbiBjb2x1bW4tY29tcGFyYWJsZSB1bml0cwogKi8gQHBhcmFtIHswIHwgMSB8IC0xfSAkc3ByZWFkIC0KICovICAgTnVtYmVyIG9mIGd1dHRlcnMgc3Bhbm5lZCwKICovICAgcmVsYXRpdmUgdG8gYHNwYW5gIGNvdW50CiAqLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRjb250YWluZXItc3ByZWFkIFskc3ByZWFkXSAtCiAqLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsCiAqLyAgIHJlbGF0aXZlIHRvIGBjb2x1bW5zYCBjb3VudAogKi8gQHBhcmFtIHtib29sfSAkdmFsaWRhdGUgW3RydWVdIC0KICovICAgQ2hlY2sgdGhhdCBhcmd1bWVudHMgYXJlIHZhbGlkIGJlZm9yZSBwcm9jZWVkaW5nCiAqLwogKi8gQHJldHVybiB7bGVuZ3RofSAtCiAqLyAgIFJlbGF0aXZlIG9yIHN0YXRpYyBsZW5ndGggb2YgYSBzcGFuIG9uIHRoZSBncmlkICovBjsJVDsKOws7BlsAOwwwOw1ACzsOaQH0Ow9vOxAJOxFvOxIHOw5pAfQ7E2kGOxRvOxIHOw5pAgwBOxNpOzsVQA87FkAQbzsdDjseSSISX3N1LWNhbGMtc3BhbgY7CVQ7H1sLWwdvOyALOx5JIglzcGFuBjsJVDshSSIJc3BhbgY7CVQ7DmkCDgE7D287EAk7EW87Egc7DmkCDgE7E2kIOxRvOxIHOw5pAg4BOxNpDTsVQA87FkAQOwxADzsNQAswWwdvOyALOx5JIgxjb2x1bW5zBjsJVDshSSIMY29sdW1ucwY7CVQ7DmkCDwE7D287EAk7EW87Egc7DmkCDwE7E2kIOxRvOxIHOw5pAg8BOxNpEDsVQA87FkAQOwxADzsNQAswWwdvOyALOx5JIgxndXR0ZXJzBjsJVDshSSIMZ3V0dGVycwY7CVQ7DmkCEAE7D287EAk7EW87Egc7DmkCEAE7E2kIOxRvOxIHOw5pAhABOxNpEDsVQA87FkAQOwxADzsNQAswWwdvOyALOx5JIgtzcHJlYWQGOwlUOyFJIgtzcHJlYWQGOwlUOw5pAhEBOw9vOxAJOxFvOxIHOw5pAhEBOxNpCDsUbzsSBzsOaQIRATsTaQ87FUAPOxZAEDsMQA87DUALMFsHbzsgCzseSSIVY29udGFpbmVyLXNwcmVhZAY7CVQ7IUkiFWNvbnRhaW5lcl9zcHJlYWQGOwlUOw5pAhIBOw9vOxAJOxFvOxIHOw5pAhIBOxNpCDsUbzsSBzsOaQISATsTaRk7FUAPOxZAEDsMQA87DUALbzsgCzseSSILc3ByZWFkBjsJVDshSSILc3ByZWFkBjsJVDsOaQISATsPbzsQCTsRbzsSBzsOaQISATsTaRs7FG87Egc7DmkCEgE7E2kiOxVADzsWQBA7DEAPOw1AC1sHbzsgCzseSSINdmFsaWRhdGUGOwlUOyFJIg12YWxpZGF0ZQY7CVQ7DmkCEwE7D287EAk7EW87Egc7DmkCEwE7E2kIOxRvOxIHOw5pAhMBOxNpETsVQA87FkAQOwxADzsNQAtvOyIJOwhAAnYBOw5pAhMBOw9vOxAJOxFvOxIHOw5pAhMBOxNpEzsUbzsSBzsOaQITATsTaRc7FUAPOxZAEDsMQA87JzA7BlsUdTszAgUJBAhbCG86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOgpAbmFtZUkiDXZhbGlkYXRlBjoGRVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSINdmFsaWRhdGUGOwdUOgpAbGluZWkCFQE6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwlpAhUBOgxAb2Zmc2V0aQw6DUBlbmRfcG9zbzsNBzsJaQIVATsOaRU6CkBmaWxlSSJ3L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsHVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADDoNQG9wdGlvbnN7ADBbCm86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ47BkkiCXNwYW4GOwdUOgpAZXhwcm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6RnVuY2FsbA86DkBjYWxsYWJsZTA7BkkiEnN1LXZhbGlkLXNwYW4GOwdUOgpAYXJnc1sGbzsACzsGSSIJc3BhbgY7B1Q7CEkiCXNwYW4GOwdUOwlpAhYBOwpvOwsJOwxvOw0HOwlpAhYBOw5pHzsPbzsNBzsJaQIWATsOaSQ7EEAMOxFADTsYQAw7GUASOg5Aa2V5d29yZHNvOh5TYXNzOjpVdGlsOjpOb3JtYWxpemVkTWFwBzoRQGtleV9zdHJpbmdzewA6CUBtYXB7ADoLQHNwbGF0MDoRQGt3YXJnX3NwbGF0MDsJaQIWATsKbzsLCTsMbzsNBzsJaQIWATsOaRE7D287DQc7CWkCFgE7DmklOxBADDsRQA07GEAMOxlAEjoNQGd1YXJkZWQwOgxAZ2xvYmFsMDoOQGNoaWxkcmVuWwA7GDA7GUASOwlpAhYBOwpvOwsJOwxvOw0HOwlpAhYB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ADsMMDsNQAs7DmkCKgE7D287EAk7EW87Egc7DmkCKgE7E2kIOxRvOxIHOw5pAioBOxNpFzsVQA87FkAQdTszAkEQBAhbCG86J1Nhc3M6OlNjcmlwdDo6VHJlZTo6VW5hcnlPcGVyYXRpb24LOg1Ab3BlcmFuZG86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOgpAbmFtZUkiD2ZsdWlkLXNwYW4GOgZFVDoWQHVuZGVyc2NvcmVkX25hbWVJIg9mbHVpZF9zcGFuBjsJVDoKQGxpbmVpAisBOhJAc291cmNlX3JhbmdlbzoYU2Fzczo6U291cmNlOjpSYW5nZQk6D0BzdGFydF9wb3NvOhtTYXNzOjpTb3VyY2U6OlBvc2l0aW9uBzsLaQIrAToMQG9mZnNldGkROg1AZW5kX3Bvc287Dwc7C2kCKwE7EGkcOgpAZmlsZUkidy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3N1LW1hdGguc2NzcwY7CVQ6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CVQ6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQA06DUBvcHRpb25zewA6DkBvcGVyYXRvcjoIbm90OwtpAisBOwxvOw0JOw5vOw8HOwtpAisBOxBpETsRbzsPBzsLaQIrATsQaRw7EkANOxNADjsaQA07G0ATdToXU2Fzczo6VHJlZTo6SWZOb2RlAiYMBAhbCG86IlNhc3M6OlNjcmlwdDo6VHJlZTo6T3BlcmF0aW9uDDoOQG9wZXJhbmQxbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs6CkBuYW1lSSIPZmx1aWQtc3BhbgY6BkVUOhZAdW5kZXJzY29yZWRfbmFtZUkiD2ZsdWlkX3NwYW4GOwlUOgpAbGluZWkCLQE6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwtpAi0BOgxAb2Zmc2V0aRQ6DUBlbmRfcG9zbzsPBzsLaQItATsQaR86CkBmaWxlSSJ3L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsJVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADToNQG9wdGlvbnN7ADoOQG9wZXJhbmQybzsHCzsISSISZmx1aWQtY29udGV4dAY7CVQ7CkkiEmZsdWlkX2NvbnRleHQGOwlUOwtpAi0BOwxvOw0JOw5vOw8HOwtpAi0BOxBpIzsRbzsPBzsLaQItATsQaTE7EkANOxNADjsaQA07G0ATOg5Ab3BlcmF0b3I6CG5lcTsLaQItATsMbzsNCTsOQAs7EW87Dwc7C2kCLQE7EGkxOxJADTsTQA47GkANOxtAEzBbCG86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ47CEkiD2ZsdWlkLXNwYW4GOwlUOgpAZXhwcm86LFNhc3M6OlNjcmlwdDo6VHJlZTo6U3RyaW5nSW50ZXJwb2xhdGlvbgw6DEBiZWZvcmVvOiBT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bmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9zdXN5L3N1c3kvX3N1LW1hdGguc2NzcwY7B1Q6DkBpbXBvcnRlcm86IFNhc3M6OkltcG9ydGVyczo6RmlsZXN5c3RlbQg6CkByb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHRjoPQHJlYWxfcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7B1Q6GEBzYW1lX25hbWVfd2FybmluZ3NvOghTZXQGOgpAaGFzaH0ARjoOQGZpbGVuYW1lQAw6DUBvcHRpb25zewAwWwdvOh1TYXNzOjpUcmVlOjpWYXJpYWJsZU5vZGUOOwZJIgljYWxjBjsHVDoKQGV4cHJvOiBTYXNzOjpTY3JpcHQ6OlRyZWU6OkZ1bmNhbGwPOg5AY2FsbGFibGUwOwZJIgdpZgY7B1Q6CkBhcmdzWwhvOiJTYXNzOjpTY3JpcHQ6OlRyZWU6Ok9wZXJhdGlvbgw6DkBvcGVyYW5kMW87AAs7BkkiCWNhbGMGOwdUOwhJIgljYWxjBjsHVDsJaQI0ATsKbzsLCTsMbzsNBzsJaQI0ATsOaRU7D287DQc7CWkCNAE7DmkaOxBADDsRQA07GEAMOxlAEjoOQG9wZXJhbmQybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXRlcmFsCToLQHZhbHVlbzogU2Fzczo6U2NyaXB0OjpWYWx1ZTo6U3RyaW5nCTsjSSIABjsHVDsZQBI6CkB0eXBlOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDsJaQI0ATsKbzsLCTsMbzsNBzsJaQI0ATsOaR47D287DQc7CWkCNAE7DmkgOxBADDsRQA07GEAMOg5Ab3BlcmF0b3I6CG5lcTsJaQI0ATsKbzsLCTsMQB47D287DQc7CWkCNAE7DmkgOxBADDsRQA07GEAMOxlAEm86LFNhc3M6OlNjcmlwdDo6VHJlZTo6U3RyaW5nSW50ZXJw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BzsOaQJmATsTaSU7FUAPOxZAEDsMQA87DUALbzsgCzseSSIMZ3V0dGVycwY7CVQ7IUkiDGd1dHRlcnMGOwlUOw5pAmYBOw9vOxAJOxFvOxIHOw5pAmYBOxNpJzsUbzsSBzsOaQJmATsTaS87FUAPOxZAEDsMQA87DUALOyxvOy0HOy57ADsvewA7JzA7MDA7DmkCZgE7D287EAk7EW87Egc7DmkCZgE7E2kWOxRvOxIHOw5pAmYBOxNpMDsVQA87FkAQOwxADzsNQAs7BlsGdTszAj8JBAhbCG86IFNhc3M6OlNjcmlwdDo6VHJlZTo6RnVuY2FsbA86DkBjYWxsYWJsZTA6CkBuYW1lSSINdW5pdGxlc3MGOgZFVDoKQGFyZ3NbBm86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOwdJIghjb2wGOwhUOhZAdW5kZXJzY29yZWRfbmFtZUkiCGNvbAY7CFQ6CkBsaW5laQJnAToSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7DGkCZwE6DEBvZmZzZXRpFzoNQGVuZF9wb3NvOxAHOwxpAmcBOxFpGzoKQGZpbGVJIncvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19zdS1tYXRoLnNjc3MGOwhUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CEY6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwhUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUAPOg1Ab3B0aW9uc3sAOg5Aa2V5d29yZHNvOh5TYXNzOjpVdGlsOjpOb3JtYWxpemVkTWFwBzoRQGtleV9zdHJpbmdzewA6CUBtYXB7ADoLQHNwbGF0MDoRQGt3YXJnX3NwbGF0MDsMaQJnATsNbzsOCTsPbzsQBzsMaQJnATsRaQ47Em87EAc7DGkCZwE7EWkcOxNADzsUQBA7G0APOxxAFXU6F1Nhc3M6OlRyZWU6OklmTm9kZQIxBAQIWwgwMFsGbzodU2Fzczo6VHJlZTo6VmFyaWFibGVOb2RlDjoKQG5hbWVJIgpmaXhlZAY6BkVUOgpAZXhwcm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6RnVuY2FsbA86DkBjYWxsYWJsZTA7BkkiFl9zdS1tYXAtYWRkLXVuaXRzBjsHVDoKQGFyZ3NbB286IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOwZJIgpmaXhlZAY7B1Q6FkB1bmRlcnNjb3JlZF9uYW1lSSIKZml4ZWQGOwdUOgpAbGluZWkCagE6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOw5pAmoBOgxAb2Zmc2V0aSY6DUBlbmRfcG9zbzsSBzsOaQJqATsTaSw6CkBmaWxlSSJ3L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsHVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVAEjoNQG9wdGlvbnN7AG87DAs7BkkiCGNvbAY7B1Q7DUkiCGNvbAY7B1Q7DmkCagE7D287EAk7EW87Egc7DmkCagE7E2kuOxRvOxIHOw5pAmoBOxNpMjsVQBI7FkATOx1AEjseQBg6DkBrZXl3b3Jkc286HlNhc3M6OlV0aWw6Ok5vcm1hbGl6ZWRNYXAHOhFAa2V5X3N0cmluZ3N7ADoJQG1hcHsAOgtAc3BsYXQwOhFAa3dhcmdfc3BsYXQwOw5pAmoBOw9vOxAJOxFvOxIHOw5pAmoBOxNpFDsUbzsSBzsOaQJqATsTaTM7FUASOxZAEzsdQBI7HkAYOg1AZ3VhcmRlZDA6DEBnbG9iYWwwOg5AY2hpbGRyZW5bADsdMDseQBg7DmkCagE7D287EAk7EW87Egc7DmkCagE7E2kNOxRvOxIHOw5pAmoBOxNpMzsVQBI7FkATWwZvOh1TYXNzOjpUcmVlOjpWYXJpYWJsZU5vZGUOOwdJIgpmbHVpZAY7CFQ6CkBleHBybzoiU2Fzczo6U2NyaXB0OjpUcmVlOjpPcGVyYXRpb24MOg5Ab3BlcmFuZDFvOwoLOwdJIgpmbHVpZAY7CFQ7C0kiCmZsdWlkBjsIVDsMaQJoATsNbzsOCTsPbzsQBzsMaQJoATsRaRQ7Em87EAc7DGkCaAE7EWkaOxNADzsUQBA7G0APOxxAFToOQG9wZXJhbmQybzsKCzsHSSIIY29sBjsIVDsLSSIIY29sBjsIVDsMaQJoATsNbzsOCTsPbzsQBzsMaQJoATsRaR07Em87EAc7DGkCaAE7EWkhOxNADzsUQBA7G0APOxxAFToOQG9wZXJhdG9yOglwbHVzOwxpAmgBOw1vOw4JOw9AJTsSbzsQBzsMaQJoATsRaSE7E0APOxRAEDsbQA87HEAVOg1AZ3VhcmRlZDA6DEBnbG9iYWwwOg5AY2hpbGRyZW5bADsbMDscQBU7DGkCaAE7DW87Dgk7D287EAc7DGkCaAE7EWkNOxJvOxAHOwxpAmgBOxFpITsTQA87FEAQOwwwOw1ACzsOaQJmATsPbzsQCTsRbzsSBzsOaQJmATsTaQg7FG87Egc7DmkCZgE7E2kxOxVADzsWQBA7NlRvOwcMOwhbBkkiHi8qIENvbXBpbGUgRml4ZWQgVW5pdHMgKi8GOwlUOwo7CzsGWwA7DDA7DUALOw5pAm4BOw9vOxAJOxFvOxIHOw5pAm4BOxNpCDsUbzsSBzsOaQJuATsTaR47FUAPOxZAEG87Rg07R1sHSSIJdW5pdAY7CVRJIgp0b3RhbAY7CVQ7SG87IAs7HkkiCmZpeGVkBjsJVDshSSIKZml4ZWQGOwlUOw5pAm8BOw9vOxAJOxFvOxIHOw5pAm8BOxNpHzsUbzsSBzsOaQJvATsTaSU7FUAPOxZAEDsMQA87DUALOwZbBnU7MwLeCQQIWwhvOiJTYXNzOjpTY3JpcHQ6OlRyZWU6Ok9wZXJhdGlvbgw6DkBvcGVyYW5kMW86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOgpAbmFtZUkiCnRvdGFsBjoGRVQ6FkB1bmRlcnNjb3JlZF9uYW1lSSIKdG90YWwGOwlUOgpAbGluZWkCcAE6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwtpAnABOgxAb2Zmc2V0aQ86DUBlbmRfcG9zbzsPBzsLaQJwATsQaRU6CkBmaWxlSSJ3L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsJVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADToNQG9wdGlvbnN7ADoOQG9wZXJhbmQybzsADDsGbzogU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXRlcmFsCToLQHZhbHVlbzog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aUE7EkANOxNADjsMMDsNQAs7DmkCbwE7D287EAk7EW87Egc7DmkCbwE7E2kIOxRvOxIHOw5pAm8BOxNpJjsVQA87FkAQOzZUbzsHDDsIWwZJIh4vKiBDYWxjIG51bGwgb3Igc3RyaW5nICovBjsJVDsKOws7BlsAOwwwOw1ACzsOaQJ1ATsPbzsQCTsRbzsSBzsOaQJ1ATsTaQg7FG87Egc7DmkCdQE7E2keOxVADzsWQBB1OzMCAggECFsIbzohU2Fzczo6U2NyaXB0OjpUcmVlOjpWYXJpYWJsZQs6CkBuYW1lSSIJY2FsYwY6BkVUOhZAdW5kZXJzY29yZWRfbmFtZUkiCWNhbGMGOwdUOgpAbGluZWkCdgE6EkBzb3VyY2VfcmFuZ2VvOhhTYXNzOjpTb3VyY2U6OlJhbmdlCToPQHN0YXJ0X3Bvc286G1Nhc3M6OlNvdXJjZTo6UG9zaXRpb24HOwlpAnYBOgxAb2Zmc2V0aQw6DUBlbmRfcG9zbzsNBzsJaQJ2ATsOaRE6CkBmaWxlSSJ3L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsHVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADDoNQG9wdGlvbnN7ADBbBm86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ47BkkiCWNhbGMGOwdUOgpAZXhwcm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6RnVuY2FsbA86DkBjYWxsYWJsZTA7BkkiB2lmBjsH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LzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsHVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwdGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsHVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADDoNQG9wdGlvbnN7ADBbCG86HVNhc3M6OlRyZWU6OlZhcmlhYmxlTm9kZQ47BkkiCXNwYW4GOwdUOgpAZXhwcm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6RnVuY2FsbA86DkBjYWxsYWJsZTA7BkkiEnN1LXZhbGlkLXNwYW4GOwdUOgpAYXJnc1sGbzsACzsGSSIJc3BhbgY7B1Q7CEkiCXNwYW4GOwdUOwlpAqcBOwpvOwsJOwxvOw0HOwlpAqcBOw5pHzsPbzsNBzsJaQKnATsOaSQ7EEAMOxFADTsYQAw7GUASOg5Aa2V5d29yZHNvOh5TYXNzOjpVdGlsOjpOb3JtYWxpemVkTWFwBzoRQGtleV9zdHJpbmdzewA6CUBtYXB7ADoLQHNwbGF0MDoRQGt3YXJnX3NwbGF0MDsJaQKnATsKbzsLCTsMbzsNBzsJaQKnATsOaRE7D287DQc7CWkCpwE7DmklOxBADDsRQA07GEAMOxlAEjoNQGd1YXJkZWQwOgxAZ2xvYmFsMDoOQGNoaWxkcmVuWwA7GDA7GUASOwlpAqcBOwpvOwsJOwxvOw0HOwlpAqcBOw5pCzsPbzsNBzsJaQKnATsOaSU7EEAMOxFADW87Gg47BkkiDGNvbHVtbnMGOwdUOxtvOxwPOx0wOwZJIhVzdS12YWxpZC1jb2x1bW5zBjsHVDseWwZvOwALOwZJIgxjb2x1bW5z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OlNvdXJjZTo6UG9zaXRpb24HOwtpArABOgxAb2Zmc2V0aQ06DUBlbmRfcG9zbzsPBzsLaQKwATsQaRc6CkBmaWxlSSJ3L0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzL21pbmltYWwtbWlzdGFrZXMvdmVuZG9yL3N1c3kvc3VzeS9fc3UtbWF0aC5zY3NzBjsJVDoOQGltcG9ydGVybzogU2Fzczo6SW1wb3J0ZXJzOjpGaWxlc3lzdGVtCDoKQHJvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlGOg9AcmVhbF9yb290SSJHL0xpYnJhcnkvUnVieS9HZW1zLzIuMy4wL2dlbXMvbWluaW1hbC1taXN0YWtlcy1qZWt5bGwtNC4xNC4xL19zYXNzBjsJVDoYQHNhbWVfbmFtZV93YXJuaW5nc286CFNldAY6CkBoYXNofQBGOg5AZmlsZW5hbWVADToNQG9wdGlvbnN7ADoOQG9wZXJhbmQybzogU2Fzczo6U2NyaXB0OjpUcmVlOjpMaXRlcmFsCToLQHZhbHVlbzogU2Fzczo6U2NyaXB0OjpWYWx1ZTo6U3RyaW5nCTseSSILc3RhdGljBjsJVDsbQBM6CkB0eXBlOgtzdHJpbmc6IkBkZXByZWNhdGVkX2ludGVycF9lcXVpdmFsZW50MDsLaQKwATsMbzsNCTsObzsPBzsLaQKwATsQaRs7EW87Dwc7C2kCsAE7EGkjOxJADTsTQA47GkANOg5Ab3BlcmF0b3I6B2VxOwtpArABOwxvOw0JOw5ACzsRbzsPBzsLaQKwATsQaSM7EkANOxNADjsaQA07G0ATdToXU2Fzczo6VHJlZTo6SWZOb2RlAn8EBAhbCG86J1Nhc3M6OlNjcmlwdDo6VHJlZTo6VW5hcnlPcGVyYXRpb24LOg1Ab3BlcmFuZG86IVNhc3M6OlNjcmlwdDo6VHJlZTo6VmFyaWFibGULOgpAbmFtZUkiDnNhZmUtc3BhbgY6BkVUOhZAdW5kZXJzY29yZWRfbmFtZUkiDnNhZmVfc3BhbgY7CVQ6CkBsaW5laQKyAToSQHNvdXJjZV9yYW5nZW86GFNhc3M6OlNvdXJjZTo6UmFuZ2UJOg9Ac3RhcnRfcG9zbzobU2Fzczo6U291cmNlOjpQb3NpdGlvbgc7C2kCsgE6DEBvZmZzZXRpGDoNQGVuZF9wb3NvOw8HOwtpArIBOxBpIjoKQGZpbGVJIncvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MvbWluaW1hbC1taXN0YWtlcy92ZW5kb3Ivc3VzeS9zdXN5L19zdS1tYXRoLnNjc3MGOwlUOg5AaW1wb3J0ZXJvOiBTYXNzOjpJbXBvcnRlcnM6OkZpbGVzeXN0ZW0IOgpAcm9vdEkiRy9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2FzcwY7CUY6D0ByZWFsX3Jvb3RJIkcvTGlicmFyeS9SdWJ5L0dlbXMvMi4zLjAvZ2Vtcy9taW5pbWFsLW1pc3Rha2VzLWpla3lsbC00LjE0LjEvX3Nhc3MGOwlUOhhAc2FtZV9uYW1lX3dhcm5pbmdzbzoIU2V0BjoKQGhhc2h9AEY6DkBmaWxlbmFtZUANOg1Ab3B0aW9uc3sAOg5Ab3BlcmF0b3I6CG5vdDsLaQKyATsMbzsNCTsObzsPBzsLaQKyATsQaRg7EW87Dwc7C2kCsgE7EGkiOxJADTsTQA47GkANOxtAEzBbBm86G1Nhc3M6OlRyZWU6OlJldHVybk5vZGULOgpAZXhwcm86IFNhc3M6OlNjcmlwdDo6VHJlZTo6TGl0ZXJhbAk6C0B2YWx1ZW86HlNhc3M6OlNjcmlwdDo6VmFsdWU6OkJvb2wIOyFUOxtAEzsMbzsNCTsObzsPBzsLaSs7EGksOxFvOw8HOwtpKzsQaTA7EkkifS9MaWJyYXJ5L1J1YnkvR2Vtcy8yLjMuMC9nZW1zL21pbmltYWwtbWlzdGFrZXMtamVreWxsLTQuMTQuMS9fc2Fzcy9taW5pbWFsLW1pc3Rha2VzL3ZlbmRvci9tYWduaWZpYy1wb3B1cC9fc2V0dGluZ3Muc2NzcwY7CVQ7E0AOOwtpArMBOwxvOw0JOw5vOw8HOwtpArMBOxBpEjsR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Y29tcGlsYXRpb24uCi8vLwovLy8gQGdyb3VwIHN1LW1hdGgKLy8vCi8vLyBAc2VlIHN1LXNwYW4KLy8vIEBzZWUgc3UtZ3V0dGVyCi8vLyBAc2VlIHN1LXNsaWNlCi8vLyBAaWdub3JlIF9zdS1zdW0KLy8vIEBpZ25vcmUgX3N1LWNhbGMtc3BhbgovLy8gQGlnbm9yZSBfc3UtY2FsYy1zdW0KLy8vIEBpZ25vcmUgX3N1LW5lZWRzLWNhbGMtb3V0cHV0CgoKCi8vIFN1IFNwYW4KLy8gLS0tLS0tLQovLy8gQ2FsY3VsYXRlcyBhbmQgcmV0dXJucyBhIENTUy1yZWFkeSBzcGFuIHdpZHRoLAovLy8gYmFzZWQgb24gbm9ybWFsaXplZCBzcGFuIGFuZCBjb250ZXh0IGRhdGEg4oCTCi8vLyBhIGxvdy1sZXZlbCB2ZXJzaW9uIG9mIGBzdXN5LXNwYW5gLAovLy8gd2l0aCBhbGwgb2YgdGhlIGxvZ2ljIGFuZCBub25lIG9mIHRoZSBzeW50YXggc3VnYXIuCi8vLwovLy8gLSBHcmlkcyBkZWZpbmVkIHdpdGggdW5pdGxlc3MgbnVtYmVycyB3aWxsIHJldHVybiBgJWAgdmFsdWVzLgovLy8gLSBHcmlkcyBkZWZpbmVkIHdpdGggY29tcGFyYWJsZSB1bml0cwovLy8gICB3aWxsIHJldHVybiBhIHZhbHVlIGluIHRoZSB1bml0cyBwcm92aWRlZC4KLy8vIC0gR3JpZHMgZGVmaW5lZCB3aXRoIGEgbWl4IG9mIHVuaXRzLAovLy8gICBvciBhIGNvbWJpbmF0aW9uIG9mIHVudGlsZXNzIG51bWJlcnMgYW5kIHVuaXQtbGVuZ3RocywKLy8vICAgd2lsbCByZXR1cm4gYSBgY2FsYygpYCBzdHJpbmcuCi8vLwovLy8gQGdyb3VwIHN1LW1hdGgKLy8vIEBzZWUgc3VzeS1zcGFuCi8vLwovLy8gQHBhcmFtIHtudW1iZXIgfCBsaXN0fSAkc3BhbiAtCi8vLyAgIE51bWJlciBvciBsaXN0IG9mIGdyaWQgY29sdW1ucyB0byBzcGFuCi8vLyBAcGFyYW0ge2xpc3R9ICRjb2x1bW5zIC0KLy8vICAgTGlzdCBvZiBjb2x1bW5zIGF2YWlsYWJsZQovLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC0KLy8vICAgV2lkdGggb2YgYSBndXR0ZXIgaW4gY29sdW1uLWNvbXBhcmFibGUgdW5pdHMKLy8vIEBwYXJhbSB7MCB8IDEgfCAtMX0gJHNwcmVhZCAtCi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsCi8vLyAgIHJlbGF0aXZlIHRvIGBzcGFuYCBjb3VudAovLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkY29udGFpbmVyLXNwcmVhZCBbJHNwcmVhZF0gLQovLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLAovLy8gICByZWxhdGl2ZSB0byBgY29sdW1uc2AgY291bnQKLy8vIEBwYXJhbSB7aW50ZWdlcn0gJGxvY2F0aW9uIFsxXSAtCi8vLyAgIE9wdGlvbmFsIHBvc2l0aW9uIG9mIHN1Yi1zcGFuIGFtb25nIGZ1bGwgc2V0IG9mIGNvbHVtbnMKLy8vCi8vLyBAcmV0dXJuIHtsZW5ndGh9IC0KLy8vICAgUmVsYXRpdmUgb3Igc3RhdGljIGxlbmd0aCBvZiBhIHNwYW4gb24gdGhlIGdyaWQKQGZ1bmN0aW9uIHN1LXNwYW4oCiAgJHNwYW4sCiAgJGNvbHVtbnMsCiAgJGd1dHRlcnMsCiAgJHNwcmVhZCwKICAkY29udGFpbmVyLXNwcmVhZDogJHNwcmVhZCwKICAkbG9jYXRpb246IDEKKSB7CiAgJHNwYW46IHN1LXZhbGlkLXNwYW4oJHNwYW4pOwogICRjb2x1bW5zOiBzdS12YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTsKICAkZ3V0dGVyczogc3UtdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7CiAgJHNwcmVhZDogc3UtdmFsaWQtc3ByZWFkKCRzcHJlYWQpOwoKICBAaWYgKHR5cGUtb2YoJHNwYW4pID09ICdudW1iZXInKSB7CiAgICBAaWYgKG5vdCB1bml0bGVzcygkc3BhbikpIHsKICAgICAgQHJldHVybiAkc3BhbjsKICAgIH0KCiAgICAkbG9jYXRpb246IHN1LXZhbGlkLWxvY2F0aW9uKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTsKICAgICRzcGFuOiBzdS1zbGljZSgkc3BhbiwgJGNvbHVtbnMsICRsb2NhdGlvbiwgJHZhbGlkYXRlOiBmYWxzZSk7CiAgfQoKICBAaWYgX3N1LW5lZWRzLWNhbGMtb3V0cHV0KCRzcGFuLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQsIG5vdCAndmFsaWRhdGUnKSB7CiAgICBAcmV0dXJuIF9zdS1jYWxjLXNwYW4oJHNwYW4sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCwgJGNvbnRhaW5lci1zcHJlYWQsIG5vdCAndmFsaWRhdGUnKTsKICB9CgogICRzcGFuLXdpZHRoOiBfc3Utc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCwgJHZhbGlkYXRlOiBmYWxzZSk7CgogIEBpZiB1bml0bGVzcygkc3Bhbi13aWR0aCkgewogICAgJGNvbnRhaW5lci1zcHJlYWQ6IHN1LXZhbGlkLXNwcmVhZCgkY29udGFpbmVyLXNwcmVhZCk7CiAgICAkY29udGFpbmVyOiBfc3Utc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgJGNvbnRhaW5lci1zcHJlYWQsICR2YWxpZGF0ZTogZmFsc2UpOwogICAgQHJldHVybiBwZXJjZW50YWdlKCRzcGFuLXdpZHRoIC8gJGNvbnRhaW5lcik7CiAgfQoKICBAcmV0dXJuICRzcGFuLXdpZHRoOwp9CgoKCi8vIFN1IEd1dHRlcgovLyAtLS0tLS0tLS0KLy8vIENhbGN1bGF0ZXMgYW5kIHJldHVybnMgYSBDU1MtcmVhZHkgZ3V0dGVyIHdpZHRoLAovLy8gYmFzZWQgb24gbm9ybWFsaXplZCBncmlkIGRhdGEg4oCTCi8vLyBhIGxvdy1sZXZlbCB2ZXJzaW9uIG9mIGBzdXN5LWd1dHRlcmAsCi8vLyB3aXRoIGFsbCBvZiB0aGUgbG9naWMgYW5kIG5vbmUgb2YgdGhlIHN5bnRheCBzdWdhci4KLy8vCi8vLyAtIEdyaWRzIGRlZmluZWQgd2l0aCB1bml0bGVzcyBudW1iZXJzIHdpbGwgcmV0dXJuIGAlYCB2YWx1ZXMuCi8vLyAtIEdyaWRzIGRlZmluZWQgd2l0aCBjb21wYXJhYmxlIHVuaXRzCi8vLyAgIHdpbGwgcmV0dXJuIGEgdmFsdWUgaW4gdGhlIHVuaXRzIHByb3ZpZGVkLgovLy8gLSBHcmlkcyBkZWZpbmVkIHdpdGggYSBtaXggb2YgdW5pdHMsCi8vLyAgIG9yIGEgY29tYmluYXRpb24gb2YgdW50aWxlc3MgbnVtYmVycyBhbmQgdW5pdC1sZW5ndGhzLAovLy8gICB3aWxsIHJldHVybiBhIGBjYWxjKClgIHN0cmluZy4KLy8vCi8vLyBAZ3JvdXAgc3UtbWF0aAovLy8gQHNlZSBzdXN5LWd1dHRlcgovLy8KLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLQovLy8gICBMaXN0IG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQKLy8vIEBwYXJhbSB7bnVtYmVyfSAkZ3V0dGVycyAtCi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGluIGNvbHVtbi1jb21wYXJhYmxlIHVuaXRzCi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRjb250YWluZXItc3ByZWFkIC0KLy8vICAgTnVtYmVyIG9mIGd1dHRlcnMgc3Bhbm5lZCwKLy8vICAgcmVsYXRpdmUgdG8gYGNvbHVtbnNgIGNvdW50Ci8vLwovLy8gQHJldHVybiB7bGVuZ3RofSAtCi8vLyAgIFJlbGF0aXZlIG9yIHN0YXRpYyBsZW5ndGggb2Ygb25lIGd1dHRlciBpbiBhIGdyaWQKQGZ1bmN0aW9uIHN1LWd1dHRlcigKICAkY29sdW1ucywKICAkZ3V0dGVycywKICAkY29udGFpbmVyLXNwcmVhZAopIHsKICBAaWYgKHR5cGUtb2YoJGd1dHRlcnMpID09ICdudW1iZXInKSB7CiAgICBAaWYgKCRndXR0ZXJzID09IDApIG9yIChub3QgdW5pdGxlc3MoJGd1dHRlcnMpKSB7CiAgICAgIEByZXR1cm4gJGd1dHRlcnM7CiAgICB9CiAgfQoKICBAaWYgX3N1LW5lZWRzLWNhbGMtb3V0cHV0KCRndXR0ZXJzLCAkY29sdW1ucywgJGd1dHRlcnMsIC0xLCBub3QgJ3ZhbGlkYXRlJykgewogICAgQHJldHVybiBfc3UtY2FsYy1zcGFuKCRndXR0ZXJzLCAkY29sdW1ucywgJGd1dHRlcnMsIC0xLCAkY29udGFpbmVyLXNwcmVhZCwgbm90ICd2YWxpZGF0ZScpOwogIH0KCiAgJGNvbnRhaW5lcjogX3N1LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsICRjb250YWluZXItc3ByZWFkKTsKICBAcmV0dXJuIHBlcmNlbnRhZ2UoJGd1dHRlcnMgLyAkY29udGFpbmVyKTsKfQoKCgovLyBTdSBTbGljZQovLyAtLS0tLS0tLQovLy8gUmV0dXJucyBhIGxpc3Qgb2YgY29sdW1ucwovLy8gYmFzZWQgb24gYSBnaXZlbiBzcGFuL2xvY2F0aW9uIHNsaWNlIG9mIHRoZSBncmlkIOKAkwovLy8gYSBsb3ctbGV2ZWwgdmVyc2lvbiBvZiBgc3VzeS1zbGljZWAsCi8vLyB3aXRoIGFsbCBvZiB0aGUgbG9naWMgYW5kIG5vbmUgb2YgdGhlIHN5bnRheCBzdWdhci4KLy8vCi8vLyBAZ3JvdXAgc3UtbWF0aAovLy8gQHNlZSBzdXN5LXNsaWNlCi8vLwovLy8gQHBhcmFtIHtudW1iZXJ9ICRzcGFuIC0KLy8vICAgTnVtYmVyIG9mIGdyaWQgY29sdW1ucyB0byBzcGFuCi8vLyBAcGFyYW0ge2xpc3R9ICRjb2x1bW5zIC0KLy8vICAgTGlzdCBvZiBjb2x1bW5zIGluIHRoZSBncmlkCi8vLyBAcGFyYW0ge251bWJlcn0gJGxvY2F0aW9uIFsxXSAtCi8vLyAgIFN0YXJ0aW5nIGluZGV4IG9mIGEgc3BhbiBpbiB0aGUgbGlzdCBvZiBjb2x1bW5zCi8vLyBAcGFyYW0ge2Jvb2x9ICR2YWxpZGF0ZSBbdHJ1ZV0gLQovLy8gICBDaGVjayB0aGF0IGFyZ3VtZW50cyBhcmUgdmFsaWQgYmVmb3JlIHByb2NlZWRpbmcKLy8vCi8vLyBAcmV0dXJuIHtsaXN0fSAtCi8vLyAgIFN1YnNldCBsaXN0IG9mIGdyaWQgY29sdW1ucywgYmFzZWQgb24gc3BhbiBhbmQgbG9jYXRpb24KQGZ1bmN0aW9uIHN1LXNsaWNlKAogICRzcGFuLAogICRjb2x1bW5zLAogICRsb2NhdGlvbjogMSwKICAkdmFsaWRhdGU6IHRydWUKKSB7CiAgQGlmICR2YWxpZGF0ZSB7CiAgICAkY29sdW1uczogc3UtdmFsaWQtY29sdW1ucygkY29sdW1ucyk7CiAgICAkbG9jYXRpb246IHN1LXZhbGlkLWxvY2F0aW9uKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTsKICB9CgogICRmbG9vcjogZmxvb3IoJHNwYW4pOwogICRzdWItY29sdW1uczogKCk7CgogIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRmbG9vcikgewogICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7CiAgfQoKICBAaWYgJGZsb29yICE9ICRzcGFuIHsKICAgICRyZW1haW5kZXI6ICRzcGFuIC0gJGZsb29yOwogICAgJGNvbHVtbjogJGxvY2F0aW9uICsgJGZsb29yOwogICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRjb2x1bW4pICogJHJlbWFpbmRlcik7CiAgfQoKICBAcmV0dXJuICRzdWItY29sdW1uczsKfQoKCgovLyBTdSBTdW0KLy8gLS0tLS0tCi8vLyBHZXQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXQuCi8vLwovLy8gQGdyb3VwIHN1LW1hdGgKLy8vIEBhY2Nlc3MgcHJpdmF0ZQovLy8KLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLQovLy8gICBMaXN0IG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQKLy8vIEBwYXJhbSB7bnVtYmVyfSAkZ3V0dGVycyAtCi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGluIGNvbHVtbi1jb21wYXJhYmxlIHVuaXRzCi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRzcHJlYWQgLQovLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLAovLy8gICByZWxhdGl2ZSB0byBgY29sdW1uc2AgY291bnQKLy8vIEBwYXJhbSB7Ym9vbH0gJHZhbGlkYXRlIFt0cnVlXSAtCi8vLyAgIENoZWNrIHRoYXQgYXJndW1lbnRzIGFyZSB2YWxpZCBiZWZvcmUgcHJvY2VlZGluZwovLy8KLy8vIEByZXR1cm4ge251bWJlcn0gLQovLy8gICBUb3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgZ3JpZApAZnVuY3Rpb24gX3N1LXN1bSgKICAkY29sdW1ucywKICAkZ3V0dGVycywKICAkc3ByZWFkLAogICR2YWxpZGF0ZTogdHJ1ZQopIHsKICBAaWYgJHZhbGlkYXRlIHsKICAgICRjb2x1bW5zOiBzdS12YWxpZC1zcGFuKCRjb2x1bW5zKTsKICAgICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTsKICAgICRzcHJlYWQ6IHN1LXZhbGlkLXNwcmVhZCgkc3ByZWFkKTsKICB9CgogIC8vIENhbGN1bGF0ZSBjb2x1bW4tc3VtCiAgJGNvbHVtbi1zdW06IDA7CiAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7CiAgICAkY29sdW1uLXN1bTogJGNvbHVtbi1zdW0gKyAkY29sdW1uOwogIH0KCiAgJGd1dHRlci1zdW06IChjZWlsKGxlbmd0aCgkY29sdW1ucykpICsgJHNwcmVhZCkgKiAkZ3V0dGVyczsKICAkdG90YWw6IGlmKCgkZ3V0dGVyLXN1bSA+IDApLCAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtLCAkY29sdW1uLXN1bSk7CgogIEByZXR1cm4gJHRvdGFsOwp9CgoKCi8vIFN1IENhbGMKLy8gLS0tLS0tLQovLy8gUmV0dXJuIGEgdXNhYmxlIHNwYW4gd2lkdGggYXMgYSBgY2FsYygpYCBmdW5jdGlvbiwKLy8vIGluIG9yZGVyIHRvIGNyZWF0ZSBtaXhlZC11bml0IGdyaWRzLgovLy8KLy8vIEBncm91cCBzdS1tYXRoCi8vLyBAYWNjZXNzIHByaXZhdGUKLy8vCi8vLyBAcGFyYW0ge251bWJlciB8IGxpc3R9ICRzcGFuIC0KLy8vICAgUHJlLXNsaWNlZCBsaXN0IG9mIGdyaWQgY29sdW1ucyB0byBzcGFuCi8vLyBAcGFyYW0ge2xpc3R9ICRjb2x1bW5zIC0KLy8vICAgTGlzdCBvZiBjb2x1bW5zIGF2YWlsYWJsZQovLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC0KLy8vICAgV2lkdGggb2YgYSBndXR0ZXIgaW4gY29sdW1uLWNvbXBhcmFibGUgdW5pdHMKLy8vIEBwYXJhbSB7MCB8IDEgfCAtMX0gJHNwcmVhZCAtCi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsCi8vLyAgIHJlbGF0aXZlIHRvIGBzcGFuYCBjb3VudAovLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkY29udGFpbmVyLXNwcmVhZCBbJHNwcmVhZF0gLQovLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLAovLy8gICByZWxhdGl2ZSB0byBgY29sdW1uc2AgY291bnQKLy8vIEBwYXJhbSB7Ym9vbH0gJHZhbGlkYXRlIFt0cnVlXSAtCi8vLyAgIENoZWNrIHRoYXQgYXJndW1lbnRzIGFyZSB2YWxpZCBiZWZvcmUgcHJvY2VlZGluZwovLy8KLy8vIEByZXR1cm4ge2xlbmd0aH0gLQovLy8gICBSZWxhdGl2ZSBvciBzdGF0aWMgbGVuZ3RoIG9mIGEgc3BhbiBvbiB0aGUgZ3JpZApAZnVuY3Rpb24gX3N1LWNhbGMtc3BhbigKICAkc3BhbiwKICAkY29sdW1ucywKICAkZ3V0dGVycywKICAkc3ByZWFkLAogICRjb250YWluZXItc3ByZWFkOiAkc3ByZWFkLAogICR2YWxpZGF0ZTogdHJ1ZQopIHsKICBAaWYgJHZhbGlkYXRlIHsKICAgICRzcGFuOiBzdS12YWxpZC1zcGFuKCRzcGFuKTsKICAgICRjb2x1bW5zOiBzdS12YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTsKICAgICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTsKICAgICRzcHJlYWQ6IHN1LXZhbGlkLXNwcmVhZCgkc3ByZWFkKTsKICAgICRjb250YWluZXItc3ByZWFkOiBzdS12YWxpZC1zcHJlYWQoJGNvbnRhaW5lci1zcHJlYWQpOwogIH0KCiAgLy8gU3BhbiBhbmQgY29udGV4dAogICRzcGFuOiBfc3UtY2FsYy1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkLCBub3QgJ3ZhbGlkYXRlJyk7CiAgJGNvbnRleHQ6IF9zdS1jYWxjLXN1bSgkY29sdW1ucywgJGd1dHRlcnMsICRjb250YWluZXItc3ByZWFkLCBub3QgJ3ZhbGlkYXRlJyk7CgogIC8vIEZpeGVkIGFuZCBmbHVpZAogICRmaXhlZC1zcGFuOiBtYXAtZ2V0KCRzcGFuLCAnZml4ZWQnKTsKICAkZmx1aWQtc3BhbjogbWFwLWdldCgkc3BhbiwgJ2ZsdWlkJyk7CiAgJGZpeGVkLWNvbnRleHQ6IG1hcC1nZXQoJGNvbnRleHQsICdmaXhlZCcpOwogICRmbHVpZC1jb250ZXh0OiBtYXAtZ2V0KCRjb250ZXh0LCAnZmx1aWQnKTsKCiAgJGNhbGM6ICcjeyRmaXhlZC1zcGFufSc7CiAgJGZsdWlkLWNhbGM6ICcoMTAwJSAtICN7JGZpeGVkLWNvbnRleHR9KSc7CgogIC8vIEZsdWlkLXZhbHVlcwogIEBpZiAobm90ICRmbHVpZC1zcGFuKSB7CiAgICAkZmx1aWQtY2FsYzogbnVsbDsKICB9IEBlbHNlIGlmICgkZmx1aWQtc3BhbiAhPSAkZmx1aWQtY29udGV4dCkgewogICAgJGZsdWlkLXNwYW46ICcqICN7JGZsdWlkLXNwYW59JzsKICAgICRmbHVpZC1jb250ZXh0OiBpZigkZmx1aWQtY29udGV4dCwgJy8gI3skZmx1aWQtY29udGV4dH0nLCAnJyk7CiAgICAkZmx1aWQtY2FsYzogJygjeyRmbHVpZC1jYWxjICRmbHVpZC1jb250ZXh0ICRmbHVpZC1zcGFufSknOwogIH0KCiAgQGlmICRmbHVpZC1jYWxjIHsKICAgICRjYWxjOiBpZigoJGNhbGMgIT0gJycpLCAnI3skY2FsY30gKyAnLCAnJyk7CiAgICAkY2FsYzogJyN7JGNhbGMgKyAkZmx1aWQtY2FsY30nOwogIH0KCiAgQHJldHVybiBjYWxjKCN7dW5xdW90ZSgkY2FsYyl9KTsKfQoKCgovLyBTdSBDYWxjLVN1bQovLyAtLS0tLS0tLS0tLQovLy8gR2V0IHRoZSB0b3RhbCBzdW0gb2YgZml4ZWQgYW5kIGZsdWlkIGNvbHVtbi11bml0cwovLy8gZm9yIGNyZWF0aW5nIGEgbWl4ZWQtdW5pdCBsYXlvdXQgd2l0aCBgY2FsYygpYCB2YWx1ZXMuCi8vLwovLy8gQGdyb3VwIHN1LW1hdGgKLy8vIEBhY2Nlc3MgcHJpdmF0ZQovLy8KLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLQovLy8gICBMaXN0IG9mIGNvbHVtbnMgYXZhaWxhYmxlCi8vLyBAcGFyYW0ge251bWJlcn0gJGd1dHRlcnMgLQovLy8gICBXaWR0aCBvZiBhIGd1dHRlciBpbiBjb2x1bW4tY29tcGFyYWJsZSB1bml0cwovLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkc3ByZWFkIC0KLy8vICAgTnVtYmVyIG9mIGd1dHRlcnMgc3Bhbm5lZCwKLy8vICAgcmVsYXRpdmUgdG8gYHNwYW5gIGNvdW50Ci8vLyBAcGFyYW0ge2Jvb2x9ICR2YWxpZGF0ZSBbdHJ1ZV0gLQovLy8gICBDaGVjayB0aGF0IGFyZ3VtZW50cyBhcmUgdmFsaWQgYmVmb3JlIHByb2NlZWRpbmcKLy8vCi8vLyBAcmV0dXJuIHttYXB9IC0KLy8vICAgTWFwIHdpdGggYGZpeGVkYCBhbmQgYGZsdWlkYCBrZXlzCi8vLyAgIGNvbnRhaW5pbmcgdGhlIHByb3BlciBtYXRoIGFzIHN0cmluZ3MKQGZ1bmN0aW9uIF9zdS1jYWxjLXN1bSgKICAkY29sdW1ucywKICAkZ3V0dGVycywKICAkc3ByZWFkLAogICR2YWxpZGF0ZTogdHJ1ZQopIHsKICBAaWYgJHZhbGlkYXRlIHsKICAgICRjb2x1bW5zOiBzdS12YWxpZC1zcGFuKCRjb2x1bW5zKTsKICAgICRndXR0ZXJzOiBzdS12YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTsKICAgICRzcHJlYWQ6IHN1LXZhbGlkLXNwcmVhZCgkc3ByZWFkKTsKICB9CgogICRmbHVpZDogMDsKICAkZml4ZWQ6ICgpOwogICRjYWxjOiBudWxsOwoKICAvLyBHdXR0ZXJzCiAgJGd1dHRlcnM6ICAkZ3V0dGVycyAqIChsZW5ndGgoJGNvbHVtbnMpICsgJHNwcmVhZCk7CgogIC8vIENvbHVtbnMKICBAZWFjaCAkY29sIGluIGFwcGVuZCgkY29sdW1ucywgJGd1dHRlcnMpIHsKICAgIEBpZiB1bml0bGVzcygkY29sKSB7CiAgICAgICRmbHVpZDogJGZsdWlkICsgJGNvbDsKICAgIH0gQGVsc2UgewogICAgICAkZml4ZWQ6IF9zdS1tYXAtYWRkLXVuaXRzKCRmaXhlZCwgJGNvbCk7CiAgICB9CiAgfQoKICAvLyBDb21waWxlIEZpeGVkIFVuaXRzCiAgQGVhY2ggJHVuaXQsICR0b3RhbCBpbiAkZml4ZWQgewogICAgQGlmICgkdG90YWwgIT0gKDAgKiAkdG90YWwpKSB7CiAgICAgICRjYWxjOiBpZigkY2FsYywgJyN7JGNhbGN9ICsgI3skdG90YWx9JywgJyN7JHRvdGFsfScpOwogICAgfQogIH0KCiAgLy8gQ2FsYyBudWxsIG9yIHN0cmluZwogIEBpZiAkY2FsYyB7CiAgICAkY2FsYzogaWYoc3RyLWluZGV4KCRjYWxjLCAnKycpLCAnKCN7JGNhbGN9KScsICcjeyRjYWxjfScpOwogIH0KCiAgLy8gRmx1aWQgMCA9PiBudWxsCiAgJGZsdWlkOiBpZigoJGZsdWlkID09IDApLCBudWxsLCAkZmx1aWQpOwoKCiAgLy8gUmV0dXJuIG1hcAogICRyZXR1cm46ICgKICAgICdmaXhlZCc6ICRjYWxjLAogICAgJ2ZsdWlkJzogJGZsdWlkLAogICk7CgogIEByZXR1cm4gJHJldHVybjsKfQoKCgovLyBOZWVkcyBDYWxjCi8vIC0tLS0tLS0tLS0KLy8vIENoZWNrIGlmIGBjYWxjKClgIHdpbGwgYmUgbmVlZGVkIGluIGRlZmluaW5nIGEgc3BhbiwKLy8vIGlmIHRoZSBuZWNlc3NhcnkgdW5pdHMgaW4gYSBncmlkIGFyZSBub3QgY29tcGFyYWJsZS4KLy8vCi8vLyBAZ3JvdXAgc3UtbWF0aAovLy8gQGFjY2VzcyBwcml2YXRlCi8vLwovLy8gQHBhcmFtIHtsaXN0fSAkc3BhbiAtCi8vLyAgIFNsaWNlIG9mIGNvbHVtbnMgdG8gc3BhbgovLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtCi8vLyAgIExpc3Qgb2YgYXZhaWxhYmxlIGNvbHVtbnMgaW4gdGhlIGdyaWQKLy8vIEBwYXJhbSB7bnVtYmVyfSAkZ3V0dGVycyAtCi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyCi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRzcHJlYWQgLQovLy8gICBOdW1iZXIgb2YgZ3V0dGVycyBzcGFubmVkLAovLy8gICByZWxhdGl2ZSB0byBgc3BhbmAgY291bnQKLy8vIEBwYXJhbSB7Ym9vbH0gJHZhbGlkYXRlIFt0cnVlXSAtCi8vLyAgIENoZWNrIHRoYXQgYXJndW1lbnRzIGFyZSB2YWxpZCBiZWZvcmUgcHJvY2VlZGluZwovLy8KLy8vIEByZXR1cm4ge2Jvb2x9IC0KLy8vICAgYFRydWVgIHdoZW4gdW5pdHMgZG8gbm90IG1hdGNoLCBhbmQgYGNhbGMoKWAgd2lsbCBiZSByZXF1aXJlZApAZnVuY3Rpb24gX3N1LW5lZWRzLWNhbGMtb3V0cHV0KAogICRzcGFuLAogICRjb2x1bW5zLAogICRndXR0ZXJzLAogICRzcHJlYWQsCiAgJHZhbGlkYXRlOiB0cnVlCikgewogIEBpZiAkdmFsaWRhdGUgewogICAgJHNwYW46IHN1LXZhbGlkLXNwYW4oJHNwYW4pOwogICAgJGNvbHVtbnM6IHN1LXZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpOwogICAgJGd1dHRlcnM6IHN1LXZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpOwogIH0KCiAgJGhhcy1ndXR0ZXI6IGlmKChsZW5ndGgoJHNwYW4pID4gMSkgb3IgKCRzcHJlYWQgPj0gMCksIHRydWUsIGZhbHNlKTsKICAkY2hlY2s6IGlmKCRoYXMtZ3V0dGVyLCBhcHBlbmQoJHNwYW4sICRndXR0ZXJzKSwgJHNwYW4pOwogICRzYWZlLXNwYW46IF9zdS1pcy1jb21wYXJhYmxlKCRjaGVjay4uLik7CgogIEBpZiAoJHNhZmUtc3BhbiA9PSAnc3RhdGljJykgewogICAgQHJldHVybiBmYWxzZTsKICB9IEBlbHNlIGlmIChub3QgJHNhZmUtc3BhbikgewogICAgQHJldHVybiB0cnVlOwogIH0KCiAgJHNhZmUtZmx1aWQ6IF9zdS1pcy1jb21wYXJhYmxlKCRndXR0ZXJzLCAkY29sdW1ucy4uLik7CgogIEByZXR1cm4gbm90ICRzYWZlLWZsdWlkOwp9CgY7CVQ7DmkGOw9vOxAJOxFvOxIHOw5pBjsTaQY7FG87Egc7DmkGOxNpBjsVQA87FkAQOzZU