@mochabug/adapt-sdk 0.1.16 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +55 -13
- package/dist/api.d.ts.map +1 -1
- package/dist/cjs/api.cjs +1 -1
- package/dist/cjs/api.cjs.map +4 -4
- package/dist/cjs/router.cjs +1 -1
- package/dist/cjs/router.cjs.map +4 -4
- package/dist/esm/api.mjs +1 -1
- package/dist/esm/api.mjs.map +4 -4
- package/dist/esm/router.mjs +1 -1
- package/dist/esm/router.mjs.map +4 -4
- package/package.json +1 -1
package/dist/esm/router.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{fromBinary as q,fromJson as $}from"@bufbuild/protobuf";import{ConnectError as lt}from"@connectrpc/connect";import{match as dt}from"path-to-regexp";import{create as m,enumFromJson as ct,fromJson as me,toJson as S}from"@bufbuild/protobuf";import{FieldMaskSchema as v,timestampDate as B,timestampFromDate as f,ValueSchema as P}from"@bufbuild/protobuf/wkt";import{Code as g,ConnectError as b,createClient as z}from"@connectrpc/connect";import{fileDesc as Zn,messageDesc as In}from"@bufbuild/protobuf/codegenv2";import{enumDesc as mt,extDesc as ut,fileDesc as un,messageDesc as pt}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_descriptor as pn,file_google_protobuf_duration as Gn,file_google_protobuf_field_mask as bn,file_google_protobuf_timestamp as hn}from"@bufbuild/protobuf/wkt";var l=un("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSKGAQoMTWVzc2FnZVJ1bGVzEhYKDmNlbF9leHByZXNzaW9uGAUgAygJEh8KA2NlbBgDIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEi0KBW9uZW9mGAQgAygLMh4uYnVmLnZhbGlkYXRlLk1lc3NhZ2VPbmVvZlJ1bGVKBAgBEAJSCGRpc2FibGVkIjQKEE1lc3NhZ2VPbmVvZlJ1bGUSDgoGZmllbGRzGAEgAygJEhAKCHJlcXVpcmVkGAIgASgIIh4KCk9uZW9mUnVsZXMSEAoIcmVxdWlyZWQYASABKAgiiwkKCkZpZWxkUnVsZXMSFgoOY2VsX2V4cHJlc3Npb24YHSADKAkSHwoDY2VsGBcgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSEAoIcmVxdWlyZWQYGSABKAgSJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMgoKZmllbGRfbWFzaxgcIAEoCzIcLmJ1Zi52YWxpZGF0ZS5GaWVsZE1hc2tSdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJVCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSLaFwoKRmxvYXRSdWxlcxKDAQoFY29uc3QYASABKAJCdMJIcQpvCgtmbG9hdC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEp8BCgJsdBgCIAEoAkKQAcJIjAEKiQEKCGZsb2F0Lmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEq8BCgNsdGUYAyABKAJCnwHCSJsBCpgBCglmbG9hdC5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLvBwoCZ3QYBCABKAJC4AfCSNwHCo0BCghmbG9hdC5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsMBCgtmbG9hdC5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs0BChVmbG9hdC5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrTAQoMZmxvYXQuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3QEKFmZsb2F0Lmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEroICgNndGUYBSABKAJCqgjCSKYICpsBCglmbG9hdC5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0gEKDGZsb2F0Lmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3AEKFmZsb2F0Lmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuIBCg1mbG9hdC5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrsAQoXZmxvYXQuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESfwoCaW4YBiADKAJCc8JIcApuCghmbG9hdC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdgoGbm90X2luGAcgAygCQmbCSGMKYQoMZmxvYXQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdQoGZmluaXRlGAggASgIQmXCSGIKYAoMZmxvYXQuZmluaXRlGlBydWxlcy5maW5pdGUgPyAodGhpcy5pc05hbigpIHx8IHRoaXMuaXNJbmYoKSA/ICd2YWx1ZSBtdXN0IGJlIGZpbml0ZScgOiAnJykgOiAnJxIrCgdleGFtcGxlGAkgAygCQhrCSBcKFQoNZmxvYXQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i7RcKC0RvdWJsZVJ1bGVzEoQBCgVjb25zdBgBIAEoAUJ1wkhyCnAKDGRvdWJsZS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqABCgJsdBgCIAEoAUKRAcJIjQEKigEKCWRvdWJsZS5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKwAQoDbHRlGAMgASgBQqABwkicAQqZAQoKZG91YmxlLmx0ZRqKASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEvQHCgJndBgEIAEoAULlB8JI4QcKjgEKCWRvdWJsZS5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsQBCgxkb3VibGUuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrOAQoWZG91YmxlLmd0X2x0X2V4Y2x1c2l2ZRqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCtQBCg1kb3VibGUuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3gEKF2RvdWJsZS5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK/CAoDZ3RlGAUgASgBQq8IwkirCAqcAQoKZG91YmxlLmd0ZRqNASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrTAQoNZG91YmxlLmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3QEKF2RvdWJsZS5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrjAQoOZG91YmxlLmd0ZV9sdGUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCu0BChhkb3VibGUuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygBQnTCSHEKbwoJZG91YmxlLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKAFCZ8JIZApiCg1kb3VibGUubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdgoGZmluaXRlGAggASgIQmbCSGMKYQoNZG91YmxlLmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSLAoHZXhhbXBsZRgJIAMoAUIbwkgYChYKDmRvdWJsZS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKMFQoKSW50MzJSdWxlcxKDAQoFY29uc3QYASABKAVCdMJIcQpvCgtpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEooBCgJsdBgCIAEoBUJ8wkh5CncKCGludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKAVCjAHCSIgBCoUBCglpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoBUKIB8JIhAcKegoIaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgFQtMHwkjPBwqIAQoJaW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygFQnPCSHAKbgoIaW50MzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoBUJmwkhjCmEKDGludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCCADKAVCGsJIFwoVCg1pbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKMFQoKSW50NjRSdWxlcxKDAQoFY29uc3QYASABKANCdMJIcQpvCgtpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEooBCgJsdBgCIAEoA0J8wkh5CncKCGludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKANCjAHCSIgBCoUBCglpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoA0KIB8JIhAcKegoIaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgDQtMHwkjPBwqIAQoJaW50NjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygDQnPCSHAKbgoIaW50NjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoA0JmwkhjCmEKDGludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCSADKANCGsJIFwoVCg1pbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLVUludDMyUnVsZXMShAEKBWNvbnN0GAEgASgNQnXCSHIKcAoMdWludDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgNQn3CSHoKeAoJdWludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKA1CjQHCSIkBCoYBCgp1aW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKA1CjQfCSIkHCnsKCXVpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNdWludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgNQtgHwkjUBwqJAQoKdWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygNQnTCSHEKbwoJdWludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKA1CZ8JIZApiCg11aW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoDUIbwkgYChYKDnVpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLVUludDY0UnVsZXMShAEKBWNvbnN0GAEgASgEQnXCSHIKcAoMdWludDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgEQn3CSHoKeAoJdWludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKARCjQHCSIkBCoYBCgp1aW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKARCjQfCSIkHCnsKCXVpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNdWludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgEQtgHwkjUBwqJAQoKdWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygEQnTCSHEKbwoJdWludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKARCZ8JIZApiCg11aW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoBEIbwkgYChYKDnVpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLU0ludDMyUnVsZXMShAEKBWNvbnN0GAEgASgRQnXCSHIKcAoMc2ludDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgRQn3CSHoKeAoJc2ludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBFCjQHCSIkBCoYBCgpzaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBFCjQfCSIkHCnsKCXNpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgRQtgHwkjUBwqJAQoKc2ludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygRQnTCSHEKbwoJc2ludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKBFCZ8JIZApiCg1zaW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLU0ludDY0UnVsZXMShAEKBWNvbnN0GAEgASgSQnXCSHIKcAoMc2ludDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgSQn3CSHoKeAoJc2ludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBJCjQHCSIkBCoYBCgpzaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBJCjQfCSIkHCnsKCXNpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgSQtgHwkjUBwqJAQoKc2ludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygSQnTCSHEKbwoJc2ludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKBJCZ8JIZApiCg1zaW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEkIbwkgYChYKDnNpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKvFQoMRml4ZWQzMlJ1bGVzEoUBCgVjb25zdBgBIAEoB0J2wkhzCnEKDWZpeGVkMzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKMAQoCbHQYAiABKAdCfsJIewp5CgpmaXhlZDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp4BCgNsdGUYAyABKAdCjgHCSIoBCocBCgtmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASoQcKAmd0GAQgASgHQpIHwkiOBwp8CgpmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLtBwoDZ3RlGAUgASgHQt0HwkjZBwqKAQoLZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrEAQoOZml4ZWQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkMzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1AEKD2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrcAQoZZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKAdCdcJIcgpwCgpmaXhlZDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKAdCaMJIZQpjCg5maXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAdCHMJIGQoXCg9maXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIq8VCgxGaXhlZDY0UnVsZXMShQEKBWNvbnN0GAEgASgGQnbCSHMKcQoNZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEowBCgJsdBgCIAEoBkJ+wkh7CnkKCmZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoBkKOAcJIigEKhwEKC2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKhBwoCZ3QYBCABKAZCkgfCSI4HCnwKCmZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrUBCg1maXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq9AQoXZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu0HCgNndGUYBSABKAZC3QfCSNkHCooBCgtmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoEBCgJpbhgGIAMoBkJ1wkhyCnAKCmZpeGVkNjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEngKBm5vdF9pbhgHIAMoBkJowkhlCmMKDmZpeGVkNjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoBkIcwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwBUKDVNGaXhlZDMyUnVsZXMShgEKBWNvbnN0GAEgASgPQnfCSHQKcgoOc2ZpeGVkMzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKNAQoCbHQYAiABKA9Cf8JIfAp6CgtzZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgPQo8BwkiLAQqIAQoMc2ZpeGVkMzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKmBwoCZ3QYBCABKA9ClwfCSJMHCn0KC3NmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOc2ZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPc2ZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES8gcKA2d0ZRgFIAEoD0LiB8JI3gcKiwEKDHNmaXhlZDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKCAQoCaW4YBiADKA9CdsJIcwpxCgtzZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeQoGbm90X2luGAcgAygPQmnCSGYKZAoPc2ZpeGVkMzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLgoHZXhhbXBsZRgIIAMoD0IdwkgaChgKEHNmaXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsAVCg1TRml4ZWQ2NFJ1bGVzEoYBCgVjb25zdBgBIAEoEEJ3wkh0CnIKDnNmaXhlZDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjQEKAmx0GAIgASgQQn/CSHwKegoLc2ZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoEEKPAcJIiwEKiAEKDHNmaXhlZDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgQQpcHwkiTBwp9CgtzZml4ZWQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKBBC4gfCSN4HCosBCgxzZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkNjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkNjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygQQnbCSHMKcQoLc2ZpeGVkNjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoEEJpwkhmCmQKD3NmaXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKBBCHcJIGgoYChBzZml4ZWQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLHAQoJQm9vbFJ1bGVzEoIBCgVjb25zdBgBIAEoCEJzwkhwCm4KCmJvb2wuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIiiDkKC1N0cmluZ1J1bGVzEoYBCgVjb25zdBgBIAEoCUJ3wkh0CnIKDHN0cmluZy5jb25zdBpidGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCBgJXNgJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSfgoDbGVuGBMgASgEQnHCSG4KbAoKc3RyaW5nLmxlbhpedWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKZAQoHbWluX2xlbhgCIAEoBEKHAcJIgwEKgAEKDnN0cmluZy5taW5fbGVuGm51aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKXAQoHbWF4X2xlbhgDIAEoBEKFAcJIgQEKfwoOc3RyaW5nLm1heF9sZW4abXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSmwEKCWxlbl9ieXRlcxgUIAEoBEKHAcJIgwEKgAEKEHN0cmluZy5sZW5fYnl0ZXMabHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSAhPSBydWxlcy5sZW5fYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKjAQoJbWluX2J5dGVzGAQgASgEQo8BwkiLAQqIAQoQc3RyaW5nLm1pbl9ieXRlcxp0dWludChieXRlcyh0aGlzKS5zaXplKCkpIDwgcnVsZXMubWluX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSogEKCW1heF9ieXRlcxgFIAEoBEKOAcJIigEKhwEKEHN0cmluZy5tYXhfYnl0ZXMac3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9ieXRlc10pIDogJycSjQEKB3BhdHRlcm4YBiABKAlCfMJIeQp3Cg5zdHJpbmcucGF0dGVybhplIXRoaXMubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBkb2VzIG5vdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycShAEKBnByZWZpeBgHIAEoCUJ0wkhxCm8KDXN0cmluZy5wcmVmaXgaXiF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCBgJXNgJy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSggEKBnN1ZmZpeBgIIAEoCUJywkhvCm0KDXN0cmluZy5zdWZmaXgaXCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEpABCghjb250YWlucxgJIAEoCUJ+wkh7CnkKD3N0cmluZy5jb250YWlucxpmIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpgBCgxub3RfY29udGFpbnMYFyABKAlCgQHCSH4KfAoTc3RyaW5nLm5vdF9jb250YWlucxpldGhpcy5jb250YWlucyhydWxlcy5ub3RfY29udGFpbnMpID8gJ3ZhbHVlIGNvbnRhaW5zIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLm5vdF9jb250YWluc10pIDogJycSgAEKAmluGAogAygJQnTCSHEKbwoJc3RyaW5nLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YCyADKAlCZ8JIZApiCg1zdHJpbmcubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycS3wEKBWVtYWlsGAwgASgIQs0BwkjJAQphCgxzdHJpbmcuZW1haWwSI3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGiwhcnVsZXMuZW1haWwgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzRW1haWwoKQpkChJzdHJpbmcuZW1haWxfZW1wdHkSMnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGhohcnVsZXMuZW1haWwgfHwgdGhpcyAhPSAnJ0gAEucBCghob3N0bmFtZRgNIAEoCELSAcJIzgEKZQoPc3RyaW5nLmhvc3RuYW1lEh52YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdG5hbWUaMiFydWxlcy5ob3N0bmFtZSB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpCmUKFXN0cmluZy5ob3N0bmFtZV9lbXB0eRItdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lGh0hcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyAhPSAnJ0gAEscBCgJpcBgOIAEoCEK4AcJItAEKVQoJc3RyaW5nLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxomIXJ1bGVzLmlwIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKCkKWwoPc3RyaW5nLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxoXIXJ1bGVzLmlwIHx8IHRoaXMgIT0gJydIABLWAQoEaXB2NBgPIAEoCELFAcJIwQEKXAoLc3RyaW5nLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaKSFydWxlcy5pcHY0IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKDQpCmEKEXN0cmluZy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGhkhcnVsZXMuaXB2NCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjYYECABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY2EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzGikhcnVsZXMuaXB2NiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg2KQphChFzdHJpbmcuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxoZIXJ1bGVzLmlwdjYgfHwgdGhpcyAhPSAnJ0gAEr8BCgN1cmkYESABKAhCrwHCSKsBClEKCnN0cmluZy51cmkSGXZhbHVlIG11c3QgYmUgYSB2YWxpZCBVUkkaKCFydWxlcy51cmkgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzVXJpKCkKVgoQc3RyaW5nLnVyaV9lbXB0eRIodmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVSSRoYIXJ1bGVzLnVyaSB8fCB0aGlzICE9ICcnSAAScAoHdXJpX3JlZhgSIAEoCEJdwkhaClgKDnN0cmluZy51cmlfcmVmEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJIFJlZmVyZW5jZRohIXJ1bGVzLnVyaV9yZWYgfHwgdGhpcy5pc1VyaVJlZigpSAASkAIKB2FkZHJlc3MYFSABKAhC/AHCSPgBCoEBCg5zdHJpbmcuYWRkcmVzcxItdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKYAgoEdXVpZBgWIAEoCEKHAsJIgwIKpQEKC3N0cmluZy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS8AEKBXR1dWlkGCEgASgIQt4BwkjaAQpzCgxzdHJpbmcudHV1aWQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASlgIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvgBwkj0AQp4ChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEs8CChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQq8CwkirAgqTAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS8gEKCWlwX3ByZWZpeBgdIAEoCELcAcJI2AEKbAoQc3RyaW5nLmlwX3ByZWZpeBIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABKDAgoLaXB2NF9wcmVmaXgYHiABKAhC6wHCSOcBCnUKEnN0cmluZy5pcHY0X3ByZWZpeBIhdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjZfcHJlZml4GB8gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2Nl9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAErUCCg1ob3N0X2FuZF9wb3J0GCAgASgIQpsCwkiXAgqZAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSQXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEvUBCgR1bGlkGCMgASgIQuQBwkjgAQqCAQoLc3RyaW5nLnVsaWQSGnZhbHVlIG11c3QgYmUgYSB2YWxpZCBVTElEGlchcnVsZXMudWxpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTddWzAtOUEtSEpLTU5QLVRWLVphLWhqa21ucC10di16XXsyNX0kJykKWQoRc3RyaW5nLnVsaWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVTElEGhkhcnVsZXMudWxpZCB8fCB0aGlzICE9ICcnSAASqAUKEHdlbGxfa25vd25fcmVnZXgYGCABKA4yGC5idWYudmFsaWRhdGUuS25vd25SZWdleELxBMJI7QQK8AEKI3N0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lEiZ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRqgAXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMSB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXjo/WzAtOWEtekEtWiEjJCUmXCcqKy0uXl98flx4NjBdKyQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSskJykKjQEKKXN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lX2VtcHR5EjV2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRopcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgIT0gJycK5wEKJHN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl92YWx1ZRIndmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIHZhbHVlGpUBcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAyIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXlteXHUwMDAwLVx1MDAwOFx1MDAwQS1cdTAwMUZcdTAwN0ZdKiQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSokJylIABIOCgZzdHJpY3QYGSABKAgSLAoHZXhhbXBsZRgiIAMoCUIbwkgYChYKDnN0cmluZy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLCEgoKQnl0ZXNSdWxlcxKAAQoFY29uc3QYASABKAxCccJIbgpsCgtieXRlcy5jb25zdBpddGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBiZSAleCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEngKA2xlbhgNIAEoBEJrwkhoCmYKCWJ5dGVzLmxlbhpZdWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSkAEKB21pbl9sZW4YAiABKARCf8JIfAp6Cg1ieXRlcy5taW5fbGVuGml1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSiAEKB21heF9sZW4YAyABKARCd8JIdApyCg1ieXRlcy5tYXhfbGVuGmF1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEpABCgdwYXR0ZXJuGAQgASgJQn/CSHwKegoNYnl0ZXMucGF0dGVybhppIXN0cmluZyh0aGlzKS5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ3ZhbHVlIG11c3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnEoEBCgZwcmVmaXgYBSABKAxCccJIbgpsCgxieXRlcy5wcmVmaXgaXCF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCAleCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEn8KBnN1ZmZpeBgGIAEoDEJvwkhsCmoKDGJ5dGVzLnN1ZmZpeBpaIXRoaXMuZW5kc1dpdGgocnVsZXMuc3VmZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHN1ZmZpeCAleCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEoMBCghjb250YWlucxgHIAEoDEJxwkhuCmwKDmJ5dGVzLmNvbnRhaW5zGlohdGhpcy5jb250YWlucyhydWxlcy5jb250YWlucykgPyAndmFsdWUgZG9lcyBub3QgY29udGFpbiAleCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJycSpwEKAmluGAggAygMQpoBwkiWAQqTAQoIYnl0ZXMuaW4ahgFnZXRGaWVsZChydWxlcywgJ2luJykuc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YCSADKAxCZsJIYwphCgxieXRlcy5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLrAQoCaXAYCiABKAhC3AHCSNgBCnQKCGJ5dGVzLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5AEKBGlwdjQYCyABKAhC0wHCSM8BCmUKCmJ5dGVzLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5QEKBGlwdjYYDCABKAhC1AHCSNABCmYKCmJ5dGVzLmlwdjYSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEtUBCgR1dWlkGA8gASgIQsQBwkjAAQpeCgpieXRlcy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBo0IXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpeChBieXRlcy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBofIXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLUAwoJRW51bVJ1bGVzEoIBCgVjb25zdBgBIAEoBUJzwkhwCm4KCmVudW0uY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIUCgxkZWZpbmVkX29ubHkYAiABKAgSfgoCaW4YAyADKAVCcsJIbwptCgdlbnVtLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ1CgZub3RfaW4YBCADKAVCZcJIYgpgCgtlbnVtLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEioKB2V4YW1wbGUYBSADKAVCGcJIFgoUCgxlbnVtLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAiL7AwoNUmVwZWF0ZWRSdWxlcxKeAQoJbWluX2l0ZW1zGAEgASgEQooBwkiGAQqDAQoScmVwZWF0ZWQubWluX2l0ZW1zGm11aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9pdGVtcyA/ICd2YWx1ZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJWQgaXRlbShzKScuZm9ybWF0KFtydWxlcy5taW5faXRlbXNdKSA6ICcnEqIBCgltYXhfaXRlbXMYAiABKARCjgHCSIoBCocBChJyZXBlYXRlZC5tYXhfaXRlbXMacXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBubyBtb3JlIHRoYW4gJXMgaXRlbShzKScuZm9ybWF0KFtydWxlcy5tYXhfaXRlbXNdKSA6ICcnEnAKBnVuaXF1ZRgDIAEoCEJgwkhdClsKD3JlcGVhdGVkLnVuaXF1ZRIocmVwZWF0ZWQgdmFsdWUgbXVzdCBjb250YWluIHVuaXF1ZSBpdGVtcxoeIXJ1bGVzLnVuaXF1ZSB8fCB0aGlzLnVuaXF1ZSgpEicKBWl0ZW1zGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiKKAwoITWFwUnVsZXMSjwEKCW1pbl9wYWlycxgBIAEoBEJ8wkh5CncKDW1hcC5taW5fcGFpcnMaZnVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX3BhaXJzID8gJ21hcCBtdXN0IGJlIGF0IGxlYXN0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWluX3BhaXJzXSkgOiAnJxKOAQoJbWF4X3BhaXJzGAIgASgEQnvCSHgKdgoNbWFwLm1heF9wYWlycxpldWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbW9zdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1heF9wYWlyc10pIDogJycSJgoEa2V5cxgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzEigKBnZhbHVlcxgFIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzKgkI6AcQgICAgAIiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIpkXCg1EdXJhdGlvblJ1bGVzEqEBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJ3wkh0CnIKDmR1cmF0aW9uLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSqAEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQn/CSHwKegoLZHVyYXRpb24ubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASugEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKPAcJIiwEKiAEKDGR1cmF0aW9uLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASwQcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQpcHwkiTBwp9CgtkdXJhdGlvbi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDmR1cmF0aW9uLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD2R1cmF0aW9uLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEo0ICgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25C4gfCSN4HCosBCgxkdXJhdGlvbi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPZHVyYXRpb24uZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQZHVyYXRpb24uZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESnQEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnbCSHMKcQoLZHVyYXRpb24uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEpQBCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CacJIZgpkCg9kdXJhdGlvbi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJJCgdleGFtcGxlGAkgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQh3CSBoKGAoQZHVyYXRpb24uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i/QUKDkZpZWxkTWFza1J1bGVzEr8BCgVjb25zdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCkwHCSI8BCowBChBmaWVsZF9tYXNrLmNvbnN0Gnh0aGlzLnBhdGhzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRocyA/ICd2YWx1ZSBtdXN0IGVxdWFsIHBhdGhzICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRoc10pIDogJycS2QEKAmluGAIgAygJQswBwkjIAQrFAQoNZmllbGRfbWFzay5pbhqzASF0aGlzLnBhdGhzLmFsbChwLCBwIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ2luJykuZXhpc3RzKGYsIHAuc3RhcnRzV2l0aChmKycuJykpKSA/ICd2YWx1ZSBtdXN0IG9ubHkgY29udGFpbiBwYXRocyBpbiAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEvMBCgZub3RfaW4YAyADKAlC4gHCSN4BCtsBChFmaWVsZF9tYXNrLm5vdF9pbhrFASF0aGlzLnBhdGhzLmFsbChwLCAhKHAgaW4gZ2V0RmllbGQocnVsZXMsICdub3RfaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ25vdF9pbicpLmV4aXN0cyhmLCBwLnN0YXJ0c1dpdGgoZisnLicpKSkpID8gJ3ZhbHVlIG11c3Qgbm90IGNvbnRhaW4gYW55IHBhdGhzIGluICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnbm90X2luJyldKSA6ICcnEkwKB2V4YW1wbGUYBCADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQh/CSBwKGgoSZmllbGRfbWFzay5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIikhgKDlRpbWVzdGFtcFJ1bGVzEqMBCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCeMJIdQpzCg90aW1lc3RhbXAuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKrAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQoABwkh9CnsKDHRpbWVzdGFtcC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK8AQoDbHRlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKQAcJIjAEKiQEKDXRpbWVzdGFtcC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEmwKBmx0X25vdxgHIAEoCEJawkhXClUKEHRpbWVzdGFtcC5sdF9ub3caQShydWxlcy5sdF9ub3cgJiYgdGhpcyA+IG5vdykgPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gbm93JyA6ICcnSAASxwcKAmd0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKcB8JImAcKfgoMdGltZXN0YW1wLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq3AQoPdGltZXN0YW1wLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq/AQoZdGltZXN0YW1wLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCscBChB0aW1lc3RhbXAuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrPAQoadGltZXN0YW1wLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEpMICgNndGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQucHwkjjBwqMAQoNdGltZXN0YW1wLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsYBChB0aW1lc3RhbXAuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs4BChp0aW1lc3RhbXAuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1gEKEXRpbWVzdGFtcC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt4BCht0aW1lc3RhbXAuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESbwoGZ3Rfbm93GAggASgIQl3CSFoKWAoQdGltZXN0YW1wLmd0X25vdxpEKHJ1bGVzLmd0X25vdyAmJiB0aGlzIDwgbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBub3cnIDogJydIARK4AQoGd2l0aGluGAkgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQowBwkiIAQqFAQoQdGltZXN0YW1wLndpdGhpbhpxdGhpcyA8IG5vdy1ydWxlcy53aXRoaW4gfHwgdGhpcyA+IG5vdytydWxlcy53aXRoaW4gPyAndmFsdWUgbXVzdCBiZSB3aXRoaW4gJXMgb2Ygbm93Jy5mb3JtYXQoW3J1bGVzLndpdGhpbl0pIDogJycSSwoHZXhhbXBsZRgKIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCHsJIGwoZChF0aW1lc3RhbXAuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iOQoKVmlvbGF0aW9ucxIrCgp2aW9sYXRpb25zGAEgAygLMhcuYnVmLnZhbGlkYXRlLlZpb2xhdGlvbiKfAQoJVmlvbGF0aW9uEiYKBWZpZWxkGAUgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIlCgRydWxlGAYgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIPCgdydWxlX2lkGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSDwoHZm9yX2tleRgEIAEoCEoECAEQAlIKZmllbGRfcGF0aCI9CglGaWVsZFBhdGgSMAoIZWxlbWVudHMYASADKAsyHi5idWYudmFsaWRhdGUuRmllbGRQYXRoRWxlbWVudCLpAgoQRmllbGRQYXRoRWxlbWVudBIUCgxmaWVsZF9udW1iZXIYASABKAUSEgoKZmllbGRfbmFtZRgCIAEoCRI+CgpmaWVsZF90eXBlGAMgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPAoIa2V5X3R5cGUYBCABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI+Cgp2YWx1ZV90eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSDwoFaW5kZXgYBiABKARIABISCghib29sX2tleRgHIAEoCEgAEhEKB2ludF9rZXkYCCABKANIABISCgh1aW50X2tleRgJIAEoBEgAEhQKCnN0cmluZ19rZXkYCiABKAlIAEILCglzdWJzY3JpcHQqoQEKBklnbm9yZRIWChJJR05PUkVfVU5TUEVDSUZJRUQQABIYChRJR05PUkVfSUZfWkVST19WQUxVRRABEhEKDUlHTk9SRV9BTFdBWVMQAyIECAIQAioMSUdOT1JFX0VNUFRZKg5JR05PUkVfREVGQVVMVCoXSUdOT1JFX0lGX0RFRkFVTFRfVkFMVUUqFUlHTk9SRV9JRl9VTlBPUFVMQVRFRCpuCgpLbm93blJlZ2V4EhsKF0tOT1dOX1JFR0VYX1VOU1BFQ0lGSUVEEAASIAocS05PV05fUkVHRVhfSFRUUF9IRUFERVJfTkFNRRABEiEKHUtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX1ZBTFVFEAI6VgoHbWVzc2FnZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiHCSABKAsyGi5idWYudmFsaWRhdGUuTWVzc2FnZVJ1bGVzUgdtZXNzYWdlOk4KBW9uZW9mEh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuT25lb2ZSdWxlc1IFb25lb2Y6TgoFZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzUgVmaWVsZDpdCgpwcmVkZWZpbmVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiICSABKAsyHS5idWYudmFsaWRhdGUuUHJlZGVmaW5lZFJ1bGVzUgpwcmVkZWZpbmVkQm4KEmJ1aWxkLmJ1Zi52YWxpZGF0ZUINVmFsaWRhdGVQcm90b1ABWkdidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxkL3Byb3RvdmFsaWRhdGUvcHJvdG9jb2xidWZmZXJzL2dvL2J1Zi92YWxpZGF0ZQ",[pn,Gn,bn,hn]);var y=Zn("Ciptb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2RhdGEucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKmCgoKU2lnbmFsRGF0YRL3BQoIZmlsZW5hbWUYASABKAlC3wW6SNsFugGvAQobZmlsZW5hbWUubm9fcGF0aF9zZXBhcmF0b3JzEmNGaWxlbmFtZSBjYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKCcvJyBvciAnXCcpLiBVc2Ugb25seSB0aGUgZmlsZW5hbWUgd2l0aG91dCBkaXJlY3RvcnkgcGF0aC4aKyF0aGlzLmNvbnRhaW5zKCcvJykgJiYgIXRoaXMuY29udGFpbnMoJ1xcJym6AbsBCh5maWxlbmFtZS5ub19jb250cm9sX2NoYXJhY3RlcnMSOUZpbGVuYW1lIGNhbm5vdCBjb250YWluIGNvbnRyb2wgY2hhcmFjdGVycyBvciBudWxsIGJ5dGVzLhpeIXRoaXMuY29udGFpbnMoJ1x4MDAnKSAmJiAhdGhpcy5jb250YWlucygnXG4nKSAmJiAhdGhpcy5jb250YWlucygnXHInKSAmJiAhdGhpcy5jb250YWlucygnXHQnKboBbQonZmlsZW5hbWUubm9fbGVhZGluZ190cmFpbGluZ193aGl0ZXNwYWNlEi1GaWxlbmFtZSBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4aE3RoaXMgPT0gdGhpcy50cmltKCm6AdMBChxmaWxlbmFtZS5ub193aW5kb3dzX3Jlc2VydmVkEmpGaWxlbmFtZSBjYW5ub3QgYmUgYSBXaW5kb3dzIHJlc2VydmVkIG5hbWUgKENPTiwgUFJOLCBBVVgsIE5VTCwgQ09NMS05LCBMUFQxLTkpIHdpdGggb3Igd2l0aG91dCBleHRlbnNpb24uGkchdGhpcy5tYXRjaGVzKCdeKD9pKShDT058UFJOfEFVWHxOVUx8Q09NWzEtOV18TFBUWzEtOV0pKD86XFwuW14uXSopPyQnKXIgEAEY/wEyGV5bXi88PjoifD8qXHgwMC1ceDFGXFxdKyRIAIgBARKCBAoJbWltZV90eXBlGAIgASgJQu4DukjqA7oByQEKFm1pbWVfdHlwZS5ub193aWxkY2FyZHMSmQFNSU1FIHR5cGUgd2lsZGNhcmRzIGFyZSBub3QgYWxsb3dlZCBpbiBTaWduYWxEYXRhLiBVc2UgYSBjb25jcmV0ZSBNSU1FIHR5cGUgbGlrZSAnaW1hZ2UvcG5nJyBvciAnYXBwbGljYXRpb24vcGRmJywgbm90IHdpbGRjYXJkcyBsaWtlICdpbWFnZS8qJyBvciAnKi8qJy4aEyF0aGlzLmNvbnRhaW5zKCcqJym6Ab8BChdtaW1lX3R5cGUubm9fcGFyYW1ldGVycxKOAU1JTUUgdHlwZSBwYXJhbWV0ZXJzIGFyZSBub3QgYWxsb3dlZC4gVXNlICd0ZXh0L3BsYWluJyBpbnN0ZWFkIG9mICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Jy4gVVRGLTggZW5jb2RpbmcgaXMgYXNzdW1lZCBmb3IgYWxsIHRleHQgZm9ybWF0cy4aEyF0aGlzLmNvbnRhaW5zKCc7JylyWBADGP8BMlFeW2EtekEtWjAtOV1bYS16QS1aMC05ISMkJlwtXl8uK117MCwxMjZ9L1thLXpBLVowLTldW2EtekEtWjAtOSEjJCZcLV5fLitdezAsMTI2fSQSDAoEZGF0YRgDIAEoDEILCglfZmlsZW5hbWViBnByb3RvMw",[l]),M=In(y,0);import{fileDesc as Rn,messageDesc as Sn}from"@bufbuild/protobuf/codegenv2";import{fileDesc as yn,messageDesc as At}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_struct as An}from"@bufbuild/protobuf/wkt";var ye=yn("Ciltb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvanRkX3NjaGVtYS5wcm90bxIYbW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoIsEcCglKVERTY2hlbWESegoLZGVmaW5pdGlvbnMYASADKAsyNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguSlREU2NoZW1hLkRlZmluaXRpb25zRW50cnlCL7pILJoBKQgAEOgHIiJyIBABGGQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokEi4KCG1ldGFkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhUKCG51bGxhYmxlGAMgASgISAGIAQESNwoDcmVmGAQgASgJQiW6SCJyIBABGGQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokSAKIAQEScQoEdHlwZRgFIAEoCUJeukhbcllSB2Jvb2xlYW5SB2Zsb2F0MzJSB2Zsb2F0NjRSBGludDhSBXVpbnQ4UgVpbnQxNlIGdWludDE2UgVpbnQzMlIGdWludDMyUgZzdHJpbmdSCXRpbWVzdGFtcEgDiAEBEiQKBGVudW0YBiADKAlCFrpIE5IBEAgAEOgHGAEiB3IFEAEY6AcSOgoIZWxlbWVudHMYByABKAsyIy5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguSlREU2NoZW1hSASIAQESXAoKcHJvcGVydGllcxgIIAMoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5KVERTY2hlbWEuUHJvcGVydGllc0VudHJ5QhO6SBCaAQ0IABDoByIGcgQQARhkEm0KE29wdGlvbmFsX3Byb3BlcnRpZXMYCSADKAsyOy5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguSlREU2NoZW1hLk9wdGlvbmFsUHJvcGVydGllc0VudHJ5QhO6SBCaAQ0IABDoByIGcgQQARhkEiIKFWFkZGl0aW9uYWxfcHJvcGVydGllcxgKIAEoCEgFiAEBEjgKBnZhbHVlcxgLIAEoCzIjLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5KVERTY2hlbWFIBogBARIlCg1kaXNjcmltaW5hdG9yGAwgASgJQgm6SAZyBBABGGRIB4gBARJWCgdtYXBwaW5nGA0gAygLMjAubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLkpURFNjaGVtYS5NYXBwaW5nRW50cnlCE7pIEJoBDQgAEOgHIgZyBBABGGQaVwoQRGVmaW5pdGlvbnNFbnRyeRILCgNrZXkYASABKAkSMgoFdmFsdWUYAiABKAsyIy5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguSlREU2NoZW1hOgI4ARpWCg9Qcm9wZXJ0aWVzRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLkpURFNjaGVtYToCOAEaXgoXT3B0aW9uYWxQcm9wZXJ0aWVzRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLkpURFNjaGVtYToCOAEaUwoMTWFwcGluZ0VudHJ5EgsKA2tleRgBIAEoCRIyCgV2YWx1ZRgCIAEoCzIjLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5KVERTY2hlbWE6AjgBOuMRukjfERqTAwocanRkLm11dHVhbGx5X2V4Y2x1c2l2ZV9mb3JtcxKIAVNjaGVtYSBtdXN0IHVzZSBleGFjdGx5IG9uZSBmb3JtIChlbXB0eSwgcmVmLCB0eXBlLCBlbnVtLCBlbGVtZW50cywgcHJvcGVydGllcywgdmFsdWVzLCBvciBkaXNjcmltaW5hdG9yKS4gTXVsdGlwbGUgZm9ybSBrZXl3b3JkcyBmb3VuZC4a5wFbaGFzKHRoaXMucmVmKSwgaGFzKHRoaXMudHlwZSksIHNpemUodGhpcy5lbnVtKSA+IDAsIGhhcyh0aGlzLmVsZW1lbnRzKSwgc2l6ZSh0aGlzLnByb3BlcnRpZXMpID4gMCB8fCBzaXplKHRoaXMub3B0aW9uYWxfcHJvcGVydGllcykgPiAwLCBoYXModGhpcy52YWx1ZXMpLCBoYXModGhpcy5kaXNjcmltaW5hdG9yKSAmJiBzaXplKHRoaXMubWFwcGluZykgPiAwXS5maWx0ZXIoeCwgeCkuc2l6ZSgpIDw9IDEa+AEKGWp0ZC5wcm9wZXJ0aWVzX25vX292ZXJsYXASWFByb3BlcnRpZXMgYW5kIG9wdGlvbmFsX3Byb3BlcnRpZXMgY2Fubm90IGhhdmUgb3ZlcmxhcHBpbmcga2V5cyAoUkZDIDg5MjcgU2VjdGlvbiAyLjIuNikagAEhKHNpemUodGhpcy5wcm9wZXJ0aWVzKSA+IDAgJiYgc2l6ZSh0aGlzLm9wdGlvbmFsX3Byb3BlcnRpZXMpID4gMCkgfHwgdGhpcy5wcm9wZXJ0aWVzLmFsbChwaywgIShwayBpbiB0aGlzLm9wdGlvbmFsX3Byb3BlcnRpZXMpKRqQAgoxanRkLmFkZGl0aW9uYWxfcHJvcGVydGllc19vbmx5X29uX3Byb3BlcnRpZXNfZm9ybRJ2YWRkaXRpb25hbF9wcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIHNldCB3aGVuIHVzaW5nIHRoZSBwcm9wZXJ0aWVzIGZvcm0gKGhhcyBub24tZW1wdHkgcHJvcGVydGllcyBvciBvcHRpb25hbF9wcm9wZXJ0aWVzKRpjIWhhcyh0aGlzLmFkZGl0aW9uYWxfcHJvcGVydGllcykgfHwgc2l6ZSh0aGlzLnByb3BlcnRpZXMpID4gMCB8fCBzaXplKHRoaXMub3B0aW9uYWxfcHJvcGVydGllcykgPiAwGsIBCiJqdGQuZGlzY3JpbWluYXRvcl9yZXF1aXJlc19tYXBwaW5nEmdkaXNjcmltaW5hdG9yIGFuZCBtYXBwaW5nIG11c3QgYXBwZWFyIHRvZ2V0aGVyIHdpdGggYXQgbGVhc3Qgb25lIG1hcHBpbmcgZW50cnkgKFJGQyA4OTI3IFNlY3Rpb24gMi4yLjgpGjNoYXModGhpcy5kaXNjcmltaW5hdG9yKSA9PSAoc2l6ZSh0aGlzLm1hcHBpbmcpID4gMCka/QEKI2p0ZC5tYXBwaW5nX211c3RfYmVfcHJvcGVydGllc19mb3JtEk5BbGwgc2NoZW1hcyBpbiBtYXBwaW5nIG11c3QgYmUgb2YgdGhlIHByb3BlcnRpZXMgZm9ybSAoUkZDIDg5MjcgU2VjdGlvbiAyLjIuOCkahQFzaXplKHRoaXMubWFwcGluZykgPT0gMCB8fCB0aGlzLm1hcHBpbmcuYWxsKG0sIHNpemUodGhpcy5tYXBwaW5nW21dLnByb3BlcnRpZXMpID4gMCB8fCBzaXplKHRoaXMubWFwcGluZ1ttXS5vcHRpb25hbF9wcm9wZXJ0aWVzKSA+IDApGuIBCh5qdGQubWFwcGluZ19jYW5ub3RfYmVfbnVsbGFibGUSU1NjaGVtYXMgaW4gZGlzY3JpbWluYXRvciBtYXBwaW5nIGNhbm5vdCBoYXZlIG51bGxhYmxlPXRydWUgKFJGQyA4OTI3IFNlY3Rpb24gMi4yLjgpGmtzaXplKHRoaXMubWFwcGluZykgPT0gMCB8fCB0aGlzLm1hcHBpbmcuYWxsKG0sICFoYXModGhpcy5tYXBwaW5nW21dLm51bGxhYmxlKSB8fCAhdGhpcy5tYXBwaW5nW21dLm51bGxhYmxlKRrGAgoranRkLmRpc2NyaW1pbmF0b3Jfbm90X2luX21hcHBpbmdfcHJvcGVydGllcxJwRGlzY3JpbWluYXRvciB0YWcgY2Fubm90IGFwcGVhciBpbiBwcm9wZXJ0aWVzIG9yIG9wdGlvbmFsX3Byb3BlcnRpZXMgb2YgbWFwcGluZyBzY2hlbWFzIChSRkMgODkyNyBTZWN0aW9uIDIuMi44KRqkASFoYXModGhpcy5kaXNjcmltaW5hdG9yKSB8fCB0aGlzLm1hcHBpbmcuYWxsKG0sICEodGhpcy5kaXNjcmltaW5hdG9yIGluIHRoaXMubWFwcGluZ1ttXS5wcm9wZXJ0aWVzKSAmJiAhKHRoaXMuZGlzY3JpbWluYXRvciBpbiB0aGlzLm1hcHBpbmdbbV0ub3B0aW9uYWxfcHJvcGVydGllcykpGsUCChJqdGQuZW51bV9ub25fZW1wdHkSSmVudW0gYXJyYXkgbXVzdCBiZSBub24tZW1wdHkgd2hlbiB1c2luZyBlbnVtIGZvcm0gKFJGQyA4OTI3IFNlY3Rpb24gMi4yLjQpGuIBc2l6ZSh0aGlzLmVudW0pID4gMCAmJiAhaGFzKHRoaXMudHlwZSkgJiYgIWhhcyh0aGlzLnJlZikgJiYgIWhhcyh0aGlzLmVsZW1lbnRzKSAmJiAhaGFzKHRoaXMudmFsdWVzKSAmJiAhaGFzKHRoaXMuZGlzY3JpbWluYXRvcikgJiYgc2l6ZSh0aGlzLnByb3BlcnRpZXMpID09IDAgJiYgc2l6ZSh0aGlzLm9wdGlvbmFsX3Byb3BlcnRpZXMpID09IDAgPyBzaXplKHRoaXMuZW51bSkgPiAwIDogdHJ1ZUILCglfbWV0YWRhdGFCCwoJX251bGxhYmxlQgYKBF9yZWZCBwoFX3R5cGVCCwoJX2VsZW1lbnRzQhgKFl9hZGRpdGlvbmFsX3Byb3BlcnRpZXNCCQoHX3ZhbHVlc0IQCg5fZGlzY3JpbWluYXRvcmIGcHJvdG8z",[l,An]);var Y=Rn("Cixtb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2Zvcm1hdC5wcm90bxIYbW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoIo8FCgxTaWduYWxGb3JtYXQSOQoKanRkX3NjaGVtYRgBIAEoCzIjLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5KVERTY2hlbWFIABKyBAoJbWltZV90eXBlGAIgASgJQpwEukiYBLoBmwIKMG1pbWVfdHlwZS5ub190eXBlX3dpbGRjYXJkX3dpdGhfY29uY3JldGVfc3VidHlwZRK7AVR5cGUgd2lsZGNhcmQgd2l0aCBjb25jcmV0ZSBzdWJ0eXBlIChlLmcuLCAnKi9wbmcnLCAnKi9qc29uJykgaXMgbm90IGFsbG93ZWQuIFVzZSBjb25jcmV0ZSB0eXBlIChlLmcuLCAnaW1hZ2UvcG5nJyksIHR5cGUtZmFtaWx5IHdpbGRjYXJkIChlLmcuLCAnaW1hZ2UvKicpLCBvciB1bml2ZXJzYWwgd2lsZGNhcmQgKCcqLyonKS4aKSEodGhpcy5zdGFydHNXaXRoKCcqLycpICYmIHRoaXMgIT0gJyovKicpugGRAQodbWltZV90eXBlLm5vX2FwcGxpY2F0aW9uX2pzb24SR2dlbmVyaWMganNvbiBpcyBqdGQtc2NoZW1hIHdpdGggZW1wdHkgc2NoZW1hLCB0aGlzIHdpbGwgYWNjZXB0IGFueSBKU09OGid0aGlzLmxvd2VyQXNjaWkoKSAhPSAnYXBwbGljYXRpb24vanNvbidyYhADGP8BMlteKFthLXpBLVowLTldW2EtekEtWjAtOSEjJCZcLV5fLitdezAsMTI2fXxcKikvKFthLXpBLVowLTldW2EtekEtWjAtOSEjJCZcLV5fLitdezAsMTI2fXxcKikkSABCDwoGZm9ybWF0EgW6SAIIAWIGcHJvdG8z",[l,ye]),Ae=Sn(Y,0);import{fileDesc as Yn,messageDesc as xn}from"@bufbuild/protobuf/codegenv2";import{fileDesc as Wn,messageDesc as Nt}from"@bufbuild/protobuf/codegenv2";import{fileDesc as Xn,messageDesc as ft}from"@bufbuild/protobuf/codegenv2";import{fileDesc as Vn,messageDesc as Yt}from"@bufbuild/protobuf/codegenv2";var L=Vn("CjBtb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2Rlc2NyaXB0b3IucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKMAgoQU2lnbmFsRGVzY3JpcHRvchIzCgRuYW1lGAEgASgJQiW6SCJyIBABGDIyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokEhwKBWxhYmVsGAIgASgJQgi6SAVyAxj6AUgAiAEBEiIKC2Rlc2NyaXB0aW9uGAMgASgJQgi6SAVyAxjoB0gBiAEBEhUKCG9wdGlvbmFsGAQgASgISAKIAQESQwoHZm9ybWF0cxgFIAMoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxGb3JtYXRCCrpIB5IBBAgBEDJCCAoGX2xhYmVsQg4KDF9kZXNjcmlwdGlvbkILCglfb3B0aW9uYWxiBnByb3RvMw",[l,Y]);var Re=Xn("Ciptb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvdHJhbnNjZWl2ZXIucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCLMAgoLVHJhbnNjZWl2ZXISMwoEbmFtZRgBIAEoCUIlukgiciAQARgyMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBIiCgtkZXNjcmlwdGlvbhgCIAEoCUIIukgFcgMY+gFIAIgBARKtAQoHc2lnbmFscxgDIAMoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEZXNjcmlwdG9yQnC6SG26AWQKFHNpZ25hbHNfdW5pcXVlX25hbWVzEiRFYWNoIHNpZ25hbCBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aJnRoaXMubWFwKHNpZ25hbCwgc2lnbmFsLm5hbWUpLnVuaXF1ZSgpkgEDEIAEEhYKCXN0cmVhbWluZxgEIAEoCEgBiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfc3RyZWFtaW5nYgZwcm90bzM",[l,L]);var Se=Wn("Cidtb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvZXhjaGFuZ2UucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCLuAwoIRXhjaGFuZ2USMwoEbmFtZRgBIAEoCUIlukgiciAQARgyMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBIiCgtkZXNjcmlwdGlvbhgCIAEoCUIIukgFcgMY+gFIAIgBARLCAQoMdHJhbnNtaXR0ZXJzGAMgAygLMiUubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlRyYW5zY2VpdmVyQoQBukiAAboBeAoZdHJhbnNtaXR0ZXJzX3VuaXF1ZV9uYW1lcxIpRWFjaCB0cmFuc21pdHRlciBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aMHRoaXMubWFwKHRyYW5zbWl0dGVyLCB0cmFuc21pdHRlci5uYW1lKS51bmlxdWUoKZIBAhAKErMBCglyZWNlaXZlcnMYBCADKAsyJS5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguVHJhbnNjZWl2ZXJCebpIdroBbAoWcmVjZWl2ZXJzX3VuaXF1ZV9uYW1lcxImRWFjaCByZWNlaXZlciBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aKnRoaXMubWFwKHJlY2VpdmVyLCByZWNlaXZlci5uYW1lKS51bmlxdWUoKZIBBAgBEApCDgoMX2Rlc2NyaXB0aW9uYgZwcm90bzM",[l,Re]);import{fileDesc as Bn,messageDesc as qt}from"@bufbuild/protobuf/codegenv2";import{enumDesc as Ut,fileDesc as Jn,messageDesc as Dt}from"@bufbuild/protobuf/codegenv2";var Ve=Jn("Ci1tb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2JpbmRpbmcucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKWBgoNU2lnbmFsQmluZGluZxIzCgRuYW1lGAEgASgJQiW6SCJyIBABGDIyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokEhwKBWxhYmVsGAIgASgJQgi6SAVyAxj6AUgBiAEBEiIKC2Rlc2NyaXB0aW9uGAMgASgJQgi6SAVyAxjoB0gCiAEBEhUKCG9wdGlvbmFsGAQgASgISAOIAQESQwoHYWNjZXB0cxgFIAMoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxGb3JtYXRCCrpIB5IBBAgBEDISXgoJcmVmZXJlbmNlGAYgASgJQkm6SEZyRBj6ATI/XlswLTlhLXpdezR9L1tfJGEtekEtWl1bXyRhLXpBLVowLTldKi9bXyRhLXpBLVpdW18kYS16QS1aMC05XSokSAAS4AEKCGNvbnN0YW50GAcgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCpQG6SKEBugGdAQoZY29uc3RhbnQubWF4X3BheWxvYWRfc2l6ZRJmQ29uc3RhbnQgc2lnbmFsIGRhdGEgY2Fubm90IGV4Y2VlZCA1MEtCICg1MTIwMCBieXRlcykuIEZvciBsYXJnZXIgZGF0YSwgdXNlIHNpZ25hbCByZWZlcmVuY2VzIGluc3RlYWQuGhhzaXplKHRoaXMuZGF0YSkgPD0gNTEyMDBIABJLCgVlcnJvchgIIAEoDjItLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxCaW5kaW5nLkVycm9yQgi6SAWCAQIgAEgEiAEBImYKBUVycm9yEhUKEUVSUk9SX1VOU1BFQ0lGSUVEEAASEQoNRVJST1JfVU5CT1VORBABEhgKFEVSUk9SX0lOVkFMSURfU09VUkNFEAISGQoVRVJST1JfU0NIRU1BX01JU01BVENIEANCCQoHYmluZGluZ0IICgZfbGFiZWxCDgoMX2Rlc2NyaXB0aW9uQgsKCV9vcHRpb25hbEIICgZfZXJyb3JiBnByb3RvMw",[l,y,Y]);var Xe=Bn("Cidtb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvcmVjZWl2ZXIucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKlAgoIUmVjZWl2ZXISMwoEbmFtZRgBIAEoCUIlukgiciAQARgyMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBIiCgtkZXNjcmlwdGlvbhgCIAEoCUIIukgFcgMY+gFIAIgBARKvAQoIYmluZGluZ3MYAyADKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsQmluZGluZ0J0ukhxugFoChViaW5kaW5nc191bmlxdWVfbmFtZXMSJUVhY2ggYmluZGluZyBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aKHRoaXMubWFwKGJpbmRpbmcsIGJpbmRpbmcubmFtZSkudW5pcXVlKCmSAQMQgARCDgoMX2Rlc2NyaXB0aW9uYgZwcm90bzM",[l,Ve]);import{enumDesc as ss,fileDesc as Cn,messageDesc as os}from"@bufbuild/protobuf/codegenv2";var k=Cn("Ciptb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvdHJhbnNtaXR0ZXIucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCLCAwoLVHJhbnNtaXR0ZXISMwoEbmFtZRgBIAEoCUIlukgiciAQARgyMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBIiCgtkZXNjcmlwdGlvbhgCIAEoCUIIukgFcgMY+gFIAIgBARKtAQoHc2lnbmFscxgDIAMoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEZXNjcmlwdG9yQnC6SG26AWQKFHNpZ25hbHNfdW5pcXVlX25hbWVzEiRFYWNoIHNpZ25hbCBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aJnRoaXMubWFwKHNpZ25hbCwgc2lnbmFsLm5hbWUpLnVuaXF1ZSgpkgEDEIAEEj0KBG1vZGUYBCABKA4yKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguVHJhbnNtaXR0ZXIuTW9kZUgBiAEBIlIKBE1vZGUSFAoQTU9ERV9VTlNQRUNJRklFRBAAEhEKDU1PREVfU1RBTkRBUkQQARIPCgtNT0RFX1NUUkVBTRACEhAKDE1PREVfRkFJTFVSRRADQg4KDF9kZXNjcmlwdGlvbkIHCgVfbW9kZWIGcHJvdG8z",[l,L]);var H=Yn("Ci5tb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvdmVydGV4X21ldGFkYXRhLnByb3RvEhhtb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGgihAUKDlZlcnRleE1ldGFkYXRhEhAKCGNvbXBsZXRlGAEgASgIErABCglyZWNlaXZlcnMYAiADKAsyIi5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguUmVjZWl2ZXJCebpIdroBbAoWcmVjZWl2ZXJzX3VuaXF1ZV9uYW1lcxImRWFjaCByZWNlaXZlciBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aKnRoaXMubWFwKHJlY2VpdmVyLCByZWNlaXZlci5uYW1lKS51bmlxdWUoKZIBBAgBEDISwgEKDHRyYW5zbWl0dGVycxgDIAMoCzIlLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5UcmFuc21pdHRlckKEAbpIgAG6AXgKGXRyYW5zbWl0dGVyc191bmlxdWVfbmFtZXMSKUVhY2ggdHJhbnNtaXR0ZXIgbXVzdCBoYXZlIGEgdW5pcXVlIG5hbWUuGjB0aGlzLm1hcCh0cmFuc21pdHRlciwgdHJhbnNtaXR0ZXIubmFtZSkudW5pcXVlKCmSAQIQMhKuAQoJZXhjaGFuZ2VzGAQgAygLMiIubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLkV4Y2hhbmdlQne6SHS6AWwKFmV4Y2hhbmdlc191bmlxdWVfbmFtZXMSJkVhY2ggZXhjaGFuZ2UgbXVzdCBoYXZlIGEgdW5pcXVlIG5hbWUuGip0aGlzLm1hcChleGNoYW5nZSwgZXhjaGFuZ2UubmFtZSkudW5pcXVlKCmSAQIQChIlCg1jcm9uX3NjaGVkdWxlGAYgASgJQgm6SAZyBBABGGRIAIgBAUIQCg5fY3Jvbl9zY2hlZHVsZWIGcHJvdG8z",[l,Se,Xe,k]),x=xn(H,0);import{enumDesc as Is,fileDesc as fn,messageDesc as Hn,serviceDesc as vn}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_field_mask as zn}from"@bufbuild/protobuf/wkt";import{enumDesc as Fn,fileDesc as Mn,messageDesc as w}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_timestamp as En}from"@bufbuild/protobuf/wkt";var V=Mn("Ciltb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9zdG9yZS5wcm90bxIdbW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEiJgoIUHV0VmFsdWUSDQoFdmFsdWUYASABKAwSCwoDdHRsGAIgASgFIlkKCEdldFZhbHVlEg0KBXZhbHVlGAEgASgMEj4KCG1ldGFkYXRhGAIgASgLMiwubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuVmFsdWVNZXRhZGF0YSJdCg1WYWx1ZU1ldGFkYXRhEgsKA3R0bBgBIAEoBRIxCg1sYXN0X21vZGlmaWVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgRldGFnGAMgASgJIuwBCg5UaW1lc3RhbXBSYW5nZRIxCgVzdGFydBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIvCgNlbmQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESFwoPc3RhcnRfaW5jbHVzaXZlGAMgASgIEhUKDWVuZF9pbmNsdXNpdmUYBCABKAg6RrpIQxpBCgt2YWxpZF9yYW5nZRIbc3RhcnQgbXVzdCBiZSBsZXNzIHRoYW4gZW5kGhV0aGlzLnN0YXJ0IDwgdGhpcy5lbmQinwMKCFNlbGVjdE9wEhwKBXN0YXJ0GAEgASgJQgi6SAVyAxiAIEgAiAEBEhoKA2VuZBgCIAEoCUIIukgFcgMYgCBIAYgBARIcCg9zdGFydF9pbmNsdXNpdmUYAyABKAhIAogBARIaCg1lbmRfaW5jbHVzaXZlGAQgASgISAOIAQESHgoFbGltaXQYBSABKAVCCrpIBxoFGOgHKABIBIgBARIXCgpwYWdlX3Rva2VuGAYgASgJSAWIAQE6lAG6SJABGo0BCgt2YWxpZF9yYW5nZRJBd2hlbiBib3RoIHN0YXJ0IGFuZCBlbmQgYXJlIHByb3ZpZGVkLCBzdGFydCBtdXN0IGJlIGxlc3MgdGhhbiBlbmQaOyFoYXModGhpcy5zdGFydCkgfHwgIWhhcyh0aGlzLmVuZCkgfHwgdGhpcy5zdGFydCA8IHRoaXMuZW5kQggKBl9zdGFydEIGCgRfZW5kQhIKEF9zdGFydF9pbmNsdXNpdmVCEAoOX2VuZF9pbmNsdXNpdmVCCAoGX2xpbWl0Qg0KC19wYWdlX3Rva2VuIuABCg5Xcml0ZU9wZXJhdGlvbhI5CgZpbnNlcnQYASABKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbnNlcnRPcEgAEjkKBmRlbGV0ZRgCIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkRlbGV0ZU9wSAASRAoMcmFuZ2VfZGVsZXRlGAMgASgLMiwubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUmFuZ2VEZWxldGVPcEgAQhIKCW9wZXJhdGlvbhIFukgCCAEiuwEKGUNvbmRpdGlvbmFsV3JpdGVPcGVyYXRpb24SRAoGaW5zZXJ0GAEgASgLMjIubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZGl0aW9uYWxJbnNlcnRPcEgAEkQKBmRlbGV0ZRgCIAEoCzIyLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmRpdGlvbmFsRGVsZXRlT3BIAEISCglvcGVyYXRpb24SBbpIAggBItICCg1SYW5nZURlbGV0ZU9wEhwKBXN0YXJ0GAEgASgJQgi6SAVyAxiAIEgAiAEBEhoKA2VuZBgCIAEoCUIIukgFcgMYgCBIAYgBARIcCg9zdGFydF9pbmNsdXNpdmUYAyABKAhIAogBARIaCg1lbmRfaW5jbHVzaXZlGAQgASgISAOIAQE6lAG6SJABGo0BCgt2YWxpZF9yYW5nZRJBd2hlbiBib3RoIHN0YXJ0IGFuZCBlbmQgYXJlIHByb3ZpZGVkLCBzdGFydCBtdXN0IGJlIGxlc3MgdGhhbiBlbmQaOyFoYXModGhpcy5zdGFydCkgfHwgIWhhcyh0aGlzLmVuZCkgfHwgdGhpcy5zdGFydCA8IHRoaXMuZW5kQggKBl9zdGFydEIGCgRfZW5kQhIKEF9zdGFydF9pbmNsdXNpdmVCEAoOX2VuZF9pbmNsdXNpdmUiYQoISW5zZXJ0T3ASFQoDa2V5GAEgASgJQgi6SAVyAxiAIBI+CgV2YWx1ZRgCIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlB1dFZhbHVlQga6SAPIAQEiIQoIRGVsZXRlT3ASFQoDa2V5GAEgASgJQgi6SAVyAxiAICK2BgoTQ29uZGl0aW9uYWxJbnNlcnRPcBIVCgNrZXkYASABKAlCCLpIBXIDGIAgEj4KBXZhbHVlGAIgASgLMicubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUHV0VmFsdWVCBrpIA8gBARJaCgxwcmVjb25kaXRpb24YAyABKAsyPy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25kaXRpb25hbEluc2VydE9wLlByZWNvbmRpdGlvbkgAiAEBGtoECgxQcmVjb25kaXRpb24SOgoUbGFzdF9tb2RpZmllZF9lcXVhbHMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAASTAoTbGFzdF9tb2RpZmllZF9yYW5nZRgCIAEoCzItLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlRpbWVzdGFtcFJhbmdlSAASEQoEZXRhZxgEIAEoCUgBiAEBEhsKDmZhaWxfaWZfZXhpc3RzGAUgASgISAKIAQE63AK6SNgCGscBCiBub190aW1lc3RhbXBfd2l0aF9mYWlsX2lmX2V4aXN0cxI7ZmFpbF9pZl9leGlzdHMgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggdGltZXN0YW1wIGNvbmRpdGlvbnMaZnRoaXMuZmFpbF9pZl9leGlzdHMgPT0gdHJ1ZSA/ICFoYXModGhpcy5sYXN0X21vZGlmaWVkX2VxdWFscykgJiYgIWhhcyh0aGlzLmxhc3RfbW9kaWZpZWRfcmFuZ2UpIDogdHJ1ZRqLAQobbm9fZXRhZ193aXRoX2ZhaWxfaWZfZXhpc3RzEjZmYWlsX2lmX2V4aXN0cyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBldGFnIGNvbmRpdGlvbnMaNHRoaXMuZmFpbF9pZl9leGlzdHMgPT0gdHJ1ZSA/ICFoYXModGhpcy5ldGFnKSA6IHRydWVCFQoTdGltZXN0YW1wX2NvbmRpdGlvbkIHCgVfZXRhZ0IRCg9fZmFpbF9pZl9leGlzdHNCDwoNX3ByZWNvbmRpdGlvbiLeBQoTQ29uZGl0aW9uYWxEZWxldGVPcBIVCgNrZXkYASABKAlCCLpIBXIDGIAgEloKDHByZWNvbmRpdGlvbhgCIAEoCzI/Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmRpdGlvbmFsRGVsZXRlT3AuUHJlY29uZGl0aW9uSACIAQEawgQKDFByZWNvbmRpdGlvbhIYCgttdXN0X2V4aXN0cxgBIAEoCEgBiAEBEjoKFGxhc3RfbW9kaWZpZWRfZXF1YWxzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAEkwKE2xhc3RfbW9kaWZpZWRfcmFuZ2UYAyABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5UaW1lc3RhbXBSYW5nZUgAEhEKBGV0YWcYBCABKAlIAogBATrKArpIxgIavgEKHW5vX3RpbWVzdGFtcF93aXRoX211c3RfZXhpc3RzEjhtdXN0X2V4aXN0cyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB0aW1lc3RhbXAgY29uZGl0aW9ucxpjdGhpcy5tdXN0X2V4aXN0cyA9PSB0cnVlID8gIWhhcyh0aGlzLmxhc3RfbW9kaWZpZWRfZXF1YWxzKSAmJiAhaGFzKHRoaXMubGFzdF9tb2RpZmllZF9yYW5nZSkgOiB0cnVlGoIBChhub19ldGFnX3dpdGhfbXVzdF9leGlzdHMSM211c3RfZXhpc3RzIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIGV0YWcgY29uZGl0aW9ucxoxdGhpcy5tdXN0X2V4aXN0cyA9PSB0cnVlID8gIWhhcyh0aGlzLmV0YWcpIDogdHJ1ZUIVChN0aW1lc3RhbXBfY29uZGl0aW9uQg4KDF9tdXN0X2V4aXN0c0IHCgVfZXRhZ0IPCg1fcHJlY29uZGl0aW9uKpABCglOYW1lc3BhY2USGQoVTkFNRVNQQUNFX1VOU1BFQ0lGSUVEEAASHQoZTkFNRVNQQUNFX1ZFUlRFWF9JTlNUQU5DRRABEh0KGU5BTUVTUEFDRV9QTFVHSU5fSU5TVEFOQ0UQAhIUChBOQU1FU1BBQ0VfVkVSVEVYEAMSFAoQTkFNRVNQQUNFX1BMVUdJThAEYgZwcm90bzM",[l,En]);var te=w(V,3);var U=w(V,5);var se=w(V,10,0);var We=w(V,11,0);var Je=Fn(V,0);var Be=fn("Cjhtb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9jb25maWd1cmF0b3Jfc2VydmljZS5wcm90bxIdbW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEi5AEKGkxpc3RJbmNvbWluZ1NpZ25hbHNSZXF1ZXN0EjwKCHJlY2VpdmVyGAEgASgJQiW6SCJyIBABGGQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokSACIAQESNwoHZm9ybWF0cxgCIAMoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxGb3JtYXQSMwoKZmllbGRfbWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tIAYgBAUILCglfcmVjZWl2ZXJCDQoLX2ZpZWxkX21hc2si9gEKEEluY29taW5nVmVydGljZXMSCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI7Cgx0cmFuc21pdHRlcnMYBCADKAsyJS5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguVHJhbnNtaXR0ZXISPgoLdmVydGV4X3R5cGUYBSABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5WZXJ0ZXhUeXBlEhQKB2xvZ29faWQYBiABKAlIAYgBAUIOCgxfZGVzY3JpcHRpb25CCgoIX2xvZ29faWQiiQIKG0xpc3RJbmNvbWluZ1NpZ25hbHNSZXNwb25zZRJBCgh2ZXJ0aWNlcxgBIAMoCzIvLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkluY29taW5nVmVydGljZXMSYQoMdmVydGV4X2xvZ29zGAIgAygLMksubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuTGlzdEluY29taW5nU2lnbmFsc1Jlc3BvbnNlLlZlcnRleExvZ29zRW50cnkSEAoIcmVjZWl2ZXIYAyABKAkaMgoQVmVydGV4TG9nb3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIsYBCilDb25maWd1cmF0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVxdWVzdBJOCgpvcGVyYXRpb25zGAEgAygLMi0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuV3JpdGVPcGVyYXRpb25CC7pICJIBBQgBEPQDEkkKCW5hbWVzcGFjZRgCIAEoDjIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk5hbWVzcGFjZUIMukgJggEGIAAgASACIvYBCipDb25maWd1cmF0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVzcG9uc2USaQoIbWV0YWRhdGEYASADKAsyVy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25maWd1cmF0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVzcG9uc2UuTWV0YWRhdGFFbnRyeRpdCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRI7CgV2YWx1ZRgCIAEoCzIsLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlZhbHVlTWV0YWRhdGE6AjgBIr4BCiRDb25maWd1cmF0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlcXVlc3QSSwoJb3BlcmF0aW9uGAEgASgLMjgubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZGl0aW9uYWxXcml0ZU9wZXJhdGlvbhJJCgluYW1lc3BhY2UYAiABKA4yKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5OYW1lc3BhY2VCDLpICYIBBiAAIAEgAiJ5CiVDb25maWd1cmF0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlc3BvbnNlEkMKCG1ldGFkYXRhGAEgASgLMiwubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuVmFsdWVNZXRhZGF0YUgAiAEBQgsKCV9tZXRhZGF0YSKXAQooQ29uZmlndXJhdG9yU2VydmljZUJhdGNoUmVhZFN0b3JlUmVxdWVzdBIgCgRrZXlzGAEgAygJQhK6SA+SAQwIARCQTiIFcgMYgCASSQoJbmFtZXNwYWNlGAIgASgOMigubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuTmFtZXNwYWNlQgy6SAmCAQYgACABIAIi5gEKKUNvbmZpZ3VyYXRvclNlcnZpY2VCYXRjaFJlYWRTdG9yZVJlc3BvbnNlEmIKBWl0ZW1zGAEgAygLMlMubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZmlndXJhdG9yU2VydmljZUJhdGNoUmVhZFN0b3JlUmVzcG9uc2UuSXRlbXNFbnRyeRpVCgpJdGVtc0VudHJ5EgsKA2tleRgBIAEoCRI2CgV2YWx1ZRgCIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldFZhbHVlOgI4ASK2AQolQ29uZmlndXJhdG9yU2VydmljZVNlbGVjdFN0b3JlUmVxdWVzdBJCCglvcGVyYXRpb24YASABKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5TZWxlY3RPcEIGukgDyAEBEkkKCW5hbWVzcGFjZRgCIAEoDjIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk5hbWVzcGFjZUIMukgJggEGIAAgASACIogCCiZDb25maWd1cmF0b3JTZXJ2aWNlU2VsZWN0U3RvcmVSZXNwb25zZRJfCgVpdGVtcxgBIAMoCzJQLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmZpZ3VyYXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlc3BvbnNlLkl0ZW1zRW50cnkSFwoKbmV4dF90b2tlbhgCIAEoCUgAiAEBGlUKCkl0ZW1zRW50cnkSCwoDa2V5GAEgASgJEjYKBXZhbHVlGAIgASgLMicubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuR2V0VmFsdWU6AjgBQg0KC19uZXh0X3Rva2VuIm8KKUNvbmZpZ3VyYXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXF1ZXN0EjMKCmZpZWxkX21hc2sYASABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrSACIAQFCDQoLX2ZpZWxkX21hc2siswIKKkNvbmZpZ3VyYXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXNwb25zZRIOCgZjb25maWcYASABKAwSOgoIbWV0YWRhdGEYAiABKAsyKC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguVmVydGV4TWV0YWRhdGESfgoTY29uZmlndXJlZF9zZXJ2aWNlcxgDIAMoCzJhLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmZpZ3VyYXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXNwb25zZS5Db25maWd1cmVkU2VydmljZXNFbnRyeRo5ChdDb25maWd1cmVkU2VydmljZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBIrUCChdQb3N0VmVydGV4Q29uZmlnUmVxdWVzdBITCgZjb25maWcYASABKAxIAIgBARI/CghtZXRhZGF0YRgCIAEoCzIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5WZXJ0ZXhNZXRhZGF0YUgBiAEBEh4KEW92ZXJyaWRlX2JpbmRpbmdzGAMgASgISAKIAQE6drpIcxpxChtjb25maWdfb3JfbWV0YWRhdGFfcmVxdWlyZWQSKkVpdGhlciBjb25maWcgb3IgbWV0YWRhdGEgbXVzdCBiZSBwcm92aWRlZBomaGFzKHRoaXMuY29uZmlnKSB8fCBoYXModGhpcy5tZXRhZGF0YSlCCQoHX2NvbmZpZ0ILCglfbWV0YWRhdGFCFAoSX292ZXJyaWRlX2JpbmRpbmdzIlYKGFBvc3RWZXJ0ZXhDb25maWdSZXNwb25zZRI6CghtZXRhZGF0YRgBIAEoCzIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5WZXJ0ZXhNZXRhZGF0YSrBAQoKVmVydGV4VHlwZRIbChdWRVJURVhfVFlQRV9VTlNQRUNJRklFRBAAEhUKEVZFUlRFWF9UWVBFX1NUQVJUEAESFgoSVkVSVEVYX1RZUEVfUExVR0lOEAISFgoSVkVSVEVYX1RZUEVfT1VUUFVUEAMSGAoUVkVSVEVYX1RZUEVfREVMRUdBVEUQBBIXChNWRVJURVhfVFlQRV9CQVJSSUVSEAUSHAoYVkVSVEVYX1RZUEVfRVhDSEFOR0VfT1VUEAYy2QgKE0NvbmZpZ3VyYXRvclNlcnZpY2USpgEKD0dldFZlcnRleENvbmZpZxJILm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmZpZ3VyYXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXF1ZXN0GkkubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZmlndXJhdG9yU2VydmljZUdldFZlcnRleENvbmZpZ1Jlc3BvbnNlEoMBChBQb3N0VmVydGV4Q29uZmlnEjYubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUG9zdFZlcnRleENvbmZpZ1JlcXVlc3QaNy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Qb3N0VmVydGV4Q29uZmlnUmVzcG9uc2USlwEKCldyaXRlU3RvcmUSQy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25maWd1cmF0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlcXVlc3QaRC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25maWd1cmF0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlc3BvbnNlEqYBCg9CYXRjaFdyaXRlU3RvcmUSSC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25maWd1cmF0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVxdWVzdBpJLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmZpZ3VyYXRvclNlcnZpY2VCYXRjaFdyaXRlU3RvcmVSZXNwb25zZRKjAQoOQmF0Y2hSZWFkU3RvcmUSRy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25maWd1cmF0b3JTZXJ2aWNlQmF0Y2hSZWFkU3RvcmVSZXF1ZXN0GkgubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZmlndXJhdG9yU2VydmljZUJhdGNoUmVhZFN0b3JlUmVzcG9uc2USmgEKC1NlbGVjdFN0b3JlEkQubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZmlndXJhdG9yU2VydmljZVNlbGVjdFN0b3JlUmVxdWVzdBpFLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmZpZ3VyYXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlc3BvbnNlEowBChNMaXN0SW5jb21pbmdTaWduYWxzEjkubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuTGlzdEluY29taW5nU2lnbmFsc1JlcXVlc3QaOi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5MaXN0SW5jb21pbmdTaWduYWxzUmVzcG9uc2ViBnByb3RvMw",[l,zn,Y,k,H,V]);var Ce=Hn(Be,2);var Ye=vn(Be,0);import{fileDesc as Pn,messageDesc as to,serviceDesc as jn}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_field_mask as On}from"@bufbuild/protobuf/wkt";import{enumDesc as Ds,fileDesc as Dn,messageDesc as Ts,serviceDesc as Ps}from"@bufbuild/protobuf/codegenv2";import{extDesc as xs,fileDesc as Nn}from"@bufbuild/protobuf/codegenv2";import{fileDesc as Kn,messageDesc as Bs}from"@bufbuild/protobuf/codegenv2";var xe=Kn("ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJnCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8z");import{file_google_protobuf_descriptor as Qn}from"@bufbuild/protobuf/wkt";var Fe=Nn("Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[xe,Qn]);import{enumDesc as Ks,extDesc as Ns,fileDesc as kn,messageDesc as Qs}from"@bufbuild/protobuf/codegenv2";import{enumDesc as Hs,fileDesc as Ln}from"@bufbuild/protobuf/codegenv2";var Me=Ln("Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQloKDmNvbS5nb29nbGUuYXBpQhBMYXVuY2hTdGFnZVByb3RvUAFaLWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpO2FwaaICBEdBUEliBnByb3RvMw");import{file_google_protobuf_descriptor as wn,file_google_protobuf_duration as Un}from"@bufbuild/protobuf/wkt";var Ee=kn("Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIkEKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKbAgoOUHl0aG9uU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEk4KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgCIAEoCzIvLmdvb2dsZS5hcGkuUHl0aG9uU2V0dGluZ3MuRXhwZXJpbWVudGFsRmVhdHVyZXMahAEKFEV4cGVyaW1lbnRhbEZlYXR1cmVzEh0KFXJlc3RfYXN5bmNfaW9fZW5hYmxlZBgBIAEoCBInCh9wcm90b2J1Zl9weXRob25pY190eXBlc19lbmFibGVkGAIgASgIEiQKHHVudmVyc2lvbmVkX3BhY2thZ2VfZGlzYWJsZWQYAyABKAgiQgoMTm9kZVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKqAwoORG90bmV0U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEkkKEHJlbmFtZWRfc2VydmljZXMYAiADKAsyLy5nb29nbGUuYXBpLkRvdG5ldFNldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5EksKEXJlbmFtZWRfcmVzb3VyY2VzGAMgAygLMjAuZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkUmVzb3VyY2VzRW50cnkSGQoRaWdub3JlZF9yZXNvdXJjZXMYBCADKAkSIAoYZm9yY2VkX25hbWVzcGFjZV9hbGlhc2VzGAUgAygJEh4KFmhhbmR3cml0dGVuX3NpZ25hdHVyZXMYBiADKAkaNgoUUmVuYW1lZFNlcnZpY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVSZW5hbWVkUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJCCgxSdWJ5U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIr8BCgpHb1NldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJFChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMisuZ29vZ2xlLmFwaS5Hb1NldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5GjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwIKDk1ldGhvZFNldHRpbmdzEhAKCHNlbGVjdG9yGAEgASgJEjwKDGxvbmdfcnVubmluZxgCIAEoCzImLmdvb2dsZS5hcGkuTWV0aG9kU2V0dGluZ3MuTG9uZ1J1bm5pbmcSHQoVYXV0b19wb3B1bGF0ZWRfZmllbGRzGAMgAygJGs0BCgtMb25nUnVubmluZxI1ChJpbml0aWFsX3BvbGxfZGVsYXkYASABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SHQoVcG9sbF9kZWxheV9tdWx0aXBsaWVyGAIgASgCEjEKDm1heF9wb2xsX2RlbGF5GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjUKEnRvdGFsX3BvbGxfdGltZW91dBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiJRChhTZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24SDwoHbWV0aG9kcxgBIAMoCRIkChxnZW5lcmF0ZV9vbWl0dGVkX2FzX2ludGVybmFsGAIgASgIKqMBChlDbGllbnRMaWJyYXJ5T3JnYW5pemF0aW9uEisKJ0NMSUVOVF9MSUJSQVJZX09SR0FOSVpBVElPTl9VTlNQRUNJRklFRBAAEgkKBUNMT1VEEAESBwoDQURTEAISCgoGUEhPVE9TEAMSDwoLU1RSRUVUX1ZJRVcQBBIMCghTSE9QUElORxAFEgcKA0dFTxAGEhEKDUdFTkVSQVRJVkVfQUkQBypnChhDbGllbnRMaWJyYXJ5RGVzdGluYXRpb24SKgomQ0xJRU5UX0xJQlJBUllfREVTVElOQVRJT05fVU5TUEVDSUZJRUQQABIKCgZHSVRIVUIQChITCg9QQUNLQUdFX01BTkFHRVIQFDpKChBtZXRob2Rfc2lnbmF0dXJlEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYmwggAygJUg9tZXRob2RTaWduYXR1cmU6QwoMZGVmYXVsdF9ob3N0Eh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJkIIAEoCVILZGVmYXVsdEhvc3Q6QwoMb2F1dGhfc2NvcGVzEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJoIIAEoCVILb2F1dGhTY29wZXM6RAoLYXBpX3ZlcnNpb24SHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYwbqr+gEgASgJUgphcGlWZXJzaW9uQmkKDmNvbS5nb29nbGUuYXBpQgtDbGllbnRQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMw",[Me,wn,Un]);import{file_google_protobuf_timestamp as Tn}from"@bufbuild/protobuf/wkt";var fe=Dn("CjNtb2NoYWJ1Z2FwaXMvYWRhcHQvYXV0b21hdGlvbnMvdjEvYXV0b21hdGlvbnMucHJvdG8SIW1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MSIvChVJbmhlcml0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiZQoWSW5oZXJpdFNlc3Npb25SZXNwb25zZRINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIq8BChFSZWFkT3V0cHV0UmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIaCglwYWdlX3NpemUYAiABKA1CB7pIBCoCGGQSKQoGdmVydGV4GAMgASgJQhS6SBFyDzINXlswLTlhLXpdezR9JEgAiAEBEiEKCm5ld2VyX3RoYW4YBCABKAlCCLpIBXIDsAEBSAGIAQFCCQoHX3ZlcnRleEINCgtfbmV3ZXJfdGhhbiLLAQoSUmVhZE91dHB1dFJlc3BvbnNlEjsKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbhI6CgdvdXRwdXRzGAIgAygLMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLk91dHB1dBInChBuZXh0X3BhZ2VfY3Vyc29yGAMgASgJQgi6SAVyA7ABAUgAiAEBQhMKEV9uZXh0X3BhZ2VfY3Vyc29yIncKD1JlYWRVcmxzUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIaCglwYWdlX3NpemUYAiABKA1CB7pIBCoCGGQSIQoKbmV3ZXJfdGhhbhgDIAEoCUIIukgFcgOwAQFIAIgBAUINCgtfbmV3ZXJfdGhhbiLDAQoQUmVhZFVybHNSZXNwb25zZRI7CgdzZXNzaW9uGAEgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb24SNAoEdXJscxgCIAMoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmwSJwoQbmV4dF9wYWdlX2N1cnNvchgDIAEoCUIIukgFcgOwAQFIAIgBAUITChFfbmV4dF9wYWdlX2N1cnNvciLYAgoTU3RhcnRTZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxI7Cgt0cmFuc21pdHRlchgCIAEoCUIhukgechwQARhkMhZeW2EtekEtWjAtOV8tXXsxLDEwMH0kSACIAQEShQEKB3NpZ25hbHMYAyADKAsyQy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhcnRTZXNzaW9uUmVxdWVzdC5TaWduYWxzRW50cnlCL7pILJoBKSIiciAQARhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJCoDyAEBGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX3RyYW5zbWl0dGVyImMKFFN0YXJ0U2Vzc2lvblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEjAKB2V4cGlyZXMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCCgoIX2V4cGlyZXMiLAoSU3RvcFNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIhUKE1N0b3BTZXNzaW9uUmVzcG9uc2UiKwoRR2V0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiWQoSR2V0U2Vzc2lvblJlc3BvbnNlEkMKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkIGukgDyAEBIukBCgZPdXRwdXQSDgoGdmVydGV4GAEgASgJEgwKBGZvcmsYAiABKAkSQQoEZGF0YRgDIAMoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQuRGF0YUVudHJ5EisKB2NyZWF0ZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGlEKCURhdGFFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAEiegoDVXJsEgsKA3VybBgBIAEoCRIMCgRmb3JrGAIgASgJEg4KBnZlcnRleBgDIAEoCRIMCgRkb25lGAQgASgIEisKB2NyZWF0ZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXRva2VuGAYgASgJIlIKB1Nlc3Npb24SDAoEZm9yaxgBIAEoCRI5CgZzdGF0dXMYAiABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhdHVzIi4KFFN0cmVhbVNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIkkKEUFja01lc3NhZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDEhwKCm1lc3NhZ2VfaWQYAiABKAlCCLpIBXIDsAEBIhQKEkFja01lc3NhZ2VSZXNwb25zZSLrAQoVU3RyZWFtU2Vzc2lvblJlc3BvbnNlEhQKAmlkGAEgASgJQgi6SAVyA7ABARI7CgZvdXRwdXQYAiABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAMgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBCABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2Ui1AIKEVJ1blNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDEjsKC3RyYW5zbWl0dGVyGAIgASgJQiG6SB5yHBABGGQyFl5bYS16QS1aMC05Xy1dezEsMTAwfSRIAIgBARKDAQoHc2lnbmFscxgDIAMoCzJBLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVxdWVzdC5TaWduYWxzRW50cnlCL7pILJoBKSIiciAQARhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJCoDyAEBGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX3RyYW5zbWl0dGVyIrECChJSdW5TZXNzaW9uUmVzcG9uc2USFAoCaWQYASABKAlCCLpIBXIDsAEBEkcKB3N0YXJ0ZWQYAiABKAsyNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UiYAoRUnVuU2Vzc2lvblN0YXJ0ZWQSDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyIrChFSdW5Jbmhlcml0UmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AyKzAgoSUnVuSW5oZXJpdFJlc3BvbnNlEhQKAmlkGAEgASgJQgi6SAVyA7ABARJJCglpbmhlcml0ZWQYAiABKAsyNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UiYAoRUnVuSW5oZXJpdFN0YXJ0ZWQSDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyrIAQoGU3RhdHVzEhYKElNUQVRVU19VTlNQRUNJRklFRBAAEhIKDlNUQVRVU19SVU5OSU5HEAESEgoOU1RBVFVTX1NUT1BQRUQQAhITCg9TVEFUVVNfU1RPUFBJTkcQAxIUChBTVEFUVVNfQ09NUExFVEVEEAQSEgoOU1RBVFVTX0VYUElSRUQQBRISCg5TVEFUVVNfRVJST1JFRBAGEhUKEVNUQVRVU19ERUxFR0FUSU5HEAcSFAoQU1RBVFVTX0RFTEVHQVRFRBAIMtUOChFBdXRvbWF0aW9uU2VydmljZRKuAQoMU3RhcnRTZXNzaW9uEjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlcXVlc3QaNy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhcnRTZXNzaW9uUmVzcG9uc2UiLYLT5JMCJzoBKiIiL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9zdGFydBKiAQoLU3RvcFNlc3Npb24SNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RvcFNlc3Npb25SZXF1ZXN0GjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0b3BTZXNzaW9uUmVzcG9uc2UiJILT5JMCHiocL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbhK2AQoOSW5oZXJpdFNlc3Npb24SOC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuSW5oZXJpdFNlc3Npb25SZXF1ZXN0GjkubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkluaGVyaXRTZXNzaW9uUmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9pbmhlcml0Ep8BCgpHZXRTZXNzaW9uEjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkdldFNlc3Npb25SZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkdldFNlc3Npb25SZXNwb25zZSIkgtPkkwIeEhwvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uEqYBCgpSZWFkT3V0cHV0EjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRPdXRwdXRSZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRPdXRwdXRSZXNwb25zZSIrgtPkkwIlEiMvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL291dHB1dBKeAQoIUmVhZFVybHMSMi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUmVhZFVybHNSZXF1ZXN0GjMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRVcmxzUmVzcG9uc2UiKYLT5JMCIxIhL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi91cmxzErEBCg1TdHJlYW1TZXNzaW9uEjcubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0cmVhbVNlc3Npb25SZXF1ZXN0GjgubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0cmVhbVNlc3Npb25SZXNwb25zZSIrgtPkkwIlEiMvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL3N0cmVhbTABEqYBCgpBY2tNZXNzYWdlEjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkFja01lc3NhZ2VSZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkFja01lc3NhZ2VSZXNwb25zZSIrgtPkkwIlOgEqIiAvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL2FjaxKoAQoKUnVuU2Vzc2lvbhI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVzcG9uc2UiK4LT5JMCJToBKiIgL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9ydW4wARKwAQoKUnVuSW5oZXJpdBI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5Jbmhlcml0UmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5Jbmhlcml0UmVzcG9uc2UiM4LT5JMCLToBKiIoL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9ydW4taW5oZXJpdDABGokBykEWYWRhcHQubW9jaGFidWdhcGlzLmNvbdJBbWh0dHBzOi8vd3d3Lm1vY2hhYnVnYXBpcy5jb20vYXV0aC9hZGFwdC5hdXRvbWF0aW9ucyxodHRwczovL3d3dy5tb2NoYWJ1Z2FwaXMuY29tL2F1dGgvYWRhcHQuYXV0b21hdGlvbnMuc3RhcnRiBnByb3RvMw",[l,Fe,Ee,Tn,y]);var oe=Pn("CjRtb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9leGVjdXRvcl9zZXJ2aWNlLnByb3RvEh1tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MSK+AQolRXhlY3V0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVxdWVzdBJOCgpvcGVyYXRpb25zGAEgAygLMi0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuV3JpdGVPcGVyYXRpb25CC7pICJIBBQgBEPQDEkUKCW5hbWVzcGFjZRgCIAEoDjIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk5hbWVzcGFjZUIIukgFggECIAAi7gEKJkV4ZWN1dG9yU2VydmljZUJhdGNoV3JpdGVTdG9yZVJlc3BvbnNlEmUKCG1ldGFkYXRhGAEgAygLMlMubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVzcG9uc2UuTWV0YWRhdGFFbnRyeRpdCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRI7CgV2YWx1ZRgCIAEoCzIsLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlZhbHVlTWV0YWRhdGE6AjgBIrYBCiBFeGVjdXRvclNlcnZpY2VXcml0ZVN0b3JlUmVxdWVzdBJLCglvcGVyYXRpb24YASABKAsyOC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25kaXRpb25hbFdyaXRlT3BlcmF0aW9uEkUKCW5hbWVzcGFjZRgCIAEoDjIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk5hbWVzcGFjZUIIukgFggECIAAidQohRXhlY3V0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlc3BvbnNlEkMKCG1ldGFkYXRhGAEgASgLMiwubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuVmFsdWVNZXRhZGF0YUgAiAEBQgsKCV9tZXRhZGF0YSKPAQokRXhlY3V0b3JTZXJ2aWNlQmF0Y2hSZWFkU3RvcmVSZXF1ZXN0EiAKBGtleXMYASADKAlCErpID5IBDAgBEJBOIgVyAxiAIBJFCgluYW1lc3BhY2UYAiABKA4yKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5OYW1lc3BhY2VCCLpIBYIBAiAAIt4BCiVFeGVjdXRvclNlcnZpY2VCYXRjaFJlYWRTdG9yZVJlc3BvbnNlEl4KBWl0ZW1zGAEgAygLMk8ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlQmF0Y2hSZWFkU3RvcmVSZXNwb25zZS5JdGVtc0VudHJ5GlUKCkl0ZW1zRW50cnkSCwoDa2V5GAEgASgJEjYKBXZhbHVlGAIgASgLMicubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuR2V0VmFsdWU6AjgBIq4BCiFFeGVjdXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlcXVlc3QSQgoJb3BlcmF0aW9uGAEgASgLMicubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuU2VsZWN0T3BCBrpIA8gBARJFCgluYW1lc3BhY2UYAiABKA4yKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5OYW1lc3BhY2VCCLpIBYIBAiAAIoACCiJFeGVjdXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlc3BvbnNlElsKBWl0ZW1zGAEgAygLMkwubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlU2VsZWN0U3RvcmVSZXNwb25zZS5JdGVtc0VudHJ5EhcKCm5leHRfdG9rZW4YAiABKAlIAIgBARpVCgpJdGVtc0VudHJ5EgsKA2tleRgBIAEoCRI2CgV2YWx1ZRgCIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldFZhbHVlOgI4AUINCgtfbmV4dF90b2tlbiI2Ch5DYW5jZWxFeGNoYW5nZU9wZXJhdGlvblJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBIiEKH0NhbmNlbEV4Y2hhbmdlT3BlcmF0aW9uUmVzcG9uc2UiMwobR2V0RXhjaGFuZ2VPcGVyYXRpb25SZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABASJeChxHZXRFeGNoYW5nZU9wZXJhdGlvblJlc3BvbnNlEj4KBGl0ZW0YASABKAsyMC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGNoYW5nZU9wZXJhdGlvbiL3AgoXRGlzcGF0Y2hFeGNoYW5nZVJlcXVlc3QSMwoEbmFtZRgBIAEoCUIlukgiciAQARhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBI8CghyZWNlaXZlchgCIAEoCUIlukgiciAQARhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJEgAiAEBEoUBCgdzaWduYWxzGAMgAygLMkMubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRGlzcGF0Y2hFeGNoYW5nZVJlcXVlc3QuU2lnbmFsc0VudHJ5Qi+6SCyaASkIABAyIiNyIRABGIAEMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBpUCgxTaWduYWxzRW50cnkSCwoDa2V5GAEgASgJEjMKBXZhbHVlGAIgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGE6AjgBQgsKCV9yZWNlaXZlciJfChhEaXNwYXRjaEV4Y2hhbmdlUmVzcG9uc2USQwoJb3BlcmF0aW9uGAEgASgLMjAubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhjaGFuZ2VPcGVyYXRpb24irQIKC1NlbmRSZXF1ZXN0Ej0KC3RyYW5zbWl0dGVyGAEgASgJQiO6SCByHhhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJEgAiAEBEnkKB3NpZ25hbHMYAiADKAsyNy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5TZW5kUmVxdWVzdC5TaWduYWxzRW50cnlCL7pILJoBKQgAEDIiI3IhEAEYgAQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX3RyYW5zbWl0dGVyIg4KDFNlbmRSZXNwb25zZSJhChxCYXRjaEdldEFjdGl2ZVNpZ25hbHNSZXF1ZXN0EkEKBW5hbWVzGAEgAygJQjK6SC+SASwIARD0AxgBIiNyIRABGIAEMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJCLdAQodQmF0Y2hHZXRBY3RpdmVTaWduYWxzUmVzcG9uc2USVgoFaXRlbXMYASADKAsyRy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5CYXRjaEdldEFjdGl2ZVNpZ25hbHNSZXNwb25zZS5JdGVtc0VudHJ5EhAKCHJlY2VpdmVyGAIgASgJGlIKCkl0ZW1zRW50cnkSCwoDa2V5GAEgASgJEjMKBXZhbHVlGAIgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGE6AjgBIqgBChhMaXN0QWN0aXZlU2lnbmFsc1JlcXVlc3QSIAoJcGFnZV9zaXplGAEgASgFQgi6SAUaAxj0A0gAiAEBEh0KBmN1cnNvchgCIAEoCUIIukgFcgMY9ANIAYgBARIdChBvcmRlcl9kZXNjZW5kaW5nGAMgASgISAKIAQFCDAoKX3BhZ2Vfc2l6ZUIJCgdfY3Vyc29yQhMKEV9vcmRlcl9kZXNjZW5kaW5nIoUCChlMaXN0QWN0aXZlU2lnbmFsc1Jlc3BvbnNlElYKB3NpZ25hbHMYASADKAsyRS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5MaXN0QWN0aXZlU2lnbmFsc1Jlc3BvbnNlLlNpZ25hbHNFbnRyeRIQCghyZWNlaXZlchgCIAEoCRIYCgtuZXh0X2N1cnNvchgDIAEoCUgAiAEBGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX25leHRfY3Vyc29yImsKJUV4ZWN1dG9yU2VydmljZUdldFZlcnRleENvbmZpZ1JlcXVlc3QSMwoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tIAIgBAUINCgtfZmllbGRfbWFzayKrAgomRXhlY3V0b3JTZXJ2aWNlR2V0VmVydGV4Q29uZmlnUmVzcG9uc2USDgoGY29uZmlnGAEgASgMEjoKCG1ldGFkYXRhGAIgASgLMigubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlZlcnRleE1ldGFkYXRhEnoKE2NvbmZpZ3VyZWRfc2VydmljZXMYAyADKAsyXS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGVjdXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXNwb25zZS5Db25maWd1cmVkU2VydmljZXNFbnRyeRo5ChdDb25maWd1cmVkU2VydmljZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBImgKEUV4Y2hhbmdlT3BlcmF0aW9uEgwKBG5hbWUYASABKAkSCgoCaWQYAiABKAkSOQoGc3RhdHVzGAMgASgOMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXR1czLKDAoPRXhlY3V0b3JTZXJ2aWNlEp4BCg9HZXRWZXJ0ZXhDb25maWcSRC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGVjdXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXF1ZXN0GkUubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlR2V0VmVydGV4Q29uZmlnUmVzcG9uc2UShgEKEUxpc3RBY3RpdmVTaWduYWxzEjcubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuTGlzdEFjdGl2ZVNpZ25hbHNSZXF1ZXN0GjgubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuTGlzdEFjdGl2ZVNpZ25hbHNSZXNwb25zZRKSAQoVQmF0Y2hHZXRBY3RpdmVTaWduYWxzEjsubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRBY3RpdmVTaWduYWxzUmVxdWVzdBo8Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkJhdGNoR2V0QWN0aXZlU2lnbmFsc1Jlc3BvbnNlEl8KBFNlbmQSKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5TZW5kUmVxdWVzdBorLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlNlbmRSZXNwb25zZRKDAQoQRGlzcGF0Y2hFeGNoYW5nZRI2Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkRpc3BhdGNoRXhjaGFuZ2VSZXF1ZXN0GjcubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRGlzcGF0Y2hFeGNoYW5nZVJlc3BvbnNlEo8BChRHZXRFeGNoYW5nZU9wZXJhdGlvbhI6Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldEV4Y2hhbmdlT3BlcmF0aW9uUmVxdWVzdBo7Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldEV4Y2hhbmdlT3BlcmF0aW9uUmVzcG9uc2USmAEKF0NhbmNlbEV4Y2hhbmdlT3BlcmF0aW9uEj0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ2FuY2VsRXhjaGFuZ2VPcGVyYXRpb25SZXF1ZXN0Gj4ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ2FuY2VsRXhjaGFuZ2VPcGVyYXRpb25SZXNwb25zZRKPAQoKV3JpdGVTdG9yZRI/Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkV4ZWN1dG9yU2VydmljZVdyaXRlU3RvcmVSZXF1ZXN0GkAubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlc3BvbnNlEp4BCg9CYXRjaFdyaXRlU3RvcmUSRC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGVjdXRvclNlcnZpY2VCYXRjaFdyaXRlU3RvcmVSZXF1ZXN0GkUubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVzcG9uc2USmwEKDkJhdGNoUmVhZFN0b3JlEkMubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlQmF0Y2hSZWFkU3RvcmVSZXF1ZXN0GkQubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlQmF0Y2hSZWFkU3RvcmVSZXNwb25zZRKSAQoLU2VsZWN0U3RvcmUSQC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGVjdXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlcXVlc3QaQS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGVjdXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlc3BvbnNlYgZwcm90bzM",[l,On,fe,y,H,V]);var ae=jn(oe,0);import{fileDesc as _n,messageDesc as mo,serviceDesc as qn}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_struct as $n,file_google_protobuf_timestamp as et}from"@bufbuild/protobuf/wkt";var nt=_n("CjJtb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9wbHVnaW5fc2VydmljZS5wcm90bxIdbW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEiGgoYR2V0U3lzdGVtU2VydmljZXNSZXF1ZXN0IsUBChlHZXRTeXN0ZW1TZXJ2aWNlc1Jlc3BvbnNlEm0KE2NvbmZpZ3VyZWRfc2VydmljZXMYASADKAsyUC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5HZXRTeXN0ZW1TZXJ2aWNlc1Jlc3BvbnNlLkNvbmZpZ3VyZWRTZXJ2aWNlc0VudHJ5GjkKF0NvbmZpZ3VyZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEiMgoQQXV0aG9yaXplUmVxdWVzdBIeCgxhY2Nlc3NfdG9rZW4YASABKAlCCLpIBXIDGJBOIhMKEUF1dGhvcml6ZVJlc3BvbnNlIoABCh5CYXRjaEdldFN5c3RlbVZhcmlhYmxlc1JlcXVlc3QSXgoFbmFtZXMYASADKAlCT7pITJIBSQgBEGQYASJBcj8QARhkMjleW18kYS16QS1aXVtfJGEtekEtWjAtOV0qKD86XC5bXyRhLXpBLVpdW18kYS16QS1aMC05XSopKiQiwQEKH0JhdGNoR2V0U3lzdGVtVmFyaWFibGVzUmVzcG9uc2USWAoFaXRlbXMYASADKAsySS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5CYXRjaEdldFN5c3RlbVZhcmlhYmxlc1Jlc3BvbnNlLkl0ZW1zRW50cnkaRAoKSXRlbXNFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWU6AjgBIn4KHEJhdGNoR2V0VXNlclZhcmlhYmxlc1JlcXVlc3QSXgoFbmFtZXMYASADKAlCT7pITJIBSQgBEGQYASJBcj8QARhkMjleW18kYS16QS1aXVtfJGEtekEtWjAtOV0qKD86XC5bXyRhLXpBLVpdW18kYS16QS1aMC05XSopKiQivQEKHUJhdGNoR2V0VXNlclZhcmlhYmxlc1Jlc3BvbnNlElYKBWl0ZW1zGAEgAygLMkcubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRVc2VyVmFyaWFibGVzUmVzcG9uc2UuSXRlbXNFbnRyeRpECgpJdGVtc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEiewoZQmF0Y2hHZXRVc2VyVG9rZW5zUmVxdWVzdBJeCgVuYW1lcxgBIAMoCUJPukhMkgFJCAEQZBgBIkFyPxABGGQyOV5bXyRhLXpBLVpdW18kYS16QS1aMC05XSooPzpcLltfJGEtekEtWl1bXyRhLXpBLVowLTldKikqJCLFAQoaQmF0Y2hHZXRVc2VyVG9rZW5zUmVzcG9uc2USUwoFaXRlbXMYASADKAsyRC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5CYXRjaEdldFVzZXJUb2tlbnNSZXNwb25zZS5JdGVtc0VudHJ5GlIKCkl0ZW1zRW50cnkSCwoDa2V5GAEgASgJEjMKBXZhbHVlGAIgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuVG9rZW46AjgBIn0KG0JhdGNoR2V0U3lzdGVtVG9rZW5zUmVxdWVzdBJeCgVuYW1lcxgBIAMoCUJPukhMkgFJCAEQZBgBIkFyPxABGGQyOV5bXyRhLXpBLVpdW18kYS16QS1aMC05XSooPzpcLltfJGEtekEtWl1bXyRhLXpBLVowLTldKikqJCLJAQocQmF0Y2hHZXRTeXN0ZW1Ub2tlbnNSZXNwb25zZRJVCgVpdGVtcxgBIAMoCzJGLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkJhdGNoR2V0U3lzdGVtVG9rZW5zUmVzcG9uc2UuSXRlbXNFbnRyeRpSCgpJdGVtc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlRva2VuOgI4ASJfCgVUb2tlbhIMCgRuYW1lGAEgASgJEg0KBXRva2VuGAIgASgJEgwKBHR5cGUYAyABKAkSKwoHZXhwaXJlcxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAy1gYKDVBsdWdpblNlcnZpY2USbgoJQXV0aG9yaXplEi8ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQXV0aG9yaXplUmVxdWVzdBowLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkF1dGhvcml6ZVJlc3BvbnNlEoYBChFHZXRTeXN0ZW1TZXJ2aWNlcxI3Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldFN5c3RlbVNlcnZpY2VzUmVxdWVzdBo4Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldFN5c3RlbVNlcnZpY2VzUmVzcG9uc2USmAEKF0JhdGNoR2V0U3lzdGVtVmFyaWFibGVzEj0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRTeXN0ZW1WYXJpYWJsZXNSZXF1ZXN0Gj4ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRTeXN0ZW1WYXJpYWJsZXNSZXNwb25zZRKSAQoVQmF0Y2hHZXRVc2VyVmFyaWFibGVzEjsubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRVc2VyVmFyaWFibGVzUmVxdWVzdBo8Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkJhdGNoR2V0VXNlclZhcmlhYmxlc1Jlc3BvbnNlEokBChJCYXRjaEdldFVzZXJUb2tlbnMSOC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5CYXRjaEdldFVzZXJUb2tlbnNSZXF1ZXN0GjkubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRVc2VyVG9rZW5zUmVzcG9uc2USjwEKFEJhdGNoR2V0U3lzdGVtVG9rZW5zEjoubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRTeXN0ZW1Ub2tlbnNSZXF1ZXN0GjsubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRTeXN0ZW1Ub2tlbnNSZXNwb25zZWIGcHJvdG8z",[l,$n,et]);var He=qn(nt,0);import{enumDesc as ho,fileDesc as tt,messageDesc as X,serviceDesc as st}from"@bufbuild/protobuf/codegenv2";var R=tt("CjVtb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9maWxlZm9yZ2Vfc2VydmljZS5wcm90bxIdbW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEi+wEKFVJlbmRlckRvY3VtZW50UmVxdWVzdBI/CgtodG1sX3RvX3BkZhgBIAEoCzIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkh0bWxUb1BkZkgAEkcKD21hcmtkb3duX3RvX3BkZhgCIAEoCzIsLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk1hcmtkb3duVG9QZGZIABJDCg1vZmZpY2VfdG9fcGRmGAMgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuT2ZmaWNlVG9QZGZIAEITCgpjb252ZXJzaW9uEgW6SAIIASJOChZSZW5kZXJEb2N1bWVudFJlc3BvbnNlEjQKBm91dHB1dBgBIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhIvoCCglIdG1sVG9QZGYSIAoKaW5kZXhfaHRtbBgBIAEoCUIMukgJcgcQARiAgIAFEiMKC2hlYWRlcl9odG1sGAIgASgJQgm6SAZyBBiAgEBIAIgBARIjCgtmb290ZXJfaHRtbBgDIAEoCUIJukgGcgQYgIBASAGIAQESPgoGYXNzZXRzGAQgAygLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCCLpIBZIBAhBkEkUKBnJlbmRlchgKIAEoCzIwLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkh0bWxSZW5kZXJPcHRpb25zSAKIAQESRAoGb3V0cHV0GAsgASgLMi8ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUGRmT3V0cHV0T3B0aW9uc0gDiAEBQg4KDF9oZWFkZXJfaHRtbEIOCgxfZm9vdGVyX2h0bWxCCQoHX3JlbmRlckIJCgdfb3V0cHV0IskDCg1NYXJrZG93blRvUGRmEiEKDHdyYXBwZXJfaHRtbBgBIAEoCUILukgIcgYQARiAgEASSAoObWFya2Rvd25fZmlsZXMYAiADKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YUIKukgHkgEECAEQMhIjCgtoZWFkZXJfaHRtbBgDIAEoCUIJukgGcgQYgIBASACIAQESIwoLZm9vdGVyX2h0bWwYBCABKAlCCbpIBnIEGICAQEgBiAEBEj4KBmFzc2V0cxgFIAMoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhQgi6SAWSAQIQZBJFCgZyZW5kZXIYCiABKAsyMC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5IdG1sUmVuZGVyT3B0aW9uc0gCiAEBEkQKBm91dHB1dBgLIAEoCzIvLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlBkZk91dHB1dE9wdGlvbnNIA4gBAUIOCgxfaGVhZGVyX2h0bWxCDgoMX2Zvb3Rlcl9odG1sQgkKB19yZW5kZXJCCQoHX291dHB1dCKPBwoLT2ZmaWNlVG9QZGYS2gUKCGRvY3VtZW50GAEgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCoQW6SJ0FugGWBQoYdmFsaWRfZG9jdW1lbnRfZXh0ZW5zaW9uEi1kb2N1bWVudCBtdXN0IGhhdmUgYSBzdXBwb3J0ZWQgZmlsZSBleHRlbnNpb24aygR0aGlzLmZpbGVuYW1lLm1hdGNoZXMoJyg/aSlcXC4oMTIzfDYwMnxhYnd8YmlifGJtcHxjZHJ8Y2dtfGNteHxjc3Z8Y3drfGRiZnxkaWZ8ZG9jfGRvY218ZG9jeHxkb3R8ZG90bXxkb3R4fGR4ZnxlbWZ8ZXBzfGVwdWJ8Zm9kZ3xmb2RwfGZvZHN8Zm9kdHxmb3BkfGdpZnxodG18aHRtbHxod3B8anBlZ3xqcGd8a2V5fGx0eHxsd3B8bWN3fG1ldHxtbWx8bXd8bnVtYmVyc3xvZGR8b2RnfG9kbXxvZHB8b2RzfG9kdHxvdGd8b3RofG90cHxvdHN8b3R0fHBhZ2VzfHBibXxwY2R8cGN0fHBjeHxwZGJ8cGRmfHBnbXxwbmd8cG90fHBvdG18cG90eHxwcG18cHBzfHBwdHxwcHRtfHBwdHh8cHNkfHBzd3xwdWJ8cHdwfHB4bHxyYXN8cnRmfHNkYXxzZGN8c2RkfHNkcHxzZHd8c2dsfHNsa3xzbWZ8c3RjfHN0ZHxzdGl8c3R3fHN2Z3xzdm18c3dmfHN4Y3xzeGR8c3hnfHN4aXxzeG18c3h3fHRnYXx0aWZ8dGlmZnx0eHR8dW9mfHVvcHx1b3N8dW90fHZkeHx2b3J8dnNkfHZzZG18dnNkeHx3YjJ8d2sxfHdrc3x3bWZ8d3BkfHdwZ3x3cHN8eGJtfHhodG1sfHhsc3x4bHNifHhsc218eGxzeHx4bHR8eGx0bXx4bHR4fHhsd3x4bWx8eHBtfHphYncpJCcpyAEBEkcKBnJlbmRlchgKIAEoCzIyLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk9mZmljZVJlbmRlck9wdGlvbnNIAIgBARJECgZvdXRwdXQYCyABKAsyLy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5QZGZPdXRwdXRPcHRpb25zSAGIAQFCCQoHX3JlbmRlckIJCgdfb3V0cHV0IqQMChFIdG1sUmVuZGVyT3B0aW9ucxIdChBwcmludF9iYWNrZ3JvdW5kGAEgASgISACIAQESHAoPb21pdF9iYWNrZ3JvdW5kGAIgASgISAGIAQESIQoUcHJlZmVyX2Nzc19wYWdlX3NpemUYAyABKAhIAogBARJSChNlbXVsYXRlZF9tZWRpYV90eXBlGAQgASgOMjAubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRW11bGF0ZWRNZWRpYVR5cGVIA4gBARIkCgtwYXBlcl93aWR0aBgFIAEoAkIKukgHCgUlAAAAAEgEiAEBEiUKDHBhcGVyX2hlaWdodBgGIAEoAkIKukgHCgUlAAAAAEgFiAEBEiMKCm1hcmdpbl90b3AYByABKAJCCrpIBwoFLQAAAABIBogBARIlCgxtYXJnaW5fcmlnaHQYCCABKAJCCrpIBwoFLQAAAABIB4gBARImCg1tYXJnaW5fYm90dG9tGAkgASgCQgq6SAcKBS0AAAAASAiIAQESJAoLbWFyZ2luX2xlZnQYCiABKAJCCrpIBwoFLQAAAABICYgBARIWCglsYW5kc2NhcGUYCyABKAhICogBARIjCgVzY2FsZRgMIAEoAkIPukgMCgodAAAAQC3NzMw9SAuIAQESRwoLcGFnZV9yYW5nZXMYDSABKAlCLbpIKnIoMiZeWzAtOV0rKC1bMC05XSspPygsWzAtOV0rKC1bMC05XSspPykqJEgMiAEBEhgKC3NpbmdsZV9wYWdlGA4gASgISA2IAQESIAoTZ2VuZXJhdGVfdGFnZ2VkX3BkZhgPIAEoCEgOiAEBOqQFukigBRraAQoXbWFyZ2luc19maXRfcGFwZXJfd2lkdGgSMmxlZnQgKyByaWdodCBtYXJnaW5zIG11c3QgYmUgbGVzcyB0aGFuIHBhcGVyIHdpZHRoGooBKCFoYXModGhpcy5wYXBlcl93aWR0aCkgfHwgIWhhcyh0aGlzLm1hcmdpbl9sZWZ0KSB8fCAhaGFzKHRoaXMubWFyZ2luX3JpZ2h0KSkgfHwgKHRoaXMubWFyZ2luX2xlZnQgKyB0aGlzLm1hcmdpbl9yaWdodCA8IHRoaXMucGFwZXJfd2lkdGgpGt4BChhtYXJnaW5zX2ZpdF9wYXBlcl9oZWlnaHQSM3RvcCArIGJvdHRvbSBtYXJnaW5zIG11c3QgYmUgbGVzcyB0aGFuIHBhcGVyIGhlaWdodBqMASghaGFzKHRoaXMucGFwZXJfaGVpZ2h0KSB8fCAhaGFzKHRoaXMubWFyZ2luX3RvcCkgfHwgIWhhcyh0aGlzLm1hcmdpbl9ib3R0b20pKSB8fCAodGhpcy5tYXJnaW5fdG9wICsgdGhpcy5tYXJnaW5fYm90dG9tIDwgdGhpcy5wYXBlcl9oZWlnaHQpGt8BCilvbWl0X2JhY2tncm91bmRfcmVxdWlyZXNfcHJpbnRfYmFja2dyb3VuZBI0b21pdF9iYWNrZ3JvdW5kIHJlcXVpcmVzIHByaW50X2JhY2tncm91bmQgdG8gYmUgdHJ1ZRp8IWhhcyh0aGlzLm9taXRfYmFja2dyb3VuZCkgfHwgdGhpcy5vbWl0X2JhY2tncm91bmQgPT0gZmFsc2UgfHwgKGhhcyh0aGlzLnByaW50X2JhY2tncm91bmQpICYmIHRoaXMucHJpbnRfYmFja2dyb3VuZCA9PSB0cnVlKUITChFfcHJpbnRfYmFja2dyb3VuZEISChBfb21pdF9iYWNrZ3JvdW5kQhcKFV9wcmVmZXJfY3NzX3BhZ2Vfc2l6ZUIWChRfZW11bGF0ZWRfbWVkaWFfdHlwZUIOCgxfcGFwZXJfd2lkdGhCDwoNX3BhcGVyX2hlaWdodEINCgtfbWFyZ2luX3RvcEIPCg1fbWFyZ2luX3JpZ2h0QhAKDl9tYXJnaW5fYm90dG9tQg4KDF9tYXJnaW5fbGVmdEIMCgpfbGFuZHNjYXBlQggKBl9zY2FsZUIOCgxfcGFnZV9yYW5nZXNCDgoMX3NpbmdsZV9wYWdlQhYKFF9nZW5lcmF0ZV90YWdnZWRfcGRmItINChNPZmZpY2VSZW5kZXJPcHRpb25zEh8KCHBhc3N3b3JkGAEgASgJQgi6SAVyAxiAAkgAiAEBEhYKCWxhbmRzY2FwZRgCIAEoCEgBiAEBEkcKC3BhZ2VfcmFuZ2VzGAMgASgJQi26SCpyKDImXlswLTldKygtWzAtOV0rKT8oLFswLTldKygtWzAtOV0rKT8pKiRIAogBARIbCg51cGRhdGVfaW5kZXhlcxgEIAEoCEgDiAEBEh8KEmV4cG9ydF9mb3JtX2ZpZWxkcxgFIAEoCEgEiAEBEigKG2FsbG93X2R1cGxpY2F0ZV9maWVsZF9uYW1lcxgGIAEoCEgFiAEBEh0KEGV4cG9ydF9ib29rbWFya3MYByABKAhIBogBARIwCiNleHBvcnRfYm9va21hcmtzX3RvX3BkZl9kZXN0aW5hdGlvbhgIIAEoCEgHiAEBEiAKE2V4cG9ydF9wbGFjZWhvbGRlcnMYCSABKAhICIgBARIZCgxleHBvcnRfbm90ZXMYCiABKAhICYgBARIfChJleHBvcnRfbm90ZXNfcGFnZXMYCyABKAhICogBARIkChdleHBvcnRfb25seV9ub3Rlc19wYWdlcxgMIAEoCEgLiAEBEiMKFmV4cG9ydF9ub3Rlc19pbl9tYXJnaW4YDSABKAhIDIgBARItCiBjb252ZXJ0X29vb190YXJnZXRfdG9fcGRmX3RhcmdldBgOIAEoCEgNiAEBEicKGmV4cG9ydF9saW5rc19yZWxhdGl2ZV9mc3lzGA8gASgISA6IAQESIQoUZXhwb3J0X2hpZGRlbl9zbGlkZXMYECABKAhID4gBARIdChBza2lwX2VtcHR5X3BhZ2VzGBEgASgISBCIAQESHwoSc2luZ2xlX3BhZ2Vfc2hlZXRzGBIgASgISBGIAQESLAofYWRkX29yaWdpbmFsX2RvY3VtZW50X2FzX3N0cmVhbRgTIAEoCEgSiAEBEicKGmxvc3NsZXNzX2ltYWdlX2NvbXByZXNzaW9uGBQgASgISBOIAQESHwoHcXVhbGl0eRgVIAEoBUIJukgGGgQYZCgBSBSIAQESJAoXcmVkdWNlX2ltYWdlX3Jlc29sdXRpb24YFiABKAhIFYgBARI2ChRtYXhfaW1hZ2VfcmVzb2x1dGlvbhgXIAEoBUITukgQGg4wSzCWATCsAjDYBDCwCUgWiAEBOo8CukiLAhqIAgozZXhwb3J0X29ubHlfbm90ZXNfcGFnZXNfcmVxdWlyZXNfZXhwb3J0X25vdGVzX3BhZ2VzEj5leHBvcnRfb25seV9ub3Rlc19wYWdlcyByZXF1aXJlcyBleHBvcnRfbm90ZXNfcGFnZXMgdG8gYmUgdHJ1ZRqQASFoYXModGhpcy5leHBvcnRfb25seV9ub3Rlc19wYWdlcykgfHwgdGhpcy5leHBvcnRfb25seV9ub3Rlc19wYWdlcyA9PSBmYWxzZSB8fCAoaGFzKHRoaXMuZXhwb3J0X25vdGVzX3BhZ2VzKSAmJiB0aGlzLmV4cG9ydF9ub3Rlc19wYWdlcyA9PSB0cnVlKUILCglfcGFzc3dvcmRCDAoKX2xhbmRzY2FwZUIOCgxfcGFnZV9yYW5nZXNCEQoPX3VwZGF0ZV9pbmRleGVzQhUKE19leHBvcnRfZm9ybV9maWVsZHNCHgocX2FsbG93X2R1cGxpY2F0ZV9maWVsZF9uYW1lc0ITChFfZXhwb3J0X2Jvb2ttYXJrc0ImCiRfZXhwb3J0X2Jvb2ttYXJrc190b19wZGZfZGVzdGluYXRpb25CFgoUX2V4cG9ydF9wbGFjZWhvbGRlcnNCDwoNX2V4cG9ydF9ub3Rlc0IVChNfZXhwb3J0X25vdGVzX3BhZ2VzQhoKGF9leHBvcnRfb25seV9ub3Rlc19wYWdlc0IZChdfZXhwb3J0X25vdGVzX2luX21hcmdpbkIjCiFfY29udmVydF9vb29fdGFyZ2V0X3RvX3BkZl90YXJnZXRCHQobX2V4cG9ydF9saW5rc19yZWxhdGl2ZV9mc3lzQhcKFV9leHBvcnRfaGlkZGVuX3NsaWRlc0ITChFfc2tpcF9lbXB0eV9wYWdlc0IVChNfc2luZ2xlX3BhZ2Vfc2hlZXRzQiIKIF9hZGRfb3JpZ2luYWxfZG9jdW1lbnRfYXNfc3RyZWFtQh0KG19sb3NzbGVzc19pbWFnZV9jb21wcmVzc2lvbkIKCghfcXVhbGl0eUIaChhfcmVkdWNlX2ltYWdlX3Jlc29sdXRpb25CFwoVX21heF9pbWFnZV9yZXNvbHV0aW9uIosCChBQZGZPdXRwdXRPcHRpb25zEjwKBHBkZmEYASABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5QZGZBRm9ybWF0SACIAQESEgoFcGRmdWEYAiABKAhIAYgBARIUCgdmbGF0dGVuGAMgASgISAKIAQESJAoNdXNlcl9wYXNzd29yZBgEIAEoCUIIukgFcgMYgAFIA4gBARIlCg5vd25lcl9wYXNzd29yZBgFIAEoCUIIukgFcgMYgAFIBIgBAUIHCgVfcGRmYUIICgZfcGRmdWFCCgoIX2ZsYXR0ZW5CEAoOX3VzZXJfcGFzc3dvcmRCEQoPX293bmVyX3Bhc3N3b3JkIrAJCg5JbWFnZU9wZXJhdGlvbhI8CgZyZXNpemUYASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVJlc2l6ZUgAEjgKBGNyb3AYAiABKAsyKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZUNyb3BIABI8CgZyb3RhdGUYAyABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVJvdGF0ZUgAEjgKBGZsaXAYBCABKAsyKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZUZsaXBIABI2CgNwYWQYBSABKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVBhZEgAEjgKBHRyaW0YBiABKAsyKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVRyaW1IABJECgpwcm9wb3J0aW9uGAcgASgLMi4ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VQcm9wb3J0aW9uSAASOgoFZm9jYWwYCCABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZUZvY2FsSAASPAoGYWRqdXN0GAkgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VBZGp1c3RIABI2CgNodWUYCiABKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZUh1ZUgAEjYKA3JnYhgLIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkltYWdlUmdiSAASOAoEYmx1chgMIAEoCzIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkltYWdlQmx1ckgAEj4KB3NoYXJwZW4YDSABKAsyKy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVNoYXJwZW5IABJHCgxyb3VuZF9jb3JuZXIYDiABKAsyLy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVJvdW5kQ29ybmVySAASQgoJd2F0ZXJtYXJrGA8gASgLMi0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VXYXRlcm1hcmtIABI6CgVsYWJlbBgQIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkltYWdlTGFiZWxIABJDCgptYXhfZnJhbWVzGBEgASgLMi0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VNYXhGcmFtZXNIABI4CgRwYWdlGBIgASgLMigubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VQYWdlSAASNgoDZHBpGBMgASgLMicubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VEcGlIAEISCglvcGVyYXRpb24SBbpIAggBIu0BChVUcmFuc2Zvcm1JbWFnZVJlcXVlc3QSOwoFaW5wdXQYASABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YUIGukgDyAEBEksKCm9wZXJhdGlvbnMYAiADKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZU9wZXJhdGlvbkIIukgFkgECEDISPwoGb3V0cHV0GB4gASgLMioubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VPdXRwdXRIAIgBAUIJCgdfb3V0cHV0Ik4KFlRyYW5zZm9ybUltYWdlUmVzcG9uc2USNAoGb3V0cHV0GAEgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGEinQMKC0ltYWdlUmVzaXplEh4KBXdpZHRoGAEgASgFQgq6SAcaBRiIJygASACIAQESHwoGaGVpZ2h0GAIgASgFQgq6SAcaBRiIJygASAGIAQESPAoEdHlwZRgDIAEoDjIpLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlJlc2l6ZVR5cGVIAogBARIUCgdlbmxhcmdlGAQgASgISAOIAQESEwoGZXh0ZW5kGAUgASgISASIAQE6rgG6SKoBGqcBChFyZXF1aXJlX2RpbWVuc2lvbhJEYXQgbGVhc3Qgb25lIG9mIHdpZHRoIG9yIGhlaWdodCBtdXN0IGJlIHNwZWNpZmllZCBhbmQgZ3JlYXRlciB0aGFuIDAaTChoYXModGhpcy53aWR0aCkgJiYgdGhpcy53aWR0aCA+IDApIHx8IChoYXModGhpcy5oZWlnaHQpICYmIHRoaXMuaGVpZ2h0ID4gMClCCAoGX3dpZHRoQgkKB19oZWlnaHRCBwoFX3R5cGVCCgoIX2VubGFyZ2VCCQoHX2V4dGVuZCKdAgoJSW1hZ2VDcm9wEh4KBXdpZHRoGAEgASgFQgq6SAcaBRiIJygASACIAQESHwoGaGVpZ2h0GAIgASgFQgq6SAcaBRiIJygASAGIAQESPAoHZ3Jhdml0eRgDIAEoDjImLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdyYXZpdHlIAogBARIqCghvZmZzZXRfeBgEIAEoBUITukgQGg4YkE4o8LH/////////AUgDiAEBEioKCG9mZnNldF95GAUgASgFQhO6SBAaDhiQTijwsf////////8BSASIAQFCCAoGX3dpZHRoQgkKB19oZWlnaHRCCgoIX2dyYXZpdHlCCwoJX29mZnNldF94QgsKCV9vZmZzZXRfeSJmCgtJbWFnZVJvdGF0ZRIjCgVhbmdsZRgBIAEoBUIPukgMGgowADBaMLQBMI4CSACIAQESGAoLYXV0b19yb3RhdGUYAiABKAhIAYgBAUIICgZfYW5nbGVCDgoMX2F1dG9fcm90YXRlIpICCglJbWFnZUZsaXASFwoKaG9yaXpvbnRhbBgBIAEoCEgAiAEBEhUKCHZlcnRpY2FsGAIgASgISAGIAQE6uAG6SLQBGrEBChZyZXF1aXJlX2ZsaXBfZGlyZWN0aW9uEjNhdCBsZWFzdCBvbmUgb2YgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBtdXN0IGJlIHRydWUaYihoYXModGhpcy5ob3Jpem9udGFsKSAmJiB0aGlzLmhvcml6b250YWwgPT0gdHJ1ZSkgfHwgKGhhcyh0aGlzLnZlcnRpY2FsKSAmJiB0aGlzLnZlcnRpY2FsID09IHRydWUpQg0KC19ob3Jpem9udGFsQgsKCV92ZXJ0aWNhbCKVAwoISW1hZ2VQYWQSGQoDdG9wGAEgASgFQge6SAQaAigASACIAQESGwoFcmlnaHQYAiABKAVCB7pIBBoCKABIAYgBARIcCgZib3R0b20YAyABKAVCB7pIBBoCKABIAogBARIaCgRsZWZ0GAQgASgFQge6SAQaAigASAOIAQE68AG6SOwBGukBCg9yZXF1aXJlX3BhZGRpbmcSP2F0IGxlYXN0IG9uZSBwYWRkaW5nIHZhbHVlIG11c3QgYmUgc3BlY2lmaWVkIGFuZCBncmVhdGVyIHRoYW4gMBqUAShoYXModGhpcy50b3ApICYmIHRoaXMudG9wID4gMCkgfHwgKGhhcyh0aGlzLnJpZ2h0KSAmJiB0aGlzLnJpZ2h0ID4gMCkgfHwgKGhhcyh0aGlzLmJvdHRvbSkgJiYgdGhpcy5ib3R0b20gPiAwKSB8fCAoaGFzKHRoaXMubGVmdCkgJiYgdGhpcy5sZWZ0ID4gMClCBgoEX3RvcEIICgZfcmlnaHRCCQoHX2JvdHRvbUIHCgVfbGVmdCLFAQoJSW1hZ2VUcmltEicKCXRocmVzaG9sZBgBIAEoAkIPukgMCgodAACAPy0AAAAASACIAQESKwoFY29sb3IYAiABKAlCF7pIFHISMhBeWzAtOWEtZkEtRl17Nn0kSAGIAQESFgoJZXF1YWxfaG9yGAMgASgISAKIAQESFgoJZXF1YWxfdmVyGAQgASgISAOIAQFCDAoKX3RocmVzaG9sZEIICgZfY29sb3JCDAoKX2VxdWFsX2hvckIMCgpfZXF1YWxfdmVyIs8DCgtJbWFnZUFkanVzdBIsCgpicmlnaHRuZXNzGAEgASgFQhO6SBAaDhj/ASiB/v////////8BSACIAQESJgoIY29udHJhc3QYAiABKAJCD7pIDAoKHQAAIEEtAAAAAEgBiAEBEigKCnNhdHVyYXRpb24YAyABKAJCD7pIDAoKHQAAIEEtAAAAAEgCiAEBEhYKCWdyYXlzY2FsZRgEIAEoCEgDiAEBOu4BukjqARrnAQoScmVxdWlyZV9hZGp1c3RtZW50ElphdCBsZWFzdCBvbmUgYWRqdXN0bWVudCAoYnJpZ2h0bmVzcywgY29udHJhc3QsIHNhdHVyYXRpb24sIG9yIGdyYXlzY2FsZSkgbXVzdCBiZSBzcGVjaWZpZWQadWhhcyh0aGlzLmJyaWdodG5lc3MpIHx8IGhhcyh0aGlzLmNvbnRyYXN0KSB8fCBoYXModGhpcy5zYXR1cmF0aW9uKSB8fCAoaGFzKHRoaXMuZ3JheXNjYWxlKSAmJiB0aGlzLmdyYXlzY2FsZSA9PSB0cnVlKUINCgtfYnJpZ2h0bmVzc0ILCglfY29udHJhc3RCDQoLX3NhdHVyYXRpb25CDAoKX2dyYXlzY2FsZSIrCglJbWFnZUJsdXISHgoFc2lnbWEYASABKAJCD7pIDAoKHQAAyEIlAAAAACIuCgxJbWFnZVNoYXJwZW4SHgoFc2lnbWEYASABKAJCD7pIDAoKHQAAyEIlAAAAACIuCghJbWFnZUh1ZRIiCgVhbmdsZRgBIAEoBUITukgQGg4YtAEozP7/////////ASJnCghJbWFnZVJnYhIdCgFyGAEgASgFQhK6SA8aDRhkKJz//////////wESHQoBZxgCIAEoBUISukgPGg0YZCic//////////8BEh0KAWIYAyABKAVCErpIDxoNGGQonP//////////ASKbAQoKSW1hZ2VGb2NhbBI8CgZyZWdpb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Gb2NhbFJlZ2lvbkgAEjoKBXBvaW50GAIgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRm9jYWxQb2ludEgAQhMKCmZvY2FsX3R5cGUSBbpIAggBIkcKC0ZvY2FsUmVnaW9uEgwKBGxlZnQYASABKAUSCwoDdG9wGAIgASgFEg0KBXJpZ2h0GAMgASgFEg4KBmJvdHRvbRgEIAEoBSIiCgpGb2NhbFBvaW50EgkKAXgYASABKAUSCQoBeRgCIAEoBSJ/ChBJbWFnZVJvdW5kQ29ybmVyEhMKAnJ4GAEgASgFQge6SAQaAiAAEhgKAnJ5GAIgASgFQge6SAQaAiAASACIAQESKwoFY29sb3IYAyABKAlCF7pIFHISMhBeWzAtOWEtZkEtRl17Nn0kSAGIAQFCBQoDX3J5QggKBl9jb2xvciIxCg9JbWFnZVByb3BvcnRpb24SHgoKcGVyY2VudGFnZRgBIAEoBUIKukgHGgUY9AMoASLJAQoKSW1hZ2VMYWJlbBIYCgR0ZXh0GAEgASgJQgq6SAdyBRABGOgHEgkKAXgYAiABKAUSCQoBeRgDIAEoBRIYCgRzaXplGAQgASgFQgq6SAcaBRjoBygBEiYKBWNvbG9yGAUgASgJQhe6SBRyEjIQXlswLTlhLWZBLUZdezZ9JBIjCgVhbHBoYRgGIAEoAkIPukgMCgodAACAPy0AAAAASACIAQESEQoEZm9udBgHIAEoCUgBiAEBQggKBl9hbHBoYUIHCgVfZm9udCInCg5JbWFnZU1heEZyYW1lcxIVCgFuGAEgASgFQgq6SAcaBRjoBygBIiEKCUltYWdlUGFnZRIUCgNudW0YASABKAVCB7pIBBoCKAEiIwoISW1hZ2VEcGkSFwoDbnVtGAEgASgFQgq6SAcaBRjgEigBIugCCg5JbWFnZVdhdGVybWFyaxI7CgVpbWFnZRgBIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhQga6SAPIAQESPQoIcG9zaXRpb24YAiABKA4yJi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5HcmF2aXR5SACIAQESKgoIb2Zmc2V0X3gYAyABKAVCE7pIEBoOGJBOKPCx/////////wFIAYgBARIqCghvZmZzZXRfeRgEIAEoBUITukgQGg4YkE4o8LH/////////AUgCiAEBEiUKB29wYWNpdHkYBSABKAJCD7pIDAoKHQAAgD8tAAAAAEgDiAEBEh4KBXNjYWxlGAYgASgCQgq6SAcKBSUAAAAASASIAQFCCwoJX3Bvc2l0aW9uQgsKCV9vZmZzZXRfeEILCglfb2Zmc2V0X3lCCgoIX29wYWNpdHlCCAoGX3NjYWxlIroECgtJbWFnZU91dHB1dBI/CgZmb3JtYXQYASABKA4yKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZUZvcm1hdEgAiAEBEh8KB3F1YWxpdHkYAiABKAVCCbpIBhoEGGQoAUgBiAEBEhsKDnN0cmlwX21ldGFkYXRhGAMgASgISAKIAQESMAoKYmFja2dyb3VuZBgEIAEoCUIXukgUchIyEF5bMC05YS1mQS1GXXs2fSRIA4gBARIuChBiYWNrZ3JvdW5kX2FscGhhGAUgASgCQg+6SAwKCh0AAIA/LQAAAABIBIgBARInCg9wbmdfY29tcHJlc3Npb24YBiABKAVCCbpIBhoEGAkoAEgFiAEBEhsKDnBuZ19pbnRlcmxhY2VkGAcgASgISAaIAQESHQoQanBlZ19wcm9ncmVzc2l2ZRgIIAEoCEgHiAEBEhoKDXdlYnBfbG9zc2xlc3MYCSABKAhICIgBARIfCgltYXhfYnl0ZXMYCiABKAVCB7pIBBoCIABICYgBAUIJCgdfZm9ybWF0QgoKCF9xdWFsaXR5QhEKD19zdHJpcF9tZXRhZGF0YUINCgtfYmFja2dyb3VuZEITChFfYmFja2dyb3VuZF9hbHBoYUISChBfcG5nX2NvbXByZXNzaW9uQhEKD19wbmdfaW50ZXJsYWNlZEITChFfanBlZ19wcm9ncmVzc2l2ZUIQCg5fd2VicF9sb3NzbGVzc0IMCgpfbWF4X2J5dGVzItgCChRNYW5pcHVsYXRlUGRmUmVxdWVzdBI4CgVtZXJnZRgBIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlBkZk1lcmdlSAASOAoFc3BsaXQYAiABKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5QZGZTcGxpdEgAEjwKB2VuY3J5cHQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5QZGZFbmNyeXB0SAASPAoHY29udmVydBgEIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlBkZkNvbnZlcnRIABI8CgdmbGF0dGVuGAUgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUGRmRmxhdHRlbkgAQhIKCW9wZXJhdGlvbhIFukgCCAEiTgoVTWFuaXB1bGF0ZVBkZlJlc3BvbnNlEjUKB291dHB1dHMYASADKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YSLEAgoIUGRmTWVyZ2USPwoFZmlsZXMYASADKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YUIKukgHkgEECAIQZBI8CgRwZGZhGAIgASgOMikubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUGRmQUZvcm1hdEgAiAEBEhIKBXBkZnVhGAMgASgISAGIAQESFAoHZmxhdHRlbhgEIAEoCEgCiAEBEiQKDXVzZXJfcGFzc3dvcmQYBSABKAlCCLpIBXIDGIABSAOIAQESJQoOb3duZXJfcGFzc3dvcmQYBiABKAlCCLpIBXIDGIABSASIAQFCBwoFX3BkZmFCCAoGX3BkZnVhQgoKCF9mbGF0dGVuQhAKDl91c2VyX3Bhc3N3b3JkQhEKD19vd25lcl9wYXNzd29yZCK5AwoIUGRmU3BsaXQSOgoEZmlsZRgBIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhQga6SAPIAQESQAoEbW9kZRgCIAEoDjIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlNwbGl0TW9kZUIIukgFggECIAASGAoEc3BhbhgDIAEoCUIKukgHcgUQARjoBxISCgV1bmlmeRgEIAEoCEgAiAEBEjwKBHBkZmEYBSABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5QZGZBRm9ybWF0SAGIAQESEgoFcGRmdWEYBiABKAhIAogBARIUCgdmbGF0dGVuGAcgASgISAOIAQESJAoNdXNlcl9wYXNzd29yZBgIIAEoCUIIukgFcgMYgAFIBIgBARIlCg5vd25lcl9wYXNzd29yZBgJIAEoCUIIukgFcgMYgAFIBYgBAUIICgZfdW5pZnlCBwoFX3BkZmFCCAoGX3BkZnVhQgoKCF9mbGF0dGVuQhAKDl91c2VyX3Bhc3N3b3JkQhEKD19vd25lcl9wYXNzd29yZCKlAQoKUGRmRW5jcnlwdBI6CgRmaWxlGAEgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCBrpIA8gBARIhCg11c2VyX3Bhc3N3b3JkGAIgASgJQgq6SAdyBRABGIABEiUKDm93bmVyX3Bhc3N3b3JkGAMgASgJQgi6SAVyAxiAAUgAiAEBQhEKD19vd25lcl9wYXNzd29yZCLOAgoKUGRmQ29udmVydBI6CgRmaWxlGAEgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCBrpIA8gBARI8CgRwZGZhGAIgASgOMikubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUGRmQUZvcm1hdEgAiAEBEhIKBXBkZnVhGAMgASgISAGIAQE6ngG6SJoBGpcBChlyZXF1aXJlX2NvbnZlcnNpb25fb3B0aW9uEi9hdCBsZWFzdCBvbmUgb2YgcGRmYSBvciBwZGZ1YSBtdXN0IGJlIHNwZWNpZmllZBpJaGFzKHRoaXMucGRmYSkgJiYgdGhpcy5wZGZhICE9IDAgfHwgaGFzKHRoaXMucGRmdWEpICYmIHRoaXMucGRmdWEgPT0gdHJ1ZUIHCgVfcGRmYUIICgZfcGRmdWEiSAoKUGRmRmxhdHRlbhI6CgRmaWxlGAEgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCBrpIA8gBASp3ChFFbXVsYXRlZE1lZGlhVHlwZRIjCh9FTVVMQVRFRF9NRURJQV9UWVBFX1VOU1BFQ0lGSUVEEAASHgoaRU1VTEFURURfTUVESUFfVFlQRV9TQ1JFRU4QARIdChlFTVVMQVRFRF9NRURJQV9UWVBFX1BSSU5UEAIqaQoKUGRmQUZvcm1hdBIcChhQREZfQV9GT1JNQVRfVU5TUEVDSUZJRUQQABITCg9QREZfQV9GT1JNQVRfMUIQARITCg9QREZfQV9GT1JNQVRfMkIQAhITCg9QREZfQV9GT1JNQVRfM0IQAyqcAQoKUmVzaXplVHlwZRIbChdSRVNJWkVfVFlQRV9VTlNQRUNJRklFRBAAEhMKD1JFU0laRV9UWVBFX0ZJVBABEhQKEFJFU0laRV9UWVBFX0ZJTEwQAhIZChVSRVNJWkVfVFlQRV9GSUxMX0RPV04QAxIVChFSRVNJWkVfVFlQRV9GT1JDRRAEEhQKEFJFU0laRV9UWVBFX0FVVE8QBSrzAQoHR3Jhdml0eRIXChNHUkFWSVRZX1VOU1BFQ0lGSUVEEAASEgoOR1JBVklUWV9DRU5URVIQARIRCg1HUkFWSVRZX05PUlRIEAISEQoNR1JBVklUWV9TT1VUSBADEhAKDEdSQVZJVFlfRUFTVBAEEhAKDEdSQVZJVFlfV0VTVBAFEhYKEkdSQVZJVFlfTk9SVEhfRUFTVBAGEhYKEkdSQVZJVFlfTk9SVEhfV0VTVBAHEhYKEkdSQVZJVFlfU09VVEhfRUFTVBAIEhYKEkdSQVZJVFlfU09VVEhfV0VTVBAJEhEKDUdSQVZJVFlfU01BUlQQCirfAQoLSW1hZ2VGb3JtYXQSHAoYSU1BR0VfRk9STUFUX1VOU1BFQ0lGSUVEEAASFQoRSU1BR0VfRk9STUFUX0pQRUcQARIUChBJTUFHRV9GT1JNQVRfUE5HEAISFQoRSU1BR0VfRk9STUFUX1dFQlAQAxIVChFJTUFHRV9GT1JNQVRfQVZJRhAEEhQKEElNQUdFX0ZPUk1BVF9HSUYQBRIVChFJTUFHRV9GT1JNQVRfVElGRhAGEhQKEElNQUdFX0ZPUk1BVF9CTVAQBxIUChBJTUFHRV9GT1JNQVRfSUNPEAgqVwoJU3BsaXRNb2RlEhoKFlNQTElUX01PREVfVU5TUEVDSUZJRUQQABIYChRTUExJVF9NT0RFX0lOVEVSVkFMUxABEhQKEFNQTElUX01PREVfUEFHRVMQAjKMAwoQRmlsZUZvcmdlU2VydmljZRJ9Cg5SZW5kZXJEb2N1bWVudBI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlJlbmRlckRvY3VtZW50UmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlJlbmRlckRvY3VtZW50UmVzcG9uc2USfQoOVHJhbnNmb3JtSW1hZ2USNC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5UcmFuc2Zvcm1JbWFnZVJlcXVlc3QaNS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5UcmFuc2Zvcm1JbWFnZVJlc3BvbnNlEnoKDU1hbmlwdWxhdGVQZGYSMy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5NYW5pcHVsYXRlUGRmUmVxdWVzdBo0Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk1hbmlwdWxhdGVQZGZSZXNwb25zZWIGcHJvdG8z",[l,y]);var ve=X(R,2),ze=X(R,3),Ke=X(R,4);var Ne=X(R,9);var Qe=X(R,35),Le=X(R,36),ke=X(R,37),we=X(R,38),Ue=X(R,39);var De=st(R,0);import{Code as h,ConnectError as I,createContextValues as Te}from"@connectrpc/connect";import{compressedFlag as Pe,createClientMethodSerializers as je,createEnvelopeReadableStream as ie,createMethodUrl as Oe,encodeEnvelope as _e,runStreamingCall as ot,runUnaryCall as at}from"@connectrpc/connect/protocol";import{headerGrpcStatus as qe,requestHeader as $e,trailerFlag as ce,trailerParse as en,validateResponse as nn,validateTrailer as tn}from"@connectrpc/connect/protocol-grpc-web";function E(d){return{async unary(e,n,t,s,o,a){let{serialize:i,parse:u}=je(e,!0);return at({interceptors:d.interceptors,signal:n,timeoutMs:t,req:{stream:!1,service:e.parent,method:e,requestMethod:"POST",url:Oe("https://runtimeapi/",e),header:$e(!0,t,s,!1),contextValues:a??Te(),message:o},next:async r=>{let c=await d.fetcher.fetch(r.url,{method:r.requestMethod,headers:r.header,signal:r.signal,body:_e(0,i(r.message))}),{headerError:G}=nn(c.status,c.headers);if(!c.body)throw G!==void 0?G:new I("missing response body",h.Internal);let A=ie(c.body).getReader(),p,Z;for(;;){let W=await A.read();if(W.done)break;let{flags:C,data:J}=W.value;if((C&Pe)===Pe)throw new I("received compressed data, which is unsupported",h.Internal);if(C===ce){if(p!==void 0)throw new I("extra trailer",h.Internal);p=en(J);continue}if(Z!==void 0)throw new I("extra message",h.Unimplemented);Z=u(J)}if(p===void 0)throw G!==void 0?G:new I("missing trailer",c.headers.has(qe)?h.Unimplemented:h.Unknown);if(tn(p,c.headers),Z===void 0)throw new I("missing message",p.has(qe)?h.Unimplemented:h.Unknown);return{stream:!1,service:e.parent,method:e,header:c.headers,message:Z,trailer:p}}})},async stream(e,n,t,s,o,a){let{serialize:i,parse:u}=je(e,!0);async function r(G){let{value:A,done:p}=await G[Symbol.asyncIterator]().next();if(p)throw new I("missing request message",h.InvalidArgument);return _e(0,i(A))}async function*c(G,A,p,Z,W){if(A){if(!(await ie(G).getReader().read()).done)throw new I("extra data for trailers-only",h.Internal);return}let C=ie(G).getReader(),J=!1;for(;;){let ne=await C.read();if(ne.done)break;let{flags:dn,data:Ze}=ne.value;if((dn&ce)===ce){if(J)throw new I("extra trailer",h.Internal);J=!0;let Ie=en(Ze);tn(Ie,Z),Ie.forEach((rn,mn)=>p.set(mn,rn));continue}if(J)throw new I("extra message after trailer",h.Internal);yield u(Ze)}if("throwIfAborted"in W&&W.throwIfAborted?.(),!J)throw new I("missing trailer",h.Internal)}return ot({interceptors:d.interceptors,signal:n,timeoutMs:t,req:{stream:!0,service:e.parent,method:e,requestMethod:"POST",url:Oe("https://runtimeapi/",e),header:$e(!0,t,s,!1),contextValues:a??Te(),message:o},next:async G=>{let A=await r(G.message),p=await d.fetcher.fetch(G.url,{method:G.requestMethod,headers:G.header,signal:G.signal,body:A}),{foundStatus:Z,headerError:W}=nn(p.status,p.headers);if(W)throw W;if(!p.body)throw new I("missing response body",h.Internal);let C=new Headers;return{...G,header:p.headers,trailer:C,message:c(p.body,Z,C,p.headers,G.signal)}}})}}}import{fileDesc as it,messageDesc as D}from"@bufbuild/protobuf/codegenv2";var T=it("Cixtb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9pbmNvbWluZy5wcm90bxIdbW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEiOgoOSG9zdGluZ0RldGFpbHMSGAoLcHVibGljX2hvc3QYASABKAlIAIgBAUIOCgxfcHVibGljX2hvc3QiZgoVU3RhcnRFeGVjdXRpb25SZXF1ZXN0EhAKCHJlY2VpdmVyGAEgASgJEjsKBGhvc3QYAiABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Ib3N0aW5nRGV0YWlscyIYChZTdGFydEV4ZWN1dGlvblJlc3BvbnNlIlMKFFN0b3BFeGVjdXRpb25SZXF1ZXN0EjsKBGhvc3QYASABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Ib3N0aW5nRGV0YWlscyIXChVTdG9wRXhlY3V0aW9uUmVzcG9uc2UiUQoSQ3JvblRyaWdnZXJSZXF1ZXN0EjsKBGhvc3QYASABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Ib3N0aW5nRGV0YWlscyIVChNDcm9uVHJpZ2dlclJlc3BvbnNlIsgBCg5FeGNoYW5nZVJlc3VsdBITCgt0cmFuc21pdHRlchgBIAEoCRJLCgdzaWduYWxzGAIgAygLMjoubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhjaGFuZ2VSZXN1bHQuU2lnbmFsc0VudHJ5GlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAEi2AEKFUV4Y2hhbmdlUmVzdWx0UmVxdWVzdBJDCglvcGVyYXRpb24YASABKAsyMC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGNoYW5nZU9wZXJhdGlvbhI9CgZyZXN1bHQYAiABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGNoYW5nZVJlc3VsdBI7CgRob3N0GAMgASgLMi0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSG9zdGluZ0RldGFpbHMiGAoWRXhjaGFuZ2VSZXN1bHRSZXNwb25zZWIGcHJvdG8z",[y,oe]);var ge=D(T,1);var le=D(T,3);var de=D(T,5);var re=D(T,8);var gt={config:"config",metadata:"metadata",configuredServices:"configured_services"};function j(d){return gt[d]??d}var O=class{env;pluginService;pluginToken;fileforge;constructor(e,n){this.env=e,this.pluginToken=n,this.pluginService=z(He,E({fetcher:this.env.plugin,interceptors:[t=>async s=>(s.header.set("Authorization",`Bearer ${this.pluginToken}`),await t(s))]})),this.fileforge=z(De,E({fetcher:this.env.fileforge,interceptors:[t=>async s=>(s.header.set("Authorization",`Bearer ${this.pluginToken}`),await t(s))]}))}async getSystemVariable(e){let t=(await this.pluginService.batchGetSystemVariables({names:[e]})).items[e];return t?S(P,t):void 0}async getSystemVariables(...e){let n=await this.pluginService.batchGetSystemVariables({names:e}),t={};for(let[s,o]of Object.entries(n.items))t[s]=S(P,o);return t}async getUserVariable(e){let t=(await this.pluginService.batchGetUserVariables({names:[e]})).items[e];return t?S(P,t):void 0}async getUserVariables(...e){let n=await this.pluginService.batchGetUserVariables({names:e}),t={};for(let[s,o]of Object.entries(n.items))t[s]=S(P,o);return t}async getUserToken(e){return(await this.pluginService.batchGetUserTokens({names:[e]})).items[e]}async getUserTokens(...e){return(await this.pluginService.batchGetUserTokens({names:e})).items}async getSystemToken(e){return(await this.pluginService.batchGetSystemTokens({names:[e]})).items[e]}async getSystemTokens(...e){return(await this.pluginService.batchGetSystemTokens({names:e})).items}userHttpProxy(e){return(n,t)=>{let s=new Request(n,t);return s.headers.set("X-Mochabug-Adapt-Plugin-HttpProxy-Token",`Bearer ${this.pluginToken}`),s.headers.set("X-Mochabug-Adapt-Plugin-HttpProxy-Path",`user:${e}`),s.headers.set("Host",new URL(s.url).host),this.env.httpproxy.fetch(s)}}systemHttpProxy(e){return(n,t)=>{let s=new Request(n,t);return s.headers.set("X-Mochabug-Adapt-Plugin-HttpProxy-Token",`Bearer ${this.pluginToken}`),s.headers.set("X-Mochabug-Adapt-Plugin-HttpProxy-Path",`system:${e}`),s.headers.set("Host",new URL(s.url).host),this.env.httpproxy.fetch(s)}}async authorize(e){await this.pluginService.authorize({accessToken:e})}async getSystemServices(){return(await this.pluginService.getSystemServices({})).configuredServices}async readFile(e){let n=new URL("https://runtimeapi");n.pathname=e;let t=await this.env.assets.fetch(n,{method:"GET"});if(!t.ok)throw sn(t.status);let s=t.headers.get("content-type");if(!s||!s.toLowerCase().includes("application/octet-stream"))throw new b("Invalid file. Are you reading a directory?",g.InvalidArgument);return{content:t.body,mime:s}}async readDirectory(e){let n=new URL("https://runtimeapi");n.pathname=e;let t=await this.env.assets.fetch(n,{method:"GET"});if(!t.ok)throw sn(t.status);let s=t.headers.get("content-type");if(!s||!s.toLowerCase().includes("application/json"))throw new b("Invalid directory. Are you reading a file?",g.InvalidArgument);return await t.json()}createSignalData(e){return m(M,{filename:e.filename,mimeType:"application/octet-stream",data:e.data})}extractBinaryFile(e){return{filename:e.filename??"output",data:e.data}}async htmlToPdf(e){let n=await this.fileforge.renderDocument({conversion:{case:"htmlToPdf",value:m(ve,{indexHtml:e.indexHtml,headerHtml:e.headerHtml,footerHtml:e.footerHtml,assets:e.assets?.map(t=>this.createSignalData(t))??[],render:e.render,output:e.output})}});return this.extractBinaryFile(n.output)}async markdownToPdf(e){let n=await this.fileforge.renderDocument({conversion:{case:"markdownToPdf",value:m(ze,{wrapperHtml:e.wrapperHtml,markdownFiles:e.markdownFiles.map(t=>this.createSignalData(t)),headerHtml:e.headerHtml,footerHtml:e.footerHtml,assets:e.assets?.map(t=>this.createSignalData(t))??[],render:e.render,output:e.output})}});return this.extractBinaryFile(n.output)}async officeToPdf(e){let n=await this.fileforge.renderDocument({conversion:{case:"officeToPdf",value:m(Ke,{document:this.createSignalData(e.document),render:e.render,output:e.output})}});return this.extractBinaryFile(n.output)}async transformImage(e){let n=await this.fileforge.transformImage(m(Ne,{input:this.createSignalData(e.input),operations:e.operations??[],output:e.output}));return this.extractBinaryFile(n.output)}async mergePdfs(e){let n=await this.fileforge.manipulatePdf({operation:{case:"merge",value:m(Qe,{files:e.files.map(t=>this.createSignalData(t)),pdfa:e.pdfa,pdfua:e.pdfua,flatten:e.flatten,userPassword:e.userPassword,ownerPassword:e.ownerPassword})}});return this.extractBinaryFile(n.outputs[0])}async splitPdf(e){return(await this.fileforge.manipulatePdf({operation:{case:"split",value:m(Le,{file:this.createSignalData(e.file),mode:e.mode==="intervals"?1:2,span:e.span,unify:e.unify,pdfa:e.pdfa,pdfua:e.pdfua,flatten:e.flatten,userPassword:e.userPassword,ownerPassword:e.ownerPassword})}})).outputs.map(t=>this.extractBinaryFile(t))}async encryptPdf(e){let n=await this.fileforge.manipulatePdf({operation:{case:"encrypt",value:m(ke,{file:this.createSignalData(e.file),userPassword:e.userPassword,ownerPassword:e.ownerPassword})}});return this.extractBinaryFile(n.outputs[0])}async convertPdf(e){let n=await this.fileforge.manipulatePdf({operation:{case:"convert",value:m(we,{file:this.createSignalData(e.file),pdfa:e.pdfa,pdfua:e.pdfua})}});return this.extractBinaryFile(n.outputs[0])}async flattenPdf(e){let n=await this.fileforge.manipulatePdf({operation:{case:"flatten",value:m(Ue,{file:this.createSignalData(e.file)})}});return this.extractBinaryFile(n.outputs[0])}},ue=class{result;constructor(e){this.result=e}get(e){let n=this.result[e];if(n)return{value:JSON.parse(new TextDecoder().decode(n.value)),ttl:n.metadata.ttl,lastModified:B(n.metadata.lastModified),etag:n.metadata.etag}}getBinary(e){let n=this.result[e];if(n)return{ttl:n.metadata.ttl,value:n.value,lastModified:B(n.metadata.lastModified),etag:n.metadata.etag}}},pe=class{ops=[];insert(e,n,t){return this.ops.push(m(U,{operation:{case:"insert",value:{key:e,value:{value:n instanceof Uint8Array?n:new TextEncoder().encode(JSON.stringify(n)),ttl:t}}}})),this}delete(e){return this.ops.push(m(U,{operation:{case:"delete",value:{key:e}}})),this}rangeDelete(e,n,t,s){return this.ops.push(m(U,{operation:{case:"rangeDelete",value:{start:e,end:n,startInclusive:t,endInclusive:s}}})),this}build(){return this.ops}},K=class{service;namespace;constructor(e,n){this.service=e,this.namespace=ct(Je,n)}async insert(e,n,t,s){let o;s&&(o=m(se,{}),s.failIfExists?o.failIfExists=!0:(s.etagEquals&&(o.etag=s.etagEquals),s.timestampEquals?o.timestampCondition={case:"lastModifiedEquals",value:f(s.timestampEquals)}:s.timestampRange&&(o.timestampCondition={case:"lastModifiedRange",value:m(te,{start:s.timestampRange.start?f(s.timestampRange.start):void 0,end:s.timestampRange.end?f(s.timestampRange.end):void 0,startInclusive:s.timestampRange.startInclusive,endInclusive:s.timestampRange.endInclusive})})));let a=await this.service.writeStore({operation:{operation:{case:"insert",value:{key:e,value:{value:n instanceof Uint8Array?n:new TextEncoder().encode(JSON.stringify(n)),ttl:t},precondition:o}}},namespace:this.namespace});return{ttl:a.metadata.ttl,lastModified:B(a.metadata.lastModified),etag:a.metadata.etag}}async delete(e,n){let t;n&&(t=m(We,{}),n.mustExists?t.mustExists=!0:(n.etagEquals&&(t.etag=n.etagEquals),n.timestampEquals?t.timestampCondition={case:"lastModifiedEquals",value:f(n.timestampEquals)}:n.timestampRange&&(t.timestampCondition={case:"lastModifiedRange",value:m(te,{start:n.timestampRange.start?f(n.timestampRange.start):void 0,end:n.timestampRange.end?f(n.timestampRange.end):void 0,startInclusive:n.timestampRange.startInclusive,endInclusive:n.timestampRange.endInclusive})}))),await this.service.writeStore({operation:{operation:{case:"delete",value:{key:e,precondition:t}}},namespace:this.namespace})}async rangeDelete(e,n,t,s){await this.service.batchWriteStore({namespace:this.namespace,operations:[{operation:{case:"rangeDelete",value:{start:e,end:n,startInclusive:t,endInclusive:s}}}]})}async get(e){let t=(await this.service.batchReadStore({keys:[e],namespace:this.namespace})).items[e];if(t)return{data:JSON.parse(new TextDecoder().decode(t.value)),ttl:t.metadata.ttl,etag:t.metadata.etag,lastModified:B(t.metadata.lastModified)}}async getBinary(e){let t=(await this.service.batchReadStore({keys:[e],namespace:this.namespace})).items[e];if(t)return{data:t.value,ttl:t.metadata.ttl,etag:t.metadata.etag,lastModified:B(t.metadata.lastModified)}}async selectRange(e){let n=await this.service.selectStore({namespace:this.namespace,operation:e});return{nextToken:n.nextToken,items:Object.entries(n.items).sort(([t],[s])=>t.localeCompare(s)).map(([t,s])=>({key:t,value:JSON.parse(new TextDecoder().decode(s.value)),ttl:s.metadata.ttl,etag:s.metadata.etag,lastModified:B(s.metadata.lastModified)}))}}async selectRangeBinary(e){let n=await this.service.selectStore({namespace:this.namespace,operation:e});return{nextToken:n.nextToken,items:Object.values(n.items).map(t=>({value:t.value,ttl:t.metadata.ttl,etag:t.metadata.etag,lastModified:B(t.metadata.lastModified)}))}}async writeBatch(e){let n=await this.service.batchWriteStore({namespace:this.namespace,operations:e}),t={};for(let[s,o]of Object.entries(n.metadata))t[s]={ttl:o.ttl,lastModified:B(o.lastModified),etag:o.etag};return t}async readBatch(e){let n=await this.service.batchReadStore({namespace:this.namespace,keys:e});return new ue(n.items)}async acquire(e,n){try{await this.service.writeStore({namespace:this.namespace,operation:{operation:{case:"insert",value:{key:e,value:{value:new Uint8Array([1]),ttl:n??5},precondition:m(se,{failIfExists:!0})}}}})}catch(t){if(t instanceof b&&t.code===g.FailedPrecondition)return!1;throw t}return!0}async release(e){await this.writeBatch(new pe().delete(e).build())}async lock(e,n,t){let s=t?.maxRetries??5,o=t?.initialDelay??50,a=t?.maxDelay??2e3;for(let i=0;i<s;i++)if(await this.acquire(e))try{return await n()}finally{await this.release(e)}else if(i<s-1){let r=Math.min(o*2**i,a);console.log(`Acquisition failed for key: ${e}. Delaying for ${r}ms`),await new Promise(c=>setTimeout(c,r))}throw new Error("Failed to acquire lock after maximum retries")}},N=class extends O{executor;constructor(e,n){super(e,n),this.executor=z(ae,E({fetcher:e.executor,interceptors:[t=>async s=>(s.header.set("Authorization",`Bearer ${n}`),await t(s))]}))}async getConfig(...e){let n=await this.executor.getVertexConfig({fieldMask:e.length>0?m(v,{paths:e.map(j)}):void 0}),t={},s=e.length>0?e:["config","metadata","configuredServices"];if(s.includes("metadata")&&(t.metadata=n.metadata?S(x,n.metadata):void 0),s.includes("configuredServices")&&(t.configuredServices=n.configuredServices||{}),s.includes("config"))if(n.config&&n.config.length>0)try{t.config=JSON.parse(new TextDecoder().decode(n.config))}catch{t.config=void 0}else t.config=void 0;return t}async getConfigBinary(...e){let n=await this.executor.getVertexConfig({fieldMask:e.length>0?m(v,{paths:e.map(j)}):void 0}),t={},s=e.length>0?e:["config","metadata","configuredServices"];return s.includes("metadata")&&(t.metadata=n.metadata?S(x,n.metadata):void 0),s.includes("configuredServices")&&(t.configuredServices=n.configuredServices||{}),s.includes("config")&&(t.config=n.config),t}getLocalStore(e){return new K(this.executor,e==="vertex"?"NAMESPACE_VERTEX":"NAMESPACE_PLUGIN")}getSessionApi(e){return new Q(this.env,this.pluginToken,e)}},Ge=class extends N{sessionAuthHeader;constructor(e,n,t){super(e,n),this.sessionAuthHeader=t,this.executor=z(ae,E({fetcher:e.executor,interceptors:[s=>async o=>(o.header.set("Authorization",t),await s(o))]}))}getAuthHeader(){return this.sessionAuthHeader}getSessionStore(e){return new K(this.executor,e==="vertex"?"NAMESPACE_VERTEX_INSTANCE":"NAMESPACE_PLUGIN_INSTANCE")}},Q=class extends Ge{constructor(e,n,t){super(e,n,t)}async listSignals(e){let n=await this.executor.listActiveSignals({pageSize:e?.pageSize,orderDescending:e?.orderDescending});return{signals:Object.fromEntries(Object.entries(n.signals).map(([t,s])=>[t,JSON.parse(new TextDecoder().decode(s.data))])),receiver:n.receiver,cursor:n.nextCursor}}async listSignalsBinary(e){let n=await this.executor.listActiveSignals({pageSize:e?.pageSize,orderDescending:e?.orderDescending});return{signals:n.signals,receiver:n.receiver,cursor:n.nextCursor}}async continueListSignals(e){let n=await this.executor.listActiveSignals({cursor:e});return{signals:Object.fromEntries(Object.entries(n.signals).map(([t,s])=>[t,JSON.parse(new TextDecoder().decode(s.data))])),receiver:n.receiver,cursor:n.nextCursor}}async continueListSignalsBinary(e){let n=await this.executor.listActiveSignals({cursor:e});return{signals:n.signals,receiver:n.receiver,cursor:n.nextCursor}}async getSignal(e){let t=(await this.executor.batchGetActiveSignals({names:[e]})).items[e];return t?JSON.parse(new TextDecoder().decode(t.data)):void 0}async getSignalBinary(e){return(await this.executor.batchGetActiveSignals({names:[e]})).items[e]}async getSignals(...e){if(e.length===0)return{};let n=await this.executor.batchGetActiveSignals({names:e});if(Object.keys(n.items).length===0)return{};let t={};for(let[s,o]of Object.entries(n.items))t[s]=JSON.parse(new TextDecoder().decode(o.data));return t}async getSignalsBinary(...e){return e.length===0?{}:(await this.executor.batchGetActiveSignals({names:e})).items}async send(e,n){await this.executor.send({transmitter:e,signals:n?Object.fromEntries(Object.entries(n).map(([t,s])=>s?.data instanceof Uint8Array&&typeof s?.mimeType=="string"&&s.mimeType?[t,m(M,{data:s.data,mimeType:s.mimeType,filename:s.filename})]:[t,m(M,{data:new TextEncoder().encode(JSON.stringify(s)),mimeType:"application/json"})])):{}})}async dispatchExchange(e,n,t){return(await this.executor.dispatchExchange({name:e,receiver:n,signals:t?Object.fromEntries(Object.entries(t).map(([o,a])=>a?.data instanceof Uint8Array&&typeof a?.mimeType=="string"&&a.mimeType?[o,m(M,{data:a.data,mimeType:a.mimeType,filename:a.filename})]:[o,m(M,{data:new TextEncoder().encode(JSON.stringify(a)),mimeType:"application/json"})])):{}})).operation}async getExchange(e){let n=await this.executor.getExchangeOperation({id:e});if(!n.item)throw new b("Exchange operation not found",g.NotFound);return n.item}async cancelExchange(e){await this.executor.cancelExchangeOperation({id:e})}},_=class extends O{configurator;constructor(e,n){super(e,n),this.configurator=z(Ye,E({fetcher:e.configurator,interceptors:[t=>async s=>(s.header.set("Authorization",`Bearer ${n}`),await t(s))]}))}async getConfig(...e){let n=await this.configurator.getVertexConfig({fieldMask:e.length>0?m(v,{paths:e.map(j)}):void 0}),t={},s=e.length>0?e:["config","metadata","configuredServices"];if(s.includes("metadata")&&(t.metadata=n.metadata?S(x,n.metadata):void 0),s.includes("configuredServices")&&(t.configuredServices=n.configuredServices||{}),s.includes("config"))if(n.config&&n.config.length>0)try{t.config=JSON.parse(new TextDecoder().decode(n.config))}catch{t.config=void 0}else t.config=void 0;return t}async getConfigBinary(...e){let n=await this.configurator.getVertexConfig({fieldMask:e.length>0?m(v,{paths:e.map(j)}):void 0}),t={},s=e.length>0?e:["config","metadata","configuredServices"];return s.includes("metadata")&&(t.metadata=n.metadata?S(x,n.metadata):void 0),s.includes("configuredServices")&&(t.configuredServices=n.configuredServices||{}),s.includes("config")&&(t.config=n.config),t}async postConfig(e){if(!e.config&&!e.metadata)throw new b("Either config or metadata must be provided",g.InvalidArgument);let n;e.config!==void 0&&(n=e.config instanceof Uint8Array?e.config:new TextEncoder().encode(JSON.stringify(e.config)));let t=await this.configurator.postVertexConfig({config:n,metadata:e.metadata?me(x,e.metadata):void 0,overrideBindings:e?.overrideBindings});return S(x,t.metadata)}async listIncomingSignals(e,n,t){let s=await this.configurator.listIncomingSignals({receiver:e,formats:n?.map(o=>me(Ae,o))??[],fieldMask:t?me(v,t):void 0});return S(Ce,s)}getLocalStore(e){return new K(this.configurator,e==="vertex"?"NAMESPACE_VERTEX":"NAMESPACE_PLUGIN")}};function sn(d){switch(d){case 400:return new b("Bad Request",g.InvalidArgument);case 401:return new b("Unauthorized",g.Unauthenticated);case 403:return new b("Forbidden",g.PermissionDenied);case 404:return new b("Not Found",g.NotFound);case 409:return new b("Conflict",g.AlreadyExists);case 429:return new b("Too Many Requests",g.ResourceExhausted);case 499:return new b("Client Closed Request",g.Canceled);case 500:return new b("Internal Server Error",g.Internal);case 501:return new b("Not Implemented",g.Unimplemented);case 503:return new b("Service Unavailable",g.Unavailable);case 504:return new b("Gateway Timeout",g.DeadlineExceeded);default:return new b(`Unknown HTTP error: ${d}`,g.Unknown)}}function on(d){switch(d.code){case g.Canceled:return 499;case g.Unknown:return 500;case g.InvalidArgument:return 400;case g.DeadlineExceeded:return 504;case g.NotFound:return 404;case g.AlreadyExists:return 409;case g.PermissionDenied:return 403;case g.ResourceExhausted:return 429;case g.FailedPrecondition:return 400;case g.Aborted:return 409;case g.OutOfRange:return 400;case g.Unimplemented:return 501;case g.Internal:return 500;case g.Unavailable:return 503;case g.DataLoss:return 500;case g.Unauthenticated:return 401;default:return 500}}function Ta(...d){let n=[];for(let o of d){let a=o.split("/").filter(i=>i.length>0);n.push(...a)}let t=[];for(let o of n)o===".."?t.pop():o!=="."&&t.push(o);let s=t.join("/");return d[0].startsWith("/")&&(s="/"+s),s}var he=["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"],F=class{method;matcher;constructor(e,n){this.method=e,this.matcher=dt(n)}match(e,n){if(this.method!=="*"&&!(Array.isArray(this.method)&&this.method.includes(e)||this.method===e))return null;let t=this.matcher(n);if(!t)return null;let s={};for(let o in t.params)t.params[o]&&(Array.isArray(t.params[o])?s[o]=t.params[o].join("/"):s[o]=t.params[o]);return s}},ee=class{routes;middlewares;constructor(){this.routes=[],this.middlewares=[]}useRequestLogging(){return this.middlewares.push(async(e,n,t,s)=>{let o=new Date().toISOString(),a=e.headers.get("X-Forwarded-Host")||"N/A",i=e.headers.get("X-Forwarded-Proto")||"N/A",u=e.headers.get("X-Forwarded-For")||"N/A";return console.log(),console.log(`[Request Log - ${o}]`),console.log("----------------------------------------"),console.log(`URL : ${e.url}`),console.log(`X-Forwarded-Host : ${a}`),console.log(`X-Forwarded-Proto: ${i}`),console.log(`X-Forwarded-For : ${u}`),console.log("----------------------------------------"),console.log(),await s()}),this}useErrorHandling(e){return this.middlewares.push(async(n,t,s,o)=>{try{return await o()}catch(a){return await e(a)}}),this}useBearerAuthorization(e,n){return this.middlewares.push(async(t,s,o,a)=>{let i=new URL(t.url);if(n&&n.some(r=>i.pathname.startsWith(r)))return console.log(`Skipping authorization for ${i.pathname}`),await a();if(e&&!e.some(r=>i.pathname.startsWith(r)))return console.log(`Skipping authorization for ${i.pathname}`),await a();let u=t.headers.get("Authorization");if(u&&u.startsWith("Bearer ")){let r=u.split(" ")[1];if(!r)return console.log("No token found in header"),new Response(null,{status:401});try{await s.authorize(r)}catch(c){return console.log(c),console.error(c),c instanceof lt?new Response(null,{status:on(c)}):new Response(null,{status:500})}return console.log("Authorization successful"),await a()}else return console.log("No Authorization header found"),new Response("Unauthorized",{status:401})}),this}use(e){return this.middlewares.push(e),this}add(e,n,t){let s=new F(e,n);return this.routes.push({route:s,handler:t}),this}async routeRequest(e,n){let t=new URL(e.url),s=t.pathname,o={};for(let[a,i]of t.searchParams)o[a]=i;for(let{route:a,handler:i}of this.routes){let u=a.match(e.method,s);if(u!==null)return await n(i,{path:s,params:u,searchParams:o})}return new Response("Not found",{status:404})}},an=class extends ee{constructor(){super()}async entrypoint(e,n,t){if(!he.includes(e.method.toUpperCase()))return new Response("Method Not Allowed",{status:405});let s=e.headers.get("X-Mochabug-Adapt-Plugin-Token");if(!s)return new Response("Unauthorized",{status:401});try{let o=new N(n,s),a=0,i=async()=>{if(a<this.middlewares.length){let u=this.middlewares[a];return a++,await u(e,o,t,i)}else return await this.routeRequest(e,async(u,r)=>u(e,o,r,t))};return await i()}catch(o){return console.log("An error was catched during middleware execution"),console.log(o),console.error(o),new Response("Internal Server Error",{status:500})}}},be=class{startRoute;stopRoute;exchangeRoutes;cronRoute;constructor(){this.exchangeRoutes=[]}async entrypoint(e,n,t){if(!he.includes(e.method.toUpperCase()))return new Response("Method Not Allowed",{status:405});let s=e.headers.get("X-Mochabug-Adapt-Plugin-Token");if(!s)return new Response("Unauthorized",{status:401});try{let o=e.headers.get("Authorization"),a=new Q(n,s,o||""),i=new URL(e.url),u=i.pathname.endsWith("/")?i.pathname.slice(0,-1):i.pathname,r=!1;switch(e.headers.get("Content-Type")){case"application/json":r=!0;break;case"application/protobuf":r=!1;break;default:return new Response("Unsupported Media Type",{status:415})}if(this.startRoute?.route.match(e.method,u)){let c;r?c=$(ge,await e.json()):c=q(ge,new Uint8Array(await e.arrayBuffer())),await this.startRoute.handler(c,a,t)}if(this.stopRoute?.route.match(e.method,u)){let c;r?c=$(le,await e.json()):c=q(le,new Uint8Array(await e.arrayBuffer())),await this.stopRoute.handler(c,a,t)}if(this.cronRoute?.route.match(e.method,u)){let c;r?c=$(de,await e.json()):c=q(de,new Uint8Array(await e.arrayBuffer())),await this.cronRoute.handler(c,a,t)}for(let{route:c,handler:G}of this.exchangeRoutes){let A=c.match(e.method,u);if(A?.name){let p;r?p=$(re,await e.json()):p=q(re,new Uint8Array(await e.arrayBuffer())),await G({...p,getSignal:Z=>JSON.parse(new TextDecoder().decode(p.result.signals[Z].data)),getSignalBinary:Z=>p.result.signals[Z]},a,A.name,t);break}}return new Response}catch(o){return console.log("An error was catched during middleware execution"),console.log(o),console.error(o),new Response("Internal Server Error",{status:500})}}onStart(e){return this.startRoute={route:new F("POST","/start"),handler:e},this}onStop(e){return this.stopRoute={route:new F("POST","/stop"),handler:e},this}onExchange(e){return this.exchangeRoutes.push({route:new F("POST","/exchanges/:name"),handler:e}),this}},cn=class extends be{constructor(){super()}onCron(e){return this.cronRoute={route:new F("POST","/cron"),handler:e},this}},gn=class extends ee{constructor(){super()}async entrypoint(e,n,t){if(!he.includes(e.method.toUpperCase()))return new Response("Method Not Allowed",{status:405});let s=e.headers.get("X-Mochabug-Adapt-Plugin-Token");if(!s)return new Response("Unauthorized",{status:401});let o=e.headers.get("Authorization"),a=o&&o.startsWith("Bearer ")?o.substring(7):s;try{let i=0,u=new _(n,a),r=async()=>{if(i<this.middlewares.length){let c=this.middlewares[i];return i++,await c(e,u,t,r)}else return await this.routeRequest(e,async(c,G)=>c(e,u,G,t))};return await r()}catch(i){return console.log("An error was catched during middleware execution"),console.log(i),console.error(i),new Response("Internal Server Error",{status:500})}}},ln=class{constructor(){}async entrypoint(e,n,t){return new Response("Not implemented",{status:501})}};export{cn as CronExecutorRouter,gn as ExternalConfiguratorRouter,an as ExternalExecutorRouter,ln as InternalConfiguratorRouter,be as InternalExecutorRouter,F as Route,Ta as joinPaths};
|
|
1
|
+
import{fromBinary as ee,fromJson as ne}from"@bufbuild/protobuf";import{ConnectError as pt}from"@connectrpc/connect";import{match as Gt}from"path-to-regexp";import{create as m,enumFromJson as mt,fromJson as S,toJson as X}from"@bufbuild/protobuf";import{FieldMaskSchema as z,timestampDate as C,timestampFromDate as H,ValueSchema as O}from"@bufbuild/protobuf/wkt";import{Code as c,ConnectError as b,createClient as K}from"@connectrpc/connect";import{fileDesc as Sn,messageDesc as Vn}from"@bufbuild/protobuf/codegenv2";import{enumDesc as ht,extDesc as Zt,fileDesc as Zn,messageDesc as It}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_descriptor as In,file_google_protobuf_duration as yn,file_google_protobuf_field_mask as An,file_google_protobuf_timestamp as Rn}from"@bufbuild/protobuf/wkt";var l=Zn("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSKGAQoMTWVzc2FnZVJ1bGVzEhYKDmNlbF9leHByZXNzaW9uGAUgAygJEh8KA2NlbBgDIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEi0KBW9uZW9mGAQgAygLMh4uYnVmLnZhbGlkYXRlLk1lc3NhZ2VPbmVvZlJ1bGVKBAgBEAJSCGRpc2FibGVkIjQKEE1lc3NhZ2VPbmVvZlJ1bGUSDgoGZmllbGRzGAEgAygJEhAKCHJlcXVpcmVkGAIgASgIIh4KCk9uZW9mUnVsZXMSEAoIcmVxdWlyZWQYASABKAgiiwkKCkZpZWxkUnVsZXMSFgoOY2VsX2V4cHJlc3Npb24YHSADKAkSHwoDY2VsGBcgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSEAoIcmVxdWlyZWQYGSABKAgSJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMgoKZmllbGRfbWFzaxgcIAEoCzIcLmJ1Zi52YWxpZGF0ZS5GaWVsZE1hc2tSdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJVCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSLaFwoKRmxvYXRSdWxlcxKDAQoFY29uc3QYASABKAJCdMJIcQpvCgtmbG9hdC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEp8BCgJsdBgCIAEoAkKQAcJIjAEKiQEKCGZsb2F0Lmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEq8BCgNsdGUYAyABKAJCnwHCSJsBCpgBCglmbG9hdC5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLvBwoCZ3QYBCABKAJC4AfCSNwHCo0BCghmbG9hdC5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsMBCgtmbG9hdC5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs0BChVmbG9hdC5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrTAQoMZmxvYXQuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3QEKFmZsb2F0Lmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEroICgNndGUYBSABKAJCqgjCSKYICpsBCglmbG9hdC5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0gEKDGZsb2F0Lmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3AEKFmZsb2F0Lmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuIBCg1mbG9hdC5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrsAQoXZmxvYXQuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESfwoCaW4YBiADKAJCc8JIcApuCghmbG9hdC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdgoGbm90X2luGAcgAygCQmbCSGMKYQoMZmxvYXQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdQoGZmluaXRlGAggASgIQmXCSGIKYAoMZmxvYXQuZmluaXRlGlBydWxlcy5maW5pdGUgPyAodGhpcy5pc05hbigpIHx8IHRoaXMuaXNJbmYoKSA/ICd2YWx1ZSBtdXN0IGJlIGZpbml0ZScgOiAnJykgOiAnJxIrCgdleGFtcGxlGAkgAygCQhrCSBcKFQoNZmxvYXQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i7RcKC0RvdWJsZVJ1bGVzEoQBCgVjb25zdBgBIAEoAUJ1wkhyCnAKDGRvdWJsZS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqABCgJsdBgCIAEoAUKRAcJIjQEKigEKCWRvdWJsZS5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKwAQoDbHRlGAMgASgBQqABwkicAQqZAQoKZG91YmxlLmx0ZRqKASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEvQHCgJndBgEIAEoAULlB8JI4QcKjgEKCWRvdWJsZS5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsQBCgxkb3VibGUuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrOAQoWZG91YmxlLmd0X2x0X2V4Y2x1c2l2ZRqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCtQBCg1kb3VibGUuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3gEKF2RvdWJsZS5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK/CAoDZ3RlGAUgASgBQq8IwkirCAqcAQoKZG91YmxlLmd0ZRqNASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrTAQoNZG91YmxlLmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3QEKF2RvdWJsZS5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrjAQoOZG91YmxlLmd0ZV9sdGUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCu0BChhkb3VibGUuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygBQnTCSHEKbwoJZG91YmxlLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKAFCZ8JIZApiCg1kb3VibGUubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdgoGZmluaXRlGAggASgIQmbCSGMKYQoNZG91YmxlLmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSLAoHZXhhbXBsZRgJIAMoAUIbwkgYChYKDmRvdWJsZS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKMFQoKSW50MzJSdWxlcxKDAQoFY29uc3QYASABKAVCdMJIcQpvCgtpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEooBCgJsdBgCIAEoBUJ8wkh5CncKCGludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKAVCjAHCSIgBCoUBCglpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoBUKIB8JIhAcKegoIaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgFQtMHwkjPBwqIAQoJaW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygFQnPCSHAKbgoIaW50MzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoBUJmwkhjCmEKDGludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCCADKAVCGsJIFwoVCg1pbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKMFQoKSW50NjRSdWxlcxKDAQoFY29uc3QYASABKANCdMJIcQpvCgtpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEooBCgJsdBgCIAEoA0J8wkh5CncKCGludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKANCjAHCSIgBCoUBCglpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoA0KIB8JIhAcKegoIaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgDQtMHwkjPBwqIAQoJaW50NjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygDQnPCSHAKbgoIaW50NjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoA0JmwkhjCmEKDGludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCSADKANCGsJIFwoVCg1pbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLVUludDMyUnVsZXMShAEKBWNvbnN0GAEgASgNQnXCSHIKcAoMdWludDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgNQn3CSHoKeAoJdWludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKA1CjQHCSIkBCoYBCgp1aW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKA1CjQfCSIkHCnsKCXVpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNdWludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgNQtgHwkjUBwqJAQoKdWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygNQnTCSHEKbwoJdWludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKA1CZ8JIZApiCg11aW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoDUIbwkgYChYKDnVpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLVUludDY0UnVsZXMShAEKBWNvbnN0GAEgASgEQnXCSHIKcAoMdWludDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgEQn3CSHoKeAoJdWludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKARCjQHCSIkBCoYBCgp1aW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKARCjQfCSIkHCnsKCXVpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNdWludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgEQtgHwkjUBwqJAQoKdWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygEQnTCSHEKbwoJdWludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKARCZ8JIZApiCg11aW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoBEIbwkgYChYKDnVpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLU0ludDMyUnVsZXMShAEKBWNvbnN0GAEgASgRQnXCSHIKcAoMc2ludDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgRQn3CSHoKeAoJc2ludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBFCjQHCSIkBCoYBCgpzaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBFCjQfCSIkHCnsKCXNpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgRQtgHwkjUBwqJAQoKc2ludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygRQnTCSHEKbwoJc2ludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKBFCZ8JIZApiCg1zaW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLU0ludDY0UnVsZXMShAEKBWNvbnN0GAEgASgSQnXCSHIKcAoMc2ludDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgSQn3CSHoKeAoJc2ludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBJCjQHCSIkBCoYBCgpzaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBJCjQfCSIkHCnsKCXNpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgSQtgHwkjUBwqJAQoKc2ludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygSQnTCSHEKbwoJc2ludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKBJCZ8JIZApiCg1zaW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEkIbwkgYChYKDnNpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKvFQoMRml4ZWQzMlJ1bGVzEoUBCgVjb25zdBgBIAEoB0J2wkhzCnEKDWZpeGVkMzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKMAQoCbHQYAiABKAdCfsJIewp5CgpmaXhlZDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp4BCgNsdGUYAyABKAdCjgHCSIoBCocBCgtmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASoQcKAmd0GAQgASgHQpIHwkiOBwp8CgpmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLtBwoDZ3RlGAUgASgHQt0HwkjZBwqKAQoLZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrEAQoOZml4ZWQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkMzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1AEKD2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrcAQoZZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKAdCdcJIcgpwCgpmaXhlZDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKAdCaMJIZQpjCg5maXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAdCHMJIGQoXCg9maXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIq8VCgxGaXhlZDY0UnVsZXMShQEKBWNvbnN0GAEgASgGQnbCSHMKcQoNZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEowBCgJsdBgCIAEoBkJ+wkh7CnkKCmZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoBkKOAcJIigEKhwEKC2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKhBwoCZ3QYBCABKAZCkgfCSI4HCnwKCmZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrUBCg1maXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq9AQoXZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu0HCgNndGUYBSABKAZC3QfCSNkHCooBCgtmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoEBCgJpbhgGIAMoBkJ1wkhyCnAKCmZpeGVkNjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEngKBm5vdF9pbhgHIAMoBkJowkhlCmMKDmZpeGVkNjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoBkIcwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwBUKDVNGaXhlZDMyUnVsZXMShgEKBWNvbnN0GAEgASgPQnfCSHQKcgoOc2ZpeGVkMzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKNAQoCbHQYAiABKA9Cf8JIfAp6CgtzZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgPQo8BwkiLAQqIAQoMc2ZpeGVkMzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKmBwoCZ3QYBCABKA9ClwfCSJMHCn0KC3NmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOc2ZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPc2ZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES8gcKA2d0ZRgFIAEoD0LiB8JI3gcKiwEKDHNmaXhlZDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKCAQoCaW4YBiADKA9CdsJIcwpxCgtzZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeQoGbm90X2luGAcgAygPQmnCSGYKZAoPc2ZpeGVkMzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLgoHZXhhbXBsZRgIIAMoD0IdwkgaChgKEHNmaXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsAVCg1TRml4ZWQ2NFJ1bGVzEoYBCgVjb25zdBgBIAEoEEJ3wkh0CnIKDnNmaXhlZDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjQEKAmx0GAIgASgQQn/CSHwKegoLc2ZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoEEKPAcJIiwEKiAEKDHNmaXhlZDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgQQpcHwkiTBwp9CgtzZml4ZWQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKBBC4gfCSN4HCosBCgxzZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkNjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkNjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygQQnbCSHMKcQoLc2ZpeGVkNjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoEEJpwkhmCmQKD3NmaXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKBBCHcJIGgoYChBzZml4ZWQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLHAQoJQm9vbFJ1bGVzEoIBCgVjb25zdBgBIAEoCEJzwkhwCm4KCmJvb2wuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIiiDkKC1N0cmluZ1J1bGVzEoYBCgVjb25zdBgBIAEoCUJ3wkh0CnIKDHN0cmluZy5jb25zdBpidGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCBgJXNgJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSfgoDbGVuGBMgASgEQnHCSG4KbAoKc3RyaW5nLmxlbhpedWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKZAQoHbWluX2xlbhgCIAEoBEKHAcJIgwEKgAEKDnN0cmluZy5taW5fbGVuGm51aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKXAQoHbWF4X2xlbhgDIAEoBEKFAcJIgQEKfwoOc3RyaW5nLm1heF9sZW4abXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSmwEKCWxlbl9ieXRlcxgUIAEoBEKHAcJIgwEKgAEKEHN0cmluZy5sZW5fYnl0ZXMabHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSAhPSBydWxlcy5sZW5fYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKjAQoJbWluX2J5dGVzGAQgASgEQo8BwkiLAQqIAQoQc3RyaW5nLm1pbl9ieXRlcxp0dWludChieXRlcyh0aGlzKS5zaXplKCkpIDwgcnVsZXMubWluX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSogEKCW1heF9ieXRlcxgFIAEoBEKOAcJIigEKhwEKEHN0cmluZy5tYXhfYnl0ZXMac3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9ieXRlc10pIDogJycSjQEKB3BhdHRlcm4YBiABKAlCfMJIeQp3Cg5zdHJpbmcucGF0dGVybhplIXRoaXMubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBkb2VzIG5vdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycShAEKBnByZWZpeBgHIAEoCUJ0wkhxCm8KDXN0cmluZy5wcmVmaXgaXiF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCBgJXNgJy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSggEKBnN1ZmZpeBgIIAEoCUJywkhvCm0KDXN0cmluZy5zdWZmaXgaXCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEpABCghjb250YWlucxgJIAEoCUJ+wkh7CnkKD3N0cmluZy5jb250YWlucxpmIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpgBCgxub3RfY29udGFpbnMYFyABKAlCgQHCSH4KfAoTc3RyaW5nLm5vdF9jb250YWlucxpldGhpcy5jb250YWlucyhydWxlcy5ub3RfY29udGFpbnMpID8gJ3ZhbHVlIGNvbnRhaW5zIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLm5vdF9jb250YWluc10pIDogJycSgAEKAmluGAogAygJQnTCSHEKbwoJc3RyaW5nLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YCyADKAlCZ8JIZApiCg1zdHJpbmcubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycS3wEKBWVtYWlsGAwgASgIQs0BwkjJAQphCgxzdHJpbmcuZW1haWwSI3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGiwhcnVsZXMuZW1haWwgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzRW1haWwoKQpkChJzdHJpbmcuZW1haWxfZW1wdHkSMnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGhohcnVsZXMuZW1haWwgfHwgdGhpcyAhPSAnJ0gAEucBCghob3N0bmFtZRgNIAEoCELSAcJIzgEKZQoPc3RyaW5nLmhvc3RuYW1lEh52YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdG5hbWUaMiFydWxlcy5ob3N0bmFtZSB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpCmUKFXN0cmluZy5ob3N0bmFtZV9lbXB0eRItdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lGh0hcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyAhPSAnJ0gAEscBCgJpcBgOIAEoCEK4AcJItAEKVQoJc3RyaW5nLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxomIXJ1bGVzLmlwIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKCkKWwoPc3RyaW5nLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxoXIXJ1bGVzLmlwIHx8IHRoaXMgIT0gJydIABLWAQoEaXB2NBgPIAEoCELFAcJIwQEKXAoLc3RyaW5nLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaKSFydWxlcy5pcHY0IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKDQpCmEKEXN0cmluZy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGhkhcnVsZXMuaXB2NCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjYYECABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY2EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzGikhcnVsZXMuaXB2NiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg2KQphChFzdHJpbmcuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxoZIXJ1bGVzLmlwdjYgfHwgdGhpcyAhPSAnJ0gAEr8BCgN1cmkYESABKAhCrwHCSKsBClEKCnN0cmluZy51cmkSGXZhbHVlIG11c3QgYmUgYSB2YWxpZCBVUkkaKCFydWxlcy51cmkgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzVXJpKCkKVgoQc3RyaW5nLnVyaV9lbXB0eRIodmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVSSRoYIXJ1bGVzLnVyaSB8fCB0aGlzICE9ICcnSAAScAoHdXJpX3JlZhgSIAEoCEJdwkhaClgKDnN0cmluZy51cmlfcmVmEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJIFJlZmVyZW5jZRohIXJ1bGVzLnVyaV9yZWYgfHwgdGhpcy5pc1VyaVJlZigpSAASkAIKB2FkZHJlc3MYFSABKAhC/AHCSPgBCoEBCg5zdHJpbmcuYWRkcmVzcxItdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKYAgoEdXVpZBgWIAEoCEKHAsJIgwIKpQEKC3N0cmluZy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS8AEKBXR1dWlkGCEgASgIQt4BwkjaAQpzCgxzdHJpbmcudHV1aWQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASlgIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvgBwkj0AQp4ChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEs8CChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQq8CwkirAgqTAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS8gEKCWlwX3ByZWZpeBgdIAEoCELcAcJI2AEKbAoQc3RyaW5nLmlwX3ByZWZpeBIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABKDAgoLaXB2NF9wcmVmaXgYHiABKAhC6wHCSOcBCnUKEnN0cmluZy5pcHY0X3ByZWZpeBIhdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjZfcHJlZml4GB8gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2Nl9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAErUCCg1ob3N0X2FuZF9wb3J0GCAgASgIQpsCwkiXAgqZAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSQXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEvUBCgR1bGlkGCMgASgIQuQBwkjgAQqCAQoLc3RyaW5nLnVsaWQSGnZhbHVlIG11c3QgYmUgYSB2YWxpZCBVTElEGlchcnVsZXMudWxpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTddWzAtOUEtSEpLTU5QLVRWLVphLWhqa21ucC10di16XXsyNX0kJykKWQoRc3RyaW5nLnVsaWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVTElEGhkhcnVsZXMudWxpZCB8fCB0aGlzICE9ICcnSAASqAUKEHdlbGxfa25vd25fcmVnZXgYGCABKA4yGC5idWYudmFsaWRhdGUuS25vd25SZWdleELxBMJI7QQK8AEKI3N0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lEiZ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRqgAXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMSB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXjo/WzAtOWEtekEtWiEjJCUmXCcqKy0uXl98flx4NjBdKyQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSskJykKjQEKKXN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lX2VtcHR5EjV2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRopcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgIT0gJycK5wEKJHN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl92YWx1ZRIndmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIHZhbHVlGpUBcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAyIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXlteXHUwMDAwLVx1MDAwOFx1MDAwQS1cdTAwMUZcdTAwN0ZdKiQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSokJylIABIOCgZzdHJpY3QYGSABKAgSLAoHZXhhbXBsZRgiIAMoCUIbwkgYChYKDnN0cmluZy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLCEgoKQnl0ZXNSdWxlcxKAAQoFY29uc3QYASABKAxCccJIbgpsCgtieXRlcy5jb25zdBpddGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBiZSAleCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEngKA2xlbhgNIAEoBEJrwkhoCmYKCWJ5dGVzLmxlbhpZdWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSkAEKB21pbl9sZW4YAiABKARCf8JIfAp6Cg1ieXRlcy5taW5fbGVuGml1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSiAEKB21heF9sZW4YAyABKARCd8JIdApyCg1ieXRlcy5tYXhfbGVuGmF1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEpABCgdwYXR0ZXJuGAQgASgJQn/CSHwKegoNYnl0ZXMucGF0dGVybhppIXN0cmluZyh0aGlzKS5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ3ZhbHVlIG11c3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnEoEBCgZwcmVmaXgYBSABKAxCccJIbgpsCgxieXRlcy5wcmVmaXgaXCF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCAleCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEn8KBnN1ZmZpeBgGIAEoDEJvwkhsCmoKDGJ5dGVzLnN1ZmZpeBpaIXRoaXMuZW5kc1dpdGgocnVsZXMuc3VmZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHN1ZmZpeCAleCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEoMBCghjb250YWlucxgHIAEoDEJxwkhuCmwKDmJ5dGVzLmNvbnRhaW5zGlohdGhpcy5jb250YWlucyhydWxlcy5jb250YWlucykgPyAndmFsdWUgZG9lcyBub3QgY29udGFpbiAleCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJycSpwEKAmluGAggAygMQpoBwkiWAQqTAQoIYnl0ZXMuaW4ahgFnZXRGaWVsZChydWxlcywgJ2luJykuc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YCSADKAxCZsJIYwphCgxieXRlcy5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLrAQoCaXAYCiABKAhC3AHCSNgBCnQKCGJ5dGVzLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5AEKBGlwdjQYCyABKAhC0wHCSM8BCmUKCmJ5dGVzLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5QEKBGlwdjYYDCABKAhC1AHCSNABCmYKCmJ5dGVzLmlwdjYSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEtUBCgR1dWlkGA8gASgIQsQBwkjAAQpeCgpieXRlcy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBo0IXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpeChBieXRlcy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBofIXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLUAwoJRW51bVJ1bGVzEoIBCgVjb25zdBgBIAEoBUJzwkhwCm4KCmVudW0uY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIUCgxkZWZpbmVkX29ubHkYAiABKAgSfgoCaW4YAyADKAVCcsJIbwptCgdlbnVtLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ1CgZub3RfaW4YBCADKAVCZcJIYgpgCgtlbnVtLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEioKB2V4YW1wbGUYBSADKAVCGcJIFgoUCgxlbnVtLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAiL7AwoNUmVwZWF0ZWRSdWxlcxKeAQoJbWluX2l0ZW1zGAEgASgEQooBwkiGAQqDAQoScmVwZWF0ZWQubWluX2l0ZW1zGm11aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9pdGVtcyA/ICd2YWx1ZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJWQgaXRlbShzKScuZm9ybWF0KFtydWxlcy5taW5faXRlbXNdKSA6ICcnEqIBCgltYXhfaXRlbXMYAiABKARCjgHCSIoBCocBChJyZXBlYXRlZC5tYXhfaXRlbXMacXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBubyBtb3JlIHRoYW4gJXMgaXRlbShzKScuZm9ybWF0KFtydWxlcy5tYXhfaXRlbXNdKSA6ICcnEnAKBnVuaXF1ZRgDIAEoCEJgwkhdClsKD3JlcGVhdGVkLnVuaXF1ZRIocmVwZWF0ZWQgdmFsdWUgbXVzdCBjb250YWluIHVuaXF1ZSBpdGVtcxoeIXJ1bGVzLnVuaXF1ZSB8fCB0aGlzLnVuaXF1ZSgpEicKBWl0ZW1zGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiKKAwoITWFwUnVsZXMSjwEKCW1pbl9wYWlycxgBIAEoBEJ8wkh5CncKDW1hcC5taW5fcGFpcnMaZnVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX3BhaXJzID8gJ21hcCBtdXN0IGJlIGF0IGxlYXN0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWluX3BhaXJzXSkgOiAnJxKOAQoJbWF4X3BhaXJzGAIgASgEQnvCSHgKdgoNbWFwLm1heF9wYWlycxpldWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbW9zdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1heF9wYWlyc10pIDogJycSJgoEa2V5cxgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzEigKBnZhbHVlcxgFIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzKgkI6AcQgICAgAIiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIpkXCg1EdXJhdGlvblJ1bGVzEqEBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJ3wkh0CnIKDmR1cmF0aW9uLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSqAEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQn/CSHwKegoLZHVyYXRpb24ubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASugEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKPAcJIiwEKiAEKDGR1cmF0aW9uLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASwQcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQpcHwkiTBwp9CgtkdXJhdGlvbi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDmR1cmF0aW9uLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD2R1cmF0aW9uLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEo0ICgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25C4gfCSN4HCosBCgxkdXJhdGlvbi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPZHVyYXRpb24uZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQZHVyYXRpb24uZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESnQEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnbCSHMKcQoLZHVyYXRpb24uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEpQBCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CacJIZgpkCg9kdXJhdGlvbi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJJCgdleGFtcGxlGAkgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQh3CSBoKGAoQZHVyYXRpb24uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i/QUKDkZpZWxkTWFza1J1bGVzEr8BCgVjb25zdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCkwHCSI8BCowBChBmaWVsZF9tYXNrLmNvbnN0Gnh0aGlzLnBhdGhzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRocyA/ICd2YWx1ZSBtdXN0IGVxdWFsIHBhdGhzICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRoc10pIDogJycS2QEKAmluGAIgAygJQswBwkjIAQrFAQoNZmllbGRfbWFzay5pbhqzASF0aGlzLnBhdGhzLmFsbChwLCBwIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ2luJykuZXhpc3RzKGYsIHAuc3RhcnRzV2l0aChmKycuJykpKSA/ICd2YWx1ZSBtdXN0IG9ubHkgY29udGFpbiBwYXRocyBpbiAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEvMBCgZub3RfaW4YAyADKAlC4gHCSN4BCtsBChFmaWVsZF9tYXNrLm5vdF9pbhrFASF0aGlzLnBhdGhzLmFsbChwLCAhKHAgaW4gZ2V0RmllbGQocnVsZXMsICdub3RfaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ25vdF9pbicpLmV4aXN0cyhmLCBwLnN0YXJ0c1dpdGgoZisnLicpKSkpID8gJ3ZhbHVlIG11c3Qgbm90IGNvbnRhaW4gYW55IHBhdGhzIGluICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnbm90X2luJyldKSA6ICcnEkwKB2V4YW1wbGUYBCADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQh/CSBwKGgoSZmllbGRfbWFzay5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIikhgKDlRpbWVzdGFtcFJ1bGVzEqMBCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCeMJIdQpzCg90aW1lc3RhbXAuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKrAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQoABwkh9CnsKDHRpbWVzdGFtcC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK8AQoDbHRlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKQAcJIjAEKiQEKDXRpbWVzdGFtcC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEmwKBmx0X25vdxgHIAEoCEJawkhXClUKEHRpbWVzdGFtcC5sdF9ub3caQShydWxlcy5sdF9ub3cgJiYgdGhpcyA+IG5vdykgPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gbm93JyA6ICcnSAASxwcKAmd0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKcB8JImAcKfgoMdGltZXN0YW1wLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq3AQoPdGltZXN0YW1wLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq/AQoZdGltZXN0YW1wLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCscBChB0aW1lc3RhbXAuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrPAQoadGltZXN0YW1wLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEpMICgNndGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQucHwkjjBwqMAQoNdGltZXN0YW1wLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsYBChB0aW1lc3RhbXAuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs4BChp0aW1lc3RhbXAuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1gEKEXRpbWVzdGFtcC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt4BCht0aW1lc3RhbXAuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESbwoGZ3Rfbm93GAggASgIQl3CSFoKWAoQdGltZXN0YW1wLmd0X25vdxpEKHJ1bGVzLmd0X25vdyAmJiB0aGlzIDwgbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBub3cnIDogJydIARK4AQoGd2l0aGluGAkgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQowBwkiIAQqFAQoQdGltZXN0YW1wLndpdGhpbhpxdGhpcyA8IG5vdy1ydWxlcy53aXRoaW4gfHwgdGhpcyA+IG5vdytydWxlcy53aXRoaW4gPyAndmFsdWUgbXVzdCBiZSB3aXRoaW4gJXMgb2Ygbm93Jy5mb3JtYXQoW3J1bGVzLndpdGhpbl0pIDogJycSSwoHZXhhbXBsZRgKIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCHsJIGwoZChF0aW1lc3RhbXAuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iOQoKVmlvbGF0aW9ucxIrCgp2aW9sYXRpb25zGAEgAygLMhcuYnVmLnZhbGlkYXRlLlZpb2xhdGlvbiKfAQoJVmlvbGF0aW9uEiYKBWZpZWxkGAUgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIlCgRydWxlGAYgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIPCgdydWxlX2lkGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSDwoHZm9yX2tleRgEIAEoCEoECAEQAlIKZmllbGRfcGF0aCI9CglGaWVsZFBhdGgSMAoIZWxlbWVudHMYASADKAsyHi5idWYudmFsaWRhdGUuRmllbGRQYXRoRWxlbWVudCLpAgoQRmllbGRQYXRoRWxlbWVudBIUCgxmaWVsZF9udW1iZXIYASABKAUSEgoKZmllbGRfbmFtZRgCIAEoCRI+CgpmaWVsZF90eXBlGAMgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPAoIa2V5X3R5cGUYBCABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI+Cgp2YWx1ZV90eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSDwoFaW5kZXgYBiABKARIABISCghib29sX2tleRgHIAEoCEgAEhEKB2ludF9rZXkYCCABKANIABISCgh1aW50X2tleRgJIAEoBEgAEhQKCnN0cmluZ19rZXkYCiABKAlIAEILCglzdWJzY3JpcHQqoQEKBklnbm9yZRIWChJJR05PUkVfVU5TUEVDSUZJRUQQABIYChRJR05PUkVfSUZfWkVST19WQUxVRRABEhEKDUlHTk9SRV9BTFdBWVMQAyIECAIQAioMSUdOT1JFX0VNUFRZKg5JR05PUkVfREVGQVVMVCoXSUdOT1JFX0lGX0RFRkFVTFRfVkFMVUUqFUlHTk9SRV9JRl9VTlBPUFVMQVRFRCpuCgpLbm93blJlZ2V4EhsKF0tOT1dOX1JFR0VYX1VOU1BFQ0lGSUVEEAASIAocS05PV05fUkVHRVhfSFRUUF9IRUFERVJfTkFNRRABEiEKHUtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX1ZBTFVFEAI6VgoHbWVzc2FnZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiHCSABKAsyGi5idWYudmFsaWRhdGUuTWVzc2FnZVJ1bGVzUgdtZXNzYWdlOk4KBW9uZW9mEh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuT25lb2ZSdWxlc1IFb25lb2Y6TgoFZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzUgVmaWVsZDpdCgpwcmVkZWZpbmVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiICSABKAsyHS5idWYudmFsaWRhdGUuUHJlZGVmaW5lZFJ1bGVzUgpwcmVkZWZpbmVkQm4KEmJ1aWxkLmJ1Zi52YWxpZGF0ZUINVmFsaWRhdGVQcm90b1ABWkdidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxkL3Byb3RvdmFsaWRhdGUvcHJvdG9jb2xidWZmZXJzL2dvL2J1Zi92YWxpZGF0ZQ",[In,yn,An,Rn]);var R=Sn("Ciptb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2RhdGEucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKmCgoKU2lnbmFsRGF0YRL3BQoIZmlsZW5hbWUYASABKAlC3wW6SNsFugGvAQobZmlsZW5hbWUubm9fcGF0aF9zZXBhcmF0b3JzEmNGaWxlbmFtZSBjYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKCcvJyBvciAnXCcpLiBVc2Ugb25seSB0aGUgZmlsZW5hbWUgd2l0aG91dCBkaXJlY3RvcnkgcGF0aC4aKyF0aGlzLmNvbnRhaW5zKCcvJykgJiYgIXRoaXMuY29udGFpbnMoJ1xcJym6AbsBCh5maWxlbmFtZS5ub19jb250cm9sX2NoYXJhY3RlcnMSOUZpbGVuYW1lIGNhbm5vdCBjb250YWluIGNvbnRyb2wgY2hhcmFjdGVycyBvciBudWxsIGJ5dGVzLhpeIXRoaXMuY29udGFpbnMoJ1x4MDAnKSAmJiAhdGhpcy5jb250YWlucygnXG4nKSAmJiAhdGhpcy5jb250YWlucygnXHInKSAmJiAhdGhpcy5jb250YWlucygnXHQnKboBbQonZmlsZW5hbWUubm9fbGVhZGluZ190cmFpbGluZ193aGl0ZXNwYWNlEi1GaWxlbmFtZSBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4aE3RoaXMgPT0gdGhpcy50cmltKCm6AdMBChxmaWxlbmFtZS5ub193aW5kb3dzX3Jlc2VydmVkEmpGaWxlbmFtZSBjYW5ub3QgYmUgYSBXaW5kb3dzIHJlc2VydmVkIG5hbWUgKENPTiwgUFJOLCBBVVgsIE5VTCwgQ09NMS05LCBMUFQxLTkpIHdpdGggb3Igd2l0aG91dCBleHRlbnNpb24uGkchdGhpcy5tYXRjaGVzKCdeKD9pKShDT058UFJOfEFVWHxOVUx8Q09NWzEtOV18TFBUWzEtOV0pKD86XFwuW14uXSopPyQnKXIgEAEY/wEyGV5bXi88PjoifD8qXHgwMC1ceDFGXFxdKyRIAIgBARKCBAoJbWltZV90eXBlGAIgASgJQu4DukjqA7oByQEKFm1pbWVfdHlwZS5ub193aWxkY2FyZHMSmQFNSU1FIHR5cGUgd2lsZGNhcmRzIGFyZSBub3QgYWxsb3dlZCBpbiBTaWduYWxEYXRhLiBVc2UgYSBjb25jcmV0ZSBNSU1FIHR5cGUgbGlrZSAnaW1hZ2UvcG5nJyBvciAnYXBwbGljYXRpb24vcGRmJywgbm90IHdpbGRjYXJkcyBsaWtlICdpbWFnZS8qJyBvciAnKi8qJy4aEyF0aGlzLmNvbnRhaW5zKCcqJym6Ab8BChdtaW1lX3R5cGUubm9fcGFyYW1ldGVycxKOAU1JTUUgdHlwZSBwYXJhbWV0ZXJzIGFyZSBub3QgYWxsb3dlZC4gVXNlICd0ZXh0L3BsYWluJyBpbnN0ZWFkIG9mICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Jy4gVVRGLTggZW5jb2RpbmcgaXMgYXNzdW1lZCBmb3IgYWxsIHRleHQgZm9ybWF0cy4aEyF0aGlzLmNvbnRhaW5zKCc7JylyWBADGP8BMlFeW2EtekEtWjAtOV1bYS16QS1aMC05ISMkJlwtXl8uK117MCwxMjZ9L1thLXpBLVowLTldW2EtekEtWjAtOSEjJCZcLV5fLitdezAsMTI2fSQSDAoEZGF0YRgDIAEoDEILCglfZmlsZW5hbWViBnByb3RvMw",[l]),E=Vn(R,0);import{fileDesc as Wn,messageDesc as Bn}from"@bufbuild/protobuf/codegenv2";import{fileDesc as Xn,messageDesc as Jt}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_struct as Jn}from"@bufbuild/protobuf/wkt";var Re=Xn("Ciltb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvanRkX3NjaGVtYS5wcm90bxIYbW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoIsEcCglKVERTY2hlbWESegoLZGVmaW5pdGlvbnMYASADKAsyNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguSlREU2NoZW1hLkRlZmluaXRpb25zRW50cnlCL7pILJoBKQgAEOgHIiJyIBABGGQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokEi4KCG1ldGFkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhUKCG51bGxhYmxlGAMgASgISAGIAQESNwoDcmVmGAQgASgJQiW6SCJyIBABGGQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokSAKIAQEScQoEdHlwZRgFIAEoCUJeukhbcllSB2Jvb2xlYW5SB2Zsb2F0MzJSB2Zsb2F0NjRSBGludDhSBXVpbnQ4UgVpbnQxNlIGdWludDE2UgVpbnQzMlIGdWludDMyUgZzdHJpbmdSCXRpbWVzdGFtcEgDiAEBEiQKBGVudW0YBiADKAlCFrpIE5IBEAgAEOgHGAEiB3IFEAEY6AcSOgoIZWxlbWVudHMYByABKAsyIy5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguSlREU2NoZW1hSASIAQESXAoKcHJvcGVydGllcxgIIAMoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5KVERTY2hlbWEuUHJvcGVydGllc0VudHJ5QhO6SBCaAQ0IABDoByIGcgQQARhkEm0KE29wdGlvbmFsX3Byb3BlcnRpZXMYCSADKAsyOy5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguSlREU2NoZW1hLk9wdGlvbmFsUHJvcGVydGllc0VudHJ5QhO6SBCaAQ0IABDoByIGcgQQARhkEiIKFWFkZGl0aW9uYWxfcHJvcGVydGllcxgKIAEoCEgFiAEBEjgKBnZhbHVlcxgLIAEoCzIjLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5KVERTY2hlbWFIBogBARIlCg1kaXNjcmltaW5hdG9yGAwgASgJQgm6SAZyBBABGGRIB4gBARJWCgdtYXBwaW5nGA0gAygLMjAubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLkpURFNjaGVtYS5NYXBwaW5nRW50cnlCE7pIEJoBDQgAEOgHIgZyBBABGGQaVwoQRGVmaW5pdGlvbnNFbnRyeRILCgNrZXkYASABKAkSMgoFdmFsdWUYAiABKAsyIy5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguSlREU2NoZW1hOgI4ARpWCg9Qcm9wZXJ0aWVzRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLkpURFNjaGVtYToCOAEaXgoXT3B0aW9uYWxQcm9wZXJ0aWVzRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLkpURFNjaGVtYToCOAEaUwoMTWFwcGluZ0VudHJ5EgsKA2tleRgBIAEoCRIyCgV2YWx1ZRgCIAEoCzIjLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5KVERTY2hlbWE6AjgBOuMRukjfERqTAwocanRkLm11dHVhbGx5X2V4Y2x1c2l2ZV9mb3JtcxKIAVNjaGVtYSBtdXN0IHVzZSBleGFjdGx5IG9uZSBmb3JtIChlbXB0eSwgcmVmLCB0eXBlLCBlbnVtLCBlbGVtZW50cywgcHJvcGVydGllcywgdmFsdWVzLCBvciBkaXNjcmltaW5hdG9yKS4gTXVsdGlwbGUgZm9ybSBrZXl3b3JkcyBmb3VuZC4a5wFbaGFzKHRoaXMucmVmKSwgaGFzKHRoaXMudHlwZSksIHNpemUodGhpcy5lbnVtKSA+IDAsIGhhcyh0aGlzLmVsZW1lbnRzKSwgc2l6ZSh0aGlzLnByb3BlcnRpZXMpID4gMCB8fCBzaXplKHRoaXMub3B0aW9uYWxfcHJvcGVydGllcykgPiAwLCBoYXModGhpcy52YWx1ZXMpLCBoYXModGhpcy5kaXNjcmltaW5hdG9yKSAmJiBzaXplKHRoaXMubWFwcGluZykgPiAwXS5maWx0ZXIoeCwgeCkuc2l6ZSgpIDw9IDEa+AEKGWp0ZC5wcm9wZXJ0aWVzX25vX292ZXJsYXASWFByb3BlcnRpZXMgYW5kIG9wdGlvbmFsX3Byb3BlcnRpZXMgY2Fubm90IGhhdmUgb3ZlcmxhcHBpbmcga2V5cyAoUkZDIDg5MjcgU2VjdGlvbiAyLjIuNikagAEhKHNpemUodGhpcy5wcm9wZXJ0aWVzKSA+IDAgJiYgc2l6ZSh0aGlzLm9wdGlvbmFsX3Byb3BlcnRpZXMpID4gMCkgfHwgdGhpcy5wcm9wZXJ0aWVzLmFsbChwaywgIShwayBpbiB0aGlzLm9wdGlvbmFsX3Byb3BlcnRpZXMpKRqQAgoxanRkLmFkZGl0aW9uYWxfcHJvcGVydGllc19vbmx5X29uX3Byb3BlcnRpZXNfZm9ybRJ2YWRkaXRpb25hbF9wcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIHNldCB3aGVuIHVzaW5nIHRoZSBwcm9wZXJ0aWVzIGZvcm0gKGhhcyBub24tZW1wdHkgcHJvcGVydGllcyBvciBvcHRpb25hbF9wcm9wZXJ0aWVzKRpjIWhhcyh0aGlzLmFkZGl0aW9uYWxfcHJvcGVydGllcykgfHwgc2l6ZSh0aGlzLnByb3BlcnRpZXMpID4gMCB8fCBzaXplKHRoaXMub3B0aW9uYWxfcHJvcGVydGllcykgPiAwGsIBCiJqdGQuZGlzY3JpbWluYXRvcl9yZXF1aXJlc19tYXBwaW5nEmdkaXNjcmltaW5hdG9yIGFuZCBtYXBwaW5nIG11c3QgYXBwZWFyIHRvZ2V0aGVyIHdpdGggYXQgbGVhc3Qgb25lIG1hcHBpbmcgZW50cnkgKFJGQyA4OTI3IFNlY3Rpb24gMi4yLjgpGjNoYXModGhpcy5kaXNjcmltaW5hdG9yKSA9PSAoc2l6ZSh0aGlzLm1hcHBpbmcpID4gMCka/QEKI2p0ZC5tYXBwaW5nX211c3RfYmVfcHJvcGVydGllc19mb3JtEk5BbGwgc2NoZW1hcyBpbiBtYXBwaW5nIG11c3QgYmUgb2YgdGhlIHByb3BlcnRpZXMgZm9ybSAoUkZDIDg5MjcgU2VjdGlvbiAyLjIuOCkahQFzaXplKHRoaXMubWFwcGluZykgPT0gMCB8fCB0aGlzLm1hcHBpbmcuYWxsKG0sIHNpemUodGhpcy5tYXBwaW5nW21dLnByb3BlcnRpZXMpID4gMCB8fCBzaXplKHRoaXMubWFwcGluZ1ttXS5vcHRpb25hbF9wcm9wZXJ0aWVzKSA+IDApGuIBCh5qdGQubWFwcGluZ19jYW5ub3RfYmVfbnVsbGFibGUSU1NjaGVtYXMgaW4gZGlzY3JpbWluYXRvciBtYXBwaW5nIGNhbm5vdCBoYXZlIG51bGxhYmxlPXRydWUgKFJGQyA4OTI3IFNlY3Rpb24gMi4yLjgpGmtzaXplKHRoaXMubWFwcGluZykgPT0gMCB8fCB0aGlzLm1hcHBpbmcuYWxsKG0sICFoYXModGhpcy5tYXBwaW5nW21dLm51bGxhYmxlKSB8fCAhdGhpcy5tYXBwaW5nW21dLm51bGxhYmxlKRrGAgoranRkLmRpc2NyaW1pbmF0b3Jfbm90X2luX21hcHBpbmdfcHJvcGVydGllcxJwRGlzY3JpbWluYXRvciB0YWcgY2Fubm90IGFwcGVhciBpbiBwcm9wZXJ0aWVzIG9yIG9wdGlvbmFsX3Byb3BlcnRpZXMgb2YgbWFwcGluZyBzY2hlbWFzIChSRkMgODkyNyBTZWN0aW9uIDIuMi44KRqkASFoYXModGhpcy5kaXNjcmltaW5hdG9yKSB8fCB0aGlzLm1hcHBpbmcuYWxsKG0sICEodGhpcy5kaXNjcmltaW5hdG9yIGluIHRoaXMubWFwcGluZ1ttXS5wcm9wZXJ0aWVzKSAmJiAhKHRoaXMuZGlzY3JpbWluYXRvciBpbiB0aGlzLm1hcHBpbmdbbV0ub3B0aW9uYWxfcHJvcGVydGllcykpGsUCChJqdGQuZW51bV9ub25fZW1wdHkSSmVudW0gYXJyYXkgbXVzdCBiZSBub24tZW1wdHkgd2hlbiB1c2luZyBlbnVtIGZvcm0gKFJGQyA4OTI3IFNlY3Rpb24gMi4yLjQpGuIBc2l6ZSh0aGlzLmVudW0pID4gMCAmJiAhaGFzKHRoaXMudHlwZSkgJiYgIWhhcyh0aGlzLnJlZikgJiYgIWhhcyh0aGlzLmVsZW1lbnRzKSAmJiAhaGFzKHRoaXMudmFsdWVzKSAmJiAhaGFzKHRoaXMuZGlzY3JpbWluYXRvcikgJiYgc2l6ZSh0aGlzLnByb3BlcnRpZXMpID09IDAgJiYgc2l6ZSh0aGlzLm9wdGlvbmFsX3Byb3BlcnRpZXMpID09IDAgPyBzaXplKHRoaXMuZW51bSkgPiAwIDogdHJ1ZUILCglfbWV0YWRhdGFCCwoJX251bGxhYmxlQgYKBF9yZWZCBwoFX3R5cGVCCwoJX2VsZW1lbnRzQhgKFl9hZGRpdGlvbmFsX3Byb3BlcnRpZXNCCQoHX3ZhbHVlc0IQCg5fZGlzY3JpbWluYXRvcmIGcHJvdG8z",[l,Jn]);var x=Wn("Cixtb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2Zvcm1hdC5wcm90bxIYbW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoIo8FCgxTaWduYWxGb3JtYXQSOQoKanRkX3NjaGVtYRgBIAEoCzIjLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5KVERTY2hlbWFIABKyBAoJbWltZV90eXBlGAIgASgJQpwEukiYBLoBmwIKMG1pbWVfdHlwZS5ub190eXBlX3dpbGRjYXJkX3dpdGhfY29uY3JldGVfc3VidHlwZRK7AVR5cGUgd2lsZGNhcmQgd2l0aCBjb25jcmV0ZSBzdWJ0eXBlIChlLmcuLCAnKi9wbmcnLCAnKi9qc29uJykgaXMgbm90IGFsbG93ZWQuIFVzZSBjb25jcmV0ZSB0eXBlIChlLmcuLCAnaW1hZ2UvcG5nJyksIHR5cGUtZmFtaWx5IHdpbGRjYXJkIChlLmcuLCAnaW1hZ2UvKicpLCBvciB1bml2ZXJzYWwgd2lsZGNhcmQgKCcqLyonKS4aKSEodGhpcy5zdGFydHNXaXRoKCcqLycpICYmIHRoaXMgIT0gJyovKicpugGRAQodbWltZV90eXBlLm5vX2FwcGxpY2F0aW9uX2pzb24SR2dlbmVyaWMganNvbiBpcyBqdGQtc2NoZW1hIHdpdGggZW1wdHkgc2NoZW1hLCB0aGlzIHdpbGwgYWNjZXB0IGFueSBKU09OGid0aGlzLmxvd2VyQXNjaWkoKSAhPSAnYXBwbGljYXRpb24vanNvbidyYhADGP8BMlteKFthLXpBLVowLTldW2EtekEtWjAtOSEjJCZcLV5fLitdezAsMTI2fXxcKikvKFthLXpBLVowLTldW2EtekEtWjAtOSEjJCZcLV5fLitdezAsMTI2fXxcKikkSABCDwoGZm9ybWF0EgW6SAIIAWIGcHJvdG8z",[l,Re]),Se=Bn(x,0);import{fileDesc as fn,messageDesc as Hn}from"@bufbuild/protobuf/codegenv2";import{fileDesc as xn,messageDesc as Ut}from"@bufbuild/protobuf/codegenv2";import{fileDesc as Yn,messageDesc as Nt}from"@bufbuild/protobuf/codegenv2";import{fileDesc as Cn,messageDesc as ft}from"@bufbuild/protobuf/codegenv2";var k=Cn("CjBtb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2Rlc2NyaXB0b3IucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKMAgoQU2lnbmFsRGVzY3JpcHRvchIzCgRuYW1lGAEgASgJQiW6SCJyIBABGDIyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokEhwKBWxhYmVsGAIgASgJQgi6SAVyAxj6AUgAiAEBEiIKC2Rlc2NyaXB0aW9uGAMgASgJQgi6SAVyAxjoB0gBiAEBEhUKCG9wdGlvbmFsGAQgASgISAKIAQESQwoHZm9ybWF0cxgFIAMoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxGb3JtYXRCCrpIB5IBBAgBEDJCCAoGX2xhYmVsQg4KDF9kZXNjcmlwdGlvbkILCglfb3B0aW9uYWxiBnByb3RvMw",[l,x]);var Ve=Yn("Ciptb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvdHJhbnNjZWl2ZXIucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCLMAgoLVHJhbnNjZWl2ZXISMwoEbmFtZRgBIAEoCUIlukgiciAQARgyMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBIiCgtkZXNjcmlwdGlvbhgCIAEoCUIIukgFcgMY+gFIAIgBARKtAQoHc2lnbmFscxgDIAMoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEZXNjcmlwdG9yQnC6SG26AWQKFHNpZ25hbHNfdW5pcXVlX25hbWVzEiRFYWNoIHNpZ25hbCBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aJnRoaXMubWFwKHNpZ25hbCwgc2lnbmFsLm5hbWUpLnVuaXF1ZSgpkgEDEIAEEhYKCXN0cmVhbWluZxgEIAEoCEgBiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfc3RyZWFtaW5nYgZwcm90bzM",[l,k]);var Xe=xn("Cidtb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvZXhjaGFuZ2UucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCLuAwoIRXhjaGFuZ2USMwoEbmFtZRgBIAEoCUIlukgiciAQARgyMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBIiCgtkZXNjcmlwdGlvbhgCIAEoCUIIukgFcgMY+gFIAIgBARLCAQoMdHJhbnNtaXR0ZXJzGAMgAygLMiUubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlRyYW5zY2VpdmVyQoQBukiAAboBeAoZdHJhbnNtaXR0ZXJzX3VuaXF1ZV9uYW1lcxIpRWFjaCB0cmFuc21pdHRlciBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aMHRoaXMubWFwKHRyYW5zbWl0dGVyLCB0cmFuc21pdHRlci5uYW1lKS51bmlxdWUoKZIBAhAKErMBCglyZWNlaXZlcnMYBCADKAsyJS5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguVHJhbnNjZWl2ZXJCebpIdroBbAoWcmVjZWl2ZXJzX3VuaXF1ZV9uYW1lcxImRWFjaCByZWNlaXZlciBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aKnRoaXMubWFwKHJlY2VpdmVyLCByZWNlaXZlci5uYW1lKS51bmlxdWUoKZIBBAgBEApCDgoMX2Rlc2NyaXB0aW9uYgZwcm90bzM",[l,Ve]);import{fileDesc as Mn,messageDesc as ss}from"@bufbuild/protobuf/codegenv2";import{enumDesc as Ot,fileDesc as Fn,messageDesc as _t}from"@bufbuild/protobuf/codegenv2";var Je=Fn("Ci1tb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2JpbmRpbmcucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKWBgoNU2lnbmFsQmluZGluZxIzCgRuYW1lGAEgASgJQiW6SCJyIBABGDIyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokEhwKBWxhYmVsGAIgASgJQgi6SAVyAxj6AUgBiAEBEiIKC2Rlc2NyaXB0aW9uGAMgASgJQgi6SAVyAxjoB0gCiAEBEhUKCG9wdGlvbmFsGAQgASgISAOIAQESQwoHYWNjZXB0cxgFIAMoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxGb3JtYXRCCrpIB5IBBAgBEDISXgoJcmVmZXJlbmNlGAYgASgJQkm6SEZyRBj6ATI/XlswLTlhLXpdezR9L1tfJGEtekEtWl1bXyRhLXpBLVowLTldKi9bXyRhLXpBLVpdW18kYS16QS1aMC05XSokSAAS4AEKCGNvbnN0YW50GAcgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCpQG6SKEBugGdAQoZY29uc3RhbnQubWF4X3BheWxvYWRfc2l6ZRJmQ29uc3RhbnQgc2lnbmFsIGRhdGEgY2Fubm90IGV4Y2VlZCA1MEtCICg1MTIwMCBieXRlcykuIEZvciBsYXJnZXIgZGF0YSwgdXNlIHNpZ25hbCByZWZlcmVuY2VzIGluc3RlYWQuGhhzaXplKHRoaXMuZGF0YSkgPD0gNTEyMDBIABJLCgVlcnJvchgIIAEoDjItLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxCaW5kaW5nLkVycm9yQgi6SAWCAQIgAEgEiAEBImYKBUVycm9yEhUKEUVSUk9SX1VOU1BFQ0lGSUVEEAASEQoNRVJST1JfVU5CT1VORBABEhgKFEVSUk9SX0lOVkFMSURfU09VUkNFEAISGQoVRVJST1JfU0NIRU1BX01JU01BVENIEANCCQoHYmluZGluZ0IICgZfbGFiZWxCDgoMX2Rlc2NyaXB0aW9uQgsKCV9vcHRpb25hbEIICgZfZXJyb3JiBnByb3RvMw",[l,R,x]);var We=Mn("Cidtb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvcmVjZWl2ZXIucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKlAgoIUmVjZWl2ZXISMwoEbmFtZRgBIAEoCUIlukgiciAQARgyMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBIiCgtkZXNjcmlwdGlvbhgCIAEoCUIIukgFcgMY+gFIAIgBARKvAQoIYmluZGluZ3MYAyADKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsQmluZGluZ0J0ukhxugFoChViaW5kaW5nc191bmlxdWVfbmFtZXMSJUVhY2ggYmluZGluZyBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aKHRoaXMubWFwKGJpbmRpbmcsIGJpbmRpbmcubmFtZSkudW5pcXVlKCmSAQMQgARCDgoMX2Rlc2NyaXB0aW9uYgZwcm90bzM",[l,Je]);import{enumDesc as cs,fileDesc as En,messageDesc as ls}from"@bufbuild/protobuf/codegenv2";var w=En("Ciptb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvdHJhbnNtaXR0ZXIucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCLCAwoLVHJhbnNtaXR0ZXISMwoEbmFtZRgBIAEoCUIlukgiciAQARgyMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBIiCgtkZXNjcmlwdGlvbhgCIAEoCUIIukgFcgMY+gFIAIgBARKtAQoHc2lnbmFscxgDIAMoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEZXNjcmlwdG9yQnC6SG26AWQKFHNpZ25hbHNfdW5pcXVlX25hbWVzEiRFYWNoIHNpZ25hbCBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aJnRoaXMubWFwKHNpZ25hbCwgc2lnbmFsLm5hbWUpLnVuaXF1ZSgpkgEDEIAEEj0KBG1vZGUYBCABKA4yKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguVHJhbnNtaXR0ZXIuTW9kZUgBiAEBIlIKBE1vZGUSFAoQTU9ERV9VTlNQRUNJRklFRBAAEhEKDU1PREVfU1RBTkRBUkQQARIPCgtNT0RFX1NUUkVBTRACEhAKDE1PREVfRkFJTFVSRRADQg4KDF9kZXNjcmlwdGlvbkIHCgVfbW9kZWIGcHJvdG8z",[l,k]);var v=fn("Ci5tb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvdmVydGV4X21ldGFkYXRhLnByb3RvEhhtb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGgihAUKDlZlcnRleE1ldGFkYXRhEhAKCGNvbXBsZXRlGAEgASgIErABCglyZWNlaXZlcnMYAiADKAsyIi5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguUmVjZWl2ZXJCebpIdroBbAoWcmVjZWl2ZXJzX3VuaXF1ZV9uYW1lcxImRWFjaCByZWNlaXZlciBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZS4aKnRoaXMubWFwKHJlY2VpdmVyLCByZWNlaXZlci5uYW1lKS51bmlxdWUoKZIBBAgBEDISwgEKDHRyYW5zbWl0dGVycxgDIAMoCzIlLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5UcmFuc21pdHRlckKEAbpIgAG6AXgKGXRyYW5zbWl0dGVyc191bmlxdWVfbmFtZXMSKUVhY2ggdHJhbnNtaXR0ZXIgbXVzdCBoYXZlIGEgdW5pcXVlIG5hbWUuGjB0aGlzLm1hcCh0cmFuc21pdHRlciwgdHJhbnNtaXR0ZXIubmFtZSkudW5pcXVlKCmSAQIQMhKuAQoJZXhjaGFuZ2VzGAQgAygLMiIubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLkV4Y2hhbmdlQne6SHS6AWwKFmV4Y2hhbmdlc191bmlxdWVfbmFtZXMSJkVhY2ggZXhjaGFuZ2UgbXVzdCBoYXZlIGEgdW5pcXVlIG5hbWUuGip0aGlzLm1hcChleGNoYW5nZSwgZXhjaGFuZ2UubmFtZSkudW5pcXVlKCmSAQIQChIlCg1jcm9uX3NjaGVkdWxlGAYgASgJQgm6SAZyBBABGGRIAIgBAUIQCg5fY3Jvbl9zY2hlZHVsZWIGcHJvdG8z",[l,Xe,We,w]),F=Hn(v,0);import{enumDesc as Vs,fileDesc as Nn,messageDesc as Qn,serviceDesc as Ln}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_field_mask as kn}from"@bufbuild/protobuf/wkt";import{enumDesc as vn,fileDesc as zn,messageDesc as U}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_timestamp as Kn}from"@bufbuild/protobuf/wkt";var J=zn("Ciltb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9zdG9yZS5wcm90bxIdbW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEiJgoIUHV0VmFsdWUSDQoFdmFsdWUYASABKAwSCwoDdHRsGAIgASgFIlkKCEdldFZhbHVlEg0KBXZhbHVlGAEgASgMEj4KCG1ldGFkYXRhGAIgASgLMiwubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuVmFsdWVNZXRhZGF0YSJdCg1WYWx1ZU1ldGFkYXRhEgsKA3R0bBgBIAEoBRIxCg1sYXN0X21vZGlmaWVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgRldGFnGAMgASgJIuwBCg5UaW1lc3RhbXBSYW5nZRIxCgVzdGFydBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARIvCgNlbmQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQga6SAPIAQESFwoPc3RhcnRfaW5jbHVzaXZlGAMgASgIEhUKDWVuZF9pbmNsdXNpdmUYBCABKAg6RrpIQxpBCgt2YWxpZF9yYW5nZRIbc3RhcnQgbXVzdCBiZSBsZXNzIHRoYW4gZW5kGhV0aGlzLnN0YXJ0IDwgdGhpcy5lbmQinwMKCFNlbGVjdE9wEhwKBXN0YXJ0GAEgASgJQgi6SAVyAxiAIEgAiAEBEhoKA2VuZBgCIAEoCUIIukgFcgMYgCBIAYgBARIcCg9zdGFydF9pbmNsdXNpdmUYAyABKAhIAogBARIaCg1lbmRfaW5jbHVzaXZlGAQgASgISAOIAQESHgoFbGltaXQYBSABKAVCCrpIBxoFGOgHKABIBIgBARIXCgpwYWdlX3Rva2VuGAYgASgJSAWIAQE6lAG6SJABGo0BCgt2YWxpZF9yYW5nZRJBd2hlbiBib3RoIHN0YXJ0IGFuZCBlbmQgYXJlIHByb3ZpZGVkLCBzdGFydCBtdXN0IGJlIGxlc3MgdGhhbiBlbmQaOyFoYXModGhpcy5zdGFydCkgfHwgIWhhcyh0aGlzLmVuZCkgfHwgdGhpcy5zdGFydCA8IHRoaXMuZW5kQggKBl9zdGFydEIGCgRfZW5kQhIKEF9zdGFydF9pbmNsdXNpdmVCEAoOX2VuZF9pbmNsdXNpdmVCCAoGX2xpbWl0Qg0KC19wYWdlX3Rva2VuIuABCg5Xcml0ZU9wZXJhdGlvbhI5CgZpbnNlcnQYASABKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbnNlcnRPcEgAEjkKBmRlbGV0ZRgCIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkRlbGV0ZU9wSAASRAoMcmFuZ2VfZGVsZXRlGAMgASgLMiwubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUmFuZ2VEZWxldGVPcEgAQhIKCW9wZXJhdGlvbhIFukgCCAEiuwEKGUNvbmRpdGlvbmFsV3JpdGVPcGVyYXRpb24SRAoGaW5zZXJ0GAEgASgLMjIubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZGl0aW9uYWxJbnNlcnRPcEgAEkQKBmRlbGV0ZRgCIAEoCzIyLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmRpdGlvbmFsRGVsZXRlT3BIAEISCglvcGVyYXRpb24SBbpIAggBItICCg1SYW5nZURlbGV0ZU9wEhwKBXN0YXJ0GAEgASgJQgi6SAVyAxiAIEgAiAEBEhoKA2VuZBgCIAEoCUIIukgFcgMYgCBIAYgBARIcCg9zdGFydF9pbmNsdXNpdmUYAyABKAhIAogBARIaCg1lbmRfaW5jbHVzaXZlGAQgASgISAOIAQE6lAG6SJABGo0BCgt2YWxpZF9yYW5nZRJBd2hlbiBib3RoIHN0YXJ0IGFuZCBlbmQgYXJlIHByb3ZpZGVkLCBzdGFydCBtdXN0IGJlIGxlc3MgdGhhbiBlbmQaOyFoYXModGhpcy5zdGFydCkgfHwgIWhhcyh0aGlzLmVuZCkgfHwgdGhpcy5zdGFydCA8IHRoaXMuZW5kQggKBl9zdGFydEIGCgRfZW5kQhIKEF9zdGFydF9pbmNsdXNpdmVCEAoOX2VuZF9pbmNsdXNpdmUiYQoISW5zZXJ0T3ASFQoDa2V5GAEgASgJQgi6SAVyAxiAIBI+CgV2YWx1ZRgCIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlB1dFZhbHVlQga6SAPIAQEiIQoIRGVsZXRlT3ASFQoDa2V5GAEgASgJQgi6SAVyAxiAICK2BgoTQ29uZGl0aW9uYWxJbnNlcnRPcBIVCgNrZXkYASABKAlCCLpIBXIDGIAgEj4KBXZhbHVlGAIgASgLMicubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUHV0VmFsdWVCBrpIA8gBARJaCgxwcmVjb25kaXRpb24YAyABKAsyPy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25kaXRpb25hbEluc2VydE9wLlByZWNvbmRpdGlvbkgAiAEBGtoECgxQcmVjb25kaXRpb24SOgoUbGFzdF9tb2RpZmllZF9lcXVhbHMYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAASTAoTbGFzdF9tb2RpZmllZF9yYW5nZRgCIAEoCzItLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlRpbWVzdGFtcFJhbmdlSAASEQoEZXRhZxgEIAEoCUgBiAEBEhsKDmZhaWxfaWZfZXhpc3RzGAUgASgISAKIAQE63AK6SNgCGscBCiBub190aW1lc3RhbXBfd2l0aF9mYWlsX2lmX2V4aXN0cxI7ZmFpbF9pZl9leGlzdHMgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggdGltZXN0YW1wIGNvbmRpdGlvbnMaZnRoaXMuZmFpbF9pZl9leGlzdHMgPT0gdHJ1ZSA/ICFoYXModGhpcy5sYXN0X21vZGlmaWVkX2VxdWFscykgJiYgIWhhcyh0aGlzLmxhc3RfbW9kaWZpZWRfcmFuZ2UpIDogdHJ1ZRqLAQobbm9fZXRhZ193aXRoX2ZhaWxfaWZfZXhpc3RzEjZmYWlsX2lmX2V4aXN0cyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBldGFnIGNvbmRpdGlvbnMaNHRoaXMuZmFpbF9pZl9leGlzdHMgPT0gdHJ1ZSA/ICFoYXModGhpcy5ldGFnKSA6IHRydWVCFQoTdGltZXN0YW1wX2NvbmRpdGlvbkIHCgVfZXRhZ0IRCg9fZmFpbF9pZl9leGlzdHNCDwoNX3ByZWNvbmRpdGlvbiLeBQoTQ29uZGl0aW9uYWxEZWxldGVPcBIVCgNrZXkYASABKAlCCLpIBXIDGIAgEloKDHByZWNvbmRpdGlvbhgCIAEoCzI/Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmRpdGlvbmFsRGVsZXRlT3AuUHJlY29uZGl0aW9uSACIAQEawgQKDFByZWNvbmRpdGlvbhIYCgttdXN0X2V4aXN0cxgBIAEoCEgBiAEBEjoKFGxhc3RfbW9kaWZpZWRfZXF1YWxzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAEkwKE2xhc3RfbW9kaWZpZWRfcmFuZ2UYAyABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5UaW1lc3RhbXBSYW5nZUgAEhEKBGV0YWcYBCABKAlIAogBATrKArpIxgIavgEKHW5vX3RpbWVzdGFtcF93aXRoX211c3RfZXhpc3RzEjhtdXN0X2V4aXN0cyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB0aW1lc3RhbXAgY29uZGl0aW9ucxpjdGhpcy5tdXN0X2V4aXN0cyA9PSB0cnVlID8gIWhhcyh0aGlzLmxhc3RfbW9kaWZpZWRfZXF1YWxzKSAmJiAhaGFzKHRoaXMubGFzdF9tb2RpZmllZF9yYW5nZSkgOiB0cnVlGoIBChhub19ldGFnX3dpdGhfbXVzdF9leGlzdHMSM211c3RfZXhpc3RzIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIGV0YWcgY29uZGl0aW9ucxoxdGhpcy5tdXN0X2V4aXN0cyA9PSB0cnVlID8gIWhhcyh0aGlzLmV0YWcpIDogdHJ1ZUIVChN0aW1lc3RhbXBfY29uZGl0aW9uQg4KDF9tdXN0X2V4aXN0c0IHCgVfZXRhZ0IPCg1fcHJlY29uZGl0aW9uKpABCglOYW1lc3BhY2USGQoVTkFNRVNQQUNFX1VOU1BFQ0lGSUVEEAASHQoZTkFNRVNQQUNFX1ZFUlRFWF9JTlNUQU5DRRABEh0KGU5BTUVTUEFDRV9QTFVHSU5fSU5TVEFOQ0UQAhIUChBOQU1FU1BBQ0VfVkVSVEVYEAMSFAoQTkFNRVNQQUNFX1BMVUdJThAEYgZwcm90bzM",[l,Kn]);var oe=U(J,3);var D=U(J,5);var ae=U(J,10,0);var Be=U(J,11,0);var Ce=vn(J,0);var Ye=Nn("Cjhtb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9jb25maWd1cmF0b3Jfc2VydmljZS5wcm90bxIdbW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEi5AEKGkxpc3RJbmNvbWluZ1NpZ25hbHNSZXF1ZXN0EjwKCHJlY2VpdmVyGAEgASgJQiW6SCJyIBABGGQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokSACIAQESNwoHZm9ybWF0cxgCIAMoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxGb3JtYXQSMwoKZmllbGRfbWFzaxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tIAYgBAUILCglfcmVjZWl2ZXJCDQoLX2ZpZWxkX21hc2si9gEKEEluY29taW5nVmVydGljZXMSCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI7Cgx0cmFuc21pdHRlcnMYBCADKAsyJS5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguVHJhbnNtaXR0ZXISPgoLdmVydGV4X3R5cGUYBSABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5WZXJ0ZXhUeXBlEhQKB2xvZ29faWQYBiABKAlIAYgBAUIOCgxfZGVzY3JpcHRpb25CCgoIX2xvZ29faWQiiQIKG0xpc3RJbmNvbWluZ1NpZ25hbHNSZXNwb25zZRJBCgh2ZXJ0aWNlcxgBIAMoCzIvLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkluY29taW5nVmVydGljZXMSYQoMdmVydGV4X2xvZ29zGAIgAygLMksubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuTGlzdEluY29taW5nU2lnbmFsc1Jlc3BvbnNlLlZlcnRleExvZ29zRW50cnkSEAoIcmVjZWl2ZXIYAyABKAkaMgoQVmVydGV4TG9nb3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIsYBCilDb25maWd1cmF0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVxdWVzdBJOCgpvcGVyYXRpb25zGAEgAygLMi0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuV3JpdGVPcGVyYXRpb25CC7pICJIBBQgBEPQDEkkKCW5hbWVzcGFjZRgCIAEoDjIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk5hbWVzcGFjZUIMukgJggEGIAAgASACIvYBCipDb25maWd1cmF0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVzcG9uc2USaQoIbWV0YWRhdGEYASADKAsyVy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25maWd1cmF0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVzcG9uc2UuTWV0YWRhdGFFbnRyeRpdCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRI7CgV2YWx1ZRgCIAEoCzIsLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlZhbHVlTWV0YWRhdGE6AjgBIr4BCiRDb25maWd1cmF0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlcXVlc3QSSwoJb3BlcmF0aW9uGAEgASgLMjgubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZGl0aW9uYWxXcml0ZU9wZXJhdGlvbhJJCgluYW1lc3BhY2UYAiABKA4yKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5OYW1lc3BhY2VCDLpICYIBBiAAIAEgAiJ5CiVDb25maWd1cmF0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlc3BvbnNlEkMKCG1ldGFkYXRhGAEgASgLMiwubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuVmFsdWVNZXRhZGF0YUgAiAEBQgsKCV9tZXRhZGF0YSKXAQooQ29uZmlndXJhdG9yU2VydmljZUJhdGNoUmVhZFN0b3JlUmVxdWVzdBIgCgRrZXlzGAEgAygJQhK6SA+SAQwIARCQTiIFcgMYgCASSQoJbmFtZXNwYWNlGAIgASgOMigubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuTmFtZXNwYWNlQgy6SAmCAQYgACABIAIi5gEKKUNvbmZpZ3VyYXRvclNlcnZpY2VCYXRjaFJlYWRTdG9yZVJlc3BvbnNlEmIKBWl0ZW1zGAEgAygLMlMubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZmlndXJhdG9yU2VydmljZUJhdGNoUmVhZFN0b3JlUmVzcG9uc2UuSXRlbXNFbnRyeRpVCgpJdGVtc0VudHJ5EgsKA2tleRgBIAEoCRI2CgV2YWx1ZRgCIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldFZhbHVlOgI4ASK2AQolQ29uZmlndXJhdG9yU2VydmljZVNlbGVjdFN0b3JlUmVxdWVzdBJCCglvcGVyYXRpb24YASABKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5TZWxlY3RPcEIGukgDyAEBEkkKCW5hbWVzcGFjZRgCIAEoDjIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk5hbWVzcGFjZUIMukgJggEGIAAgASACIogCCiZDb25maWd1cmF0b3JTZXJ2aWNlU2VsZWN0U3RvcmVSZXNwb25zZRJfCgVpdGVtcxgBIAMoCzJQLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmZpZ3VyYXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlc3BvbnNlLkl0ZW1zRW50cnkSFwoKbmV4dF90b2tlbhgCIAEoCUgAiAEBGlUKCkl0ZW1zRW50cnkSCwoDa2V5GAEgASgJEjYKBXZhbHVlGAIgASgLMicubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuR2V0VmFsdWU6AjgBQg0KC19uZXh0X3Rva2VuIm8KKUNvbmZpZ3VyYXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXF1ZXN0EjMKCmZpZWxkX21hc2sYASABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrSACIAQFCDQoLX2ZpZWxkX21hc2siswIKKkNvbmZpZ3VyYXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXNwb25zZRIOCgZjb25maWcYASABKAwSOgoIbWV0YWRhdGEYAiABKAsyKC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguVmVydGV4TWV0YWRhdGESfgoTY29uZmlndXJlZF9zZXJ2aWNlcxgDIAMoCzJhLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmZpZ3VyYXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXNwb25zZS5Db25maWd1cmVkU2VydmljZXNFbnRyeRo5ChdDb25maWd1cmVkU2VydmljZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBIrUCChdQb3N0VmVydGV4Q29uZmlnUmVxdWVzdBITCgZjb25maWcYASABKAxIAIgBARI/CghtZXRhZGF0YRgCIAEoCzIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5WZXJ0ZXhNZXRhZGF0YUgBiAEBEh4KEW92ZXJyaWRlX2JpbmRpbmdzGAMgASgISAKIAQE6drpIcxpxChtjb25maWdfb3JfbWV0YWRhdGFfcmVxdWlyZWQSKkVpdGhlciBjb25maWcgb3IgbWV0YWRhdGEgbXVzdCBiZSBwcm92aWRlZBomaGFzKHRoaXMuY29uZmlnKSB8fCBoYXModGhpcy5tZXRhZGF0YSlCCQoHX2NvbmZpZ0ILCglfbWV0YWRhdGFCFAoSX292ZXJyaWRlX2JpbmRpbmdzIlYKGFBvc3RWZXJ0ZXhDb25maWdSZXNwb25zZRI6CghtZXRhZGF0YRgBIAEoCzIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5WZXJ0ZXhNZXRhZGF0YSrBAQoKVmVydGV4VHlwZRIbChdWRVJURVhfVFlQRV9VTlNQRUNJRklFRBAAEhUKEVZFUlRFWF9UWVBFX1NUQVJUEAESFgoSVkVSVEVYX1RZUEVfUExVR0lOEAISFgoSVkVSVEVYX1RZUEVfT1VUUFVUEAMSGAoUVkVSVEVYX1RZUEVfREVMRUdBVEUQBBIXChNWRVJURVhfVFlQRV9CQVJSSUVSEAUSHAoYVkVSVEVYX1RZUEVfRVhDSEFOR0VfT1VUEAYy2QgKE0NvbmZpZ3VyYXRvclNlcnZpY2USpgEKD0dldFZlcnRleENvbmZpZxJILm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmZpZ3VyYXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXF1ZXN0GkkubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZmlndXJhdG9yU2VydmljZUdldFZlcnRleENvbmZpZ1Jlc3BvbnNlEoMBChBQb3N0VmVydGV4Q29uZmlnEjYubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUG9zdFZlcnRleENvbmZpZ1JlcXVlc3QaNy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Qb3N0VmVydGV4Q29uZmlnUmVzcG9uc2USlwEKCldyaXRlU3RvcmUSQy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25maWd1cmF0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlcXVlc3QaRC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25maWd1cmF0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlc3BvbnNlEqYBCg9CYXRjaFdyaXRlU3RvcmUSSC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25maWd1cmF0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVxdWVzdBpJLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmZpZ3VyYXRvclNlcnZpY2VCYXRjaFdyaXRlU3RvcmVSZXNwb25zZRKjAQoOQmF0Y2hSZWFkU3RvcmUSRy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25maWd1cmF0b3JTZXJ2aWNlQmF0Y2hSZWFkU3RvcmVSZXF1ZXN0GkgubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZmlndXJhdG9yU2VydmljZUJhdGNoUmVhZFN0b3JlUmVzcG9uc2USmgEKC1NlbGVjdFN0b3JlEkQubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ29uZmlndXJhdG9yU2VydmljZVNlbGVjdFN0b3JlUmVxdWVzdBpFLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkNvbmZpZ3VyYXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlc3BvbnNlEowBChNMaXN0SW5jb21pbmdTaWduYWxzEjkubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuTGlzdEluY29taW5nU2lnbmFsc1JlcXVlc3QaOi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5MaXN0SW5jb21pbmdTaWduYWxzUmVzcG9uc2ViBnByb3RvMw",[l,kn,x,w,v,J]);var xe=Qn(Ye,2);var Fe=Ln(Ye,0);import{fileDesc as $n,messageDesc as go,serviceDesc as et}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_field_mask as nt}from"@bufbuild/protobuf/wkt";import{enumDesc as _s,fileDesc as _n,messageDesc as qs,serviceDesc as $s}from"@bufbuild/protobuf/codegenv2";import{extDesc as Hs,fileDesc as Un}from"@bufbuild/protobuf/codegenv2";import{fileDesc as wn,messageDesc as Ms}from"@bufbuild/protobuf/codegenv2";var Me=wn("ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJnCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8z");import{file_google_protobuf_descriptor as Dn}from"@bufbuild/protobuf/wkt";var Ee=Un("Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[Me,Dn]);import{enumDesc as ws,extDesc as Us,fileDesc as Pn,messageDesc as Ds}from"@bufbuild/protobuf/codegenv2";import{enumDesc as Qs,fileDesc as Tn}from"@bufbuild/protobuf/codegenv2";var fe=Tn("Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQloKDmNvbS5nb29nbGUuYXBpQhBMYXVuY2hTdGFnZVByb3RvUAFaLWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpO2FwaaICBEdBUEliBnByb3RvMw");import{file_google_protobuf_descriptor as jn,file_google_protobuf_duration as On}from"@bufbuild/protobuf/wkt";var He=Pn("Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIkEKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKbAgoOUHl0aG9uU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEk4KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgCIAEoCzIvLmdvb2dsZS5hcGkuUHl0aG9uU2V0dGluZ3MuRXhwZXJpbWVudGFsRmVhdHVyZXMahAEKFEV4cGVyaW1lbnRhbEZlYXR1cmVzEh0KFXJlc3RfYXN5bmNfaW9fZW5hYmxlZBgBIAEoCBInCh9wcm90b2J1Zl9weXRob25pY190eXBlc19lbmFibGVkGAIgASgIEiQKHHVudmVyc2lvbmVkX3BhY2thZ2VfZGlzYWJsZWQYAyABKAgiQgoMTm9kZVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKqAwoORG90bmV0U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEkkKEHJlbmFtZWRfc2VydmljZXMYAiADKAsyLy5nb29nbGUuYXBpLkRvdG5ldFNldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5EksKEXJlbmFtZWRfcmVzb3VyY2VzGAMgAygLMjAuZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkUmVzb3VyY2VzRW50cnkSGQoRaWdub3JlZF9yZXNvdXJjZXMYBCADKAkSIAoYZm9yY2VkX25hbWVzcGFjZV9hbGlhc2VzGAUgAygJEh4KFmhhbmR3cml0dGVuX3NpZ25hdHVyZXMYBiADKAkaNgoUUmVuYW1lZFNlcnZpY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVSZW5hbWVkUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJCCgxSdWJ5U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIr8BCgpHb1NldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJFChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMisuZ29vZ2xlLmFwaS5Hb1NldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5GjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwIKDk1ldGhvZFNldHRpbmdzEhAKCHNlbGVjdG9yGAEgASgJEjwKDGxvbmdfcnVubmluZxgCIAEoCzImLmdvb2dsZS5hcGkuTWV0aG9kU2V0dGluZ3MuTG9uZ1J1bm5pbmcSHQoVYXV0b19wb3B1bGF0ZWRfZmllbGRzGAMgAygJGs0BCgtMb25nUnVubmluZxI1ChJpbml0aWFsX3BvbGxfZGVsYXkYASABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SHQoVcG9sbF9kZWxheV9tdWx0aXBsaWVyGAIgASgCEjEKDm1heF9wb2xsX2RlbGF5GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjUKEnRvdGFsX3BvbGxfdGltZW91dBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiJRChhTZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24SDwoHbWV0aG9kcxgBIAMoCRIkChxnZW5lcmF0ZV9vbWl0dGVkX2FzX2ludGVybmFsGAIgASgIKqMBChlDbGllbnRMaWJyYXJ5T3JnYW5pemF0aW9uEisKJ0NMSUVOVF9MSUJSQVJZX09SR0FOSVpBVElPTl9VTlNQRUNJRklFRBAAEgkKBUNMT1VEEAESBwoDQURTEAISCgoGUEhPVE9TEAMSDwoLU1RSRUVUX1ZJRVcQBBIMCghTSE9QUElORxAFEgcKA0dFTxAGEhEKDUdFTkVSQVRJVkVfQUkQBypnChhDbGllbnRMaWJyYXJ5RGVzdGluYXRpb24SKgomQ0xJRU5UX0xJQlJBUllfREVTVElOQVRJT05fVU5TUEVDSUZJRUQQABIKCgZHSVRIVUIQChITCg9QQUNLQUdFX01BTkFHRVIQFDpKChBtZXRob2Rfc2lnbmF0dXJlEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYmwggAygJUg9tZXRob2RTaWduYXR1cmU6QwoMZGVmYXVsdF9ob3N0Eh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJkIIAEoCVILZGVmYXVsdEhvc3Q6QwoMb2F1dGhfc2NvcGVzEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJoIIAEoCVILb2F1dGhTY29wZXM6RAoLYXBpX3ZlcnNpb24SHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYwbqr+gEgASgJUgphcGlWZXJzaW9uQmkKDmNvbS5nb29nbGUuYXBpQgtDbGllbnRQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMw",[fe,jn,On]);import{file_google_protobuf_timestamp as qn}from"@bufbuild/protobuf/wkt";var ve=_n("CjNtb2NoYWJ1Z2FwaXMvYWRhcHQvYXV0b21hdGlvbnMvdjEvYXV0b21hdGlvbnMucHJvdG8SIW1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MSIvChVJbmhlcml0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiZQoWSW5oZXJpdFNlc3Npb25SZXNwb25zZRINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIq8BChFSZWFkT3V0cHV0UmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIaCglwYWdlX3NpemUYAiABKA1CB7pIBCoCGGQSKQoGdmVydGV4GAMgASgJQhS6SBFyDzINXlswLTlhLXpdezR9JEgAiAEBEiEKCm5ld2VyX3RoYW4YBCABKAlCCLpIBXIDsAEBSAGIAQFCCQoHX3ZlcnRleEINCgtfbmV3ZXJfdGhhbiLLAQoSUmVhZE91dHB1dFJlc3BvbnNlEjsKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbhI6CgdvdXRwdXRzGAIgAygLMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLk91dHB1dBInChBuZXh0X3BhZ2VfY3Vyc29yGAMgASgJQgi6SAVyA7ABAUgAiAEBQhMKEV9uZXh0X3BhZ2VfY3Vyc29yIncKD1JlYWRVcmxzUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIaCglwYWdlX3NpemUYAiABKA1CB7pIBCoCGGQSIQoKbmV3ZXJfdGhhbhgDIAEoCUIIukgFcgOwAQFIAIgBAUINCgtfbmV3ZXJfdGhhbiLDAQoQUmVhZFVybHNSZXNwb25zZRI7CgdzZXNzaW9uGAEgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb24SNAoEdXJscxgCIAMoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmwSJwoQbmV4dF9wYWdlX2N1cnNvchgDIAEoCUIIukgFcgOwAQFIAIgBAUITChFfbmV4dF9wYWdlX2N1cnNvciLYAgoTU3RhcnRTZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxI7Cgt0cmFuc21pdHRlchgCIAEoCUIhukgechwQARhkMhZeW2EtekEtWjAtOV8tXXsxLDEwMH0kSACIAQEShQEKB3NpZ25hbHMYAyADKAsyQy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhcnRTZXNzaW9uUmVxdWVzdC5TaWduYWxzRW50cnlCL7pILJoBKSIiciAQARhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJCoDyAEBGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX3RyYW5zbWl0dGVyImMKFFN0YXJ0U2Vzc2lvblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEjAKB2V4cGlyZXMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCCgoIX2V4cGlyZXMiLAoSU3RvcFNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIhUKE1N0b3BTZXNzaW9uUmVzcG9uc2UiKwoRR2V0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiWQoSR2V0U2Vzc2lvblJlc3BvbnNlEkMKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkIGukgDyAEBIukBCgZPdXRwdXQSDgoGdmVydGV4GAEgASgJEgwKBGZvcmsYAiABKAkSQQoEZGF0YRgDIAMoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQuRGF0YUVudHJ5EisKB2NyZWF0ZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGlEKCURhdGFFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAEiegoDVXJsEgsKA3VybBgBIAEoCRIMCgRmb3JrGAIgASgJEg4KBnZlcnRleBgDIAEoCRIMCgRkb25lGAQgASgIEisKB2NyZWF0ZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXRva2VuGAYgASgJIlIKB1Nlc3Npb24SDAoEZm9yaxgBIAEoCRI5CgZzdGF0dXMYAiABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhdHVzIi4KFFN0cmVhbVNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIkkKEUFja01lc3NhZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDEhwKCm1lc3NhZ2VfaWQYAiABKAlCCLpIBXIDsAEBIhQKEkFja01lc3NhZ2VSZXNwb25zZSLrAQoVU3RyZWFtU2Vzc2lvblJlc3BvbnNlEhQKAmlkGAEgASgJQgi6SAVyA7ABARI7CgZvdXRwdXQYAiABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAMgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBCABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2Ui1AIKEVJ1blNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDEjsKC3RyYW5zbWl0dGVyGAIgASgJQiG6SB5yHBABGGQyFl5bYS16QS1aMC05Xy1dezEsMTAwfSRIAIgBARKDAQoHc2lnbmFscxgDIAMoCzJBLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVxdWVzdC5TaWduYWxzRW50cnlCL7pILJoBKSIiciAQARhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJCoDyAEBGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX3RyYW5zbWl0dGVyIrECChJSdW5TZXNzaW9uUmVzcG9uc2USFAoCaWQYASABKAlCCLpIBXIDsAEBEkcKB3N0YXJ0ZWQYAiABKAsyNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UiYAoRUnVuU2Vzc2lvblN0YXJ0ZWQSDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyIrChFSdW5Jbmhlcml0UmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AyKzAgoSUnVuSW5oZXJpdFJlc3BvbnNlEhQKAmlkGAEgASgJQgi6SAVyA7ABARJJCglpbmhlcml0ZWQYAiABKAsyNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UiYAoRUnVuSW5oZXJpdFN0YXJ0ZWQSDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyrIAQoGU3RhdHVzEhYKElNUQVRVU19VTlNQRUNJRklFRBAAEhIKDlNUQVRVU19SVU5OSU5HEAESEgoOU1RBVFVTX1NUT1BQRUQQAhITCg9TVEFUVVNfU1RPUFBJTkcQAxIUChBTVEFUVVNfQ09NUExFVEVEEAQSEgoOU1RBVFVTX0VYUElSRUQQBRISCg5TVEFUVVNfRVJST1JFRBAGEhUKEVNUQVRVU19ERUxFR0FUSU5HEAcSFAoQU1RBVFVTX0RFTEVHQVRFRBAIMtUOChFBdXRvbWF0aW9uU2VydmljZRKuAQoMU3RhcnRTZXNzaW9uEjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlcXVlc3QaNy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhcnRTZXNzaW9uUmVzcG9uc2UiLYLT5JMCJzoBKiIiL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9zdGFydBKiAQoLU3RvcFNlc3Npb24SNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RvcFNlc3Npb25SZXF1ZXN0GjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0b3BTZXNzaW9uUmVzcG9uc2UiJILT5JMCHiocL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbhK2AQoOSW5oZXJpdFNlc3Npb24SOC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuSW5oZXJpdFNlc3Npb25SZXF1ZXN0GjkubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkluaGVyaXRTZXNzaW9uUmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9pbmhlcml0Ep8BCgpHZXRTZXNzaW9uEjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkdldFNlc3Npb25SZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkdldFNlc3Npb25SZXNwb25zZSIkgtPkkwIeEhwvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uEqYBCgpSZWFkT3V0cHV0EjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRPdXRwdXRSZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRPdXRwdXRSZXNwb25zZSIrgtPkkwIlEiMvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL291dHB1dBKeAQoIUmVhZFVybHMSMi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUmVhZFVybHNSZXF1ZXN0GjMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRVcmxzUmVzcG9uc2UiKYLT5JMCIxIhL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi91cmxzErEBCg1TdHJlYW1TZXNzaW9uEjcubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0cmVhbVNlc3Npb25SZXF1ZXN0GjgubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0cmVhbVNlc3Npb25SZXNwb25zZSIrgtPkkwIlEiMvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL3N0cmVhbTABEqYBCgpBY2tNZXNzYWdlEjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkFja01lc3NhZ2VSZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkFja01lc3NhZ2VSZXNwb25zZSIrgtPkkwIlOgEqIiAvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL2FjaxKoAQoKUnVuU2Vzc2lvbhI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVzcG9uc2UiK4LT5JMCJToBKiIgL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9ydW4wARKwAQoKUnVuSW5oZXJpdBI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5Jbmhlcml0UmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5Jbmhlcml0UmVzcG9uc2UiM4LT5JMCLToBKiIoL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9ydW4taW5oZXJpdDABGokBykEWYWRhcHQubW9jaGFidWdhcGlzLmNvbdJBbWh0dHBzOi8vd3d3Lm1vY2hhYnVnYXBpcy5jb20vYXV0aC9hZGFwdC5hdXRvbWF0aW9ucyxodHRwczovL3d3dy5tb2NoYWJ1Z2FwaXMuY29tL2F1dGgvYWRhcHQuYXV0b21hdGlvbnMuc3RhcnRiBnByb3RvMw",[l,Ee,He,qn,R]);var ie=$n("CjRtb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9leGVjdXRvcl9zZXJ2aWNlLnByb3RvEh1tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MSK+AQolRXhlY3V0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVxdWVzdBJOCgpvcGVyYXRpb25zGAEgAygLMi0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuV3JpdGVPcGVyYXRpb25CC7pICJIBBQgBEPQDEkUKCW5hbWVzcGFjZRgCIAEoDjIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk5hbWVzcGFjZUIIukgFggECIAAi7gEKJkV4ZWN1dG9yU2VydmljZUJhdGNoV3JpdGVTdG9yZVJlc3BvbnNlEmUKCG1ldGFkYXRhGAEgAygLMlMubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVzcG9uc2UuTWV0YWRhdGFFbnRyeRpdCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRI7CgV2YWx1ZRgCIAEoCzIsLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlZhbHVlTWV0YWRhdGE6AjgBIrYBCiBFeGVjdXRvclNlcnZpY2VXcml0ZVN0b3JlUmVxdWVzdBJLCglvcGVyYXRpb24YASABKAsyOC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Db25kaXRpb25hbFdyaXRlT3BlcmF0aW9uEkUKCW5hbWVzcGFjZRgCIAEoDjIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk5hbWVzcGFjZUIIukgFggECIAAidQohRXhlY3V0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlc3BvbnNlEkMKCG1ldGFkYXRhGAEgASgLMiwubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuVmFsdWVNZXRhZGF0YUgAiAEBQgsKCV9tZXRhZGF0YSKPAQokRXhlY3V0b3JTZXJ2aWNlQmF0Y2hSZWFkU3RvcmVSZXF1ZXN0EiAKBGtleXMYASADKAlCErpID5IBDAgBEJBOIgVyAxiAIBJFCgluYW1lc3BhY2UYAiABKA4yKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5OYW1lc3BhY2VCCLpIBYIBAiAAIt4BCiVFeGVjdXRvclNlcnZpY2VCYXRjaFJlYWRTdG9yZVJlc3BvbnNlEl4KBWl0ZW1zGAEgAygLMk8ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlQmF0Y2hSZWFkU3RvcmVSZXNwb25zZS5JdGVtc0VudHJ5GlUKCkl0ZW1zRW50cnkSCwoDa2V5GAEgASgJEjYKBXZhbHVlGAIgASgLMicubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuR2V0VmFsdWU6AjgBIq4BCiFFeGVjdXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlcXVlc3QSQgoJb3BlcmF0aW9uGAEgASgLMicubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuU2VsZWN0T3BCBrpIA8gBARJFCgluYW1lc3BhY2UYAiABKA4yKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5OYW1lc3BhY2VCCLpIBYIBAiAAIoACCiJFeGVjdXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlc3BvbnNlElsKBWl0ZW1zGAEgAygLMkwubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlU2VsZWN0U3RvcmVSZXNwb25zZS5JdGVtc0VudHJ5EhcKCm5leHRfdG9rZW4YAiABKAlIAIgBARpVCgpJdGVtc0VudHJ5EgsKA2tleRgBIAEoCRI2CgV2YWx1ZRgCIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldFZhbHVlOgI4AUINCgtfbmV4dF90b2tlbiI2Ch5DYW5jZWxFeGNoYW5nZU9wZXJhdGlvblJlcXVlc3QSFAoCaWQYASABKAlCCLpIBXIDsAEBIiEKH0NhbmNlbEV4Y2hhbmdlT3BlcmF0aW9uUmVzcG9uc2UiMwobR2V0RXhjaGFuZ2VPcGVyYXRpb25SZXF1ZXN0EhQKAmlkGAEgASgJQgi6SAVyA7ABASJeChxHZXRFeGNoYW5nZU9wZXJhdGlvblJlc3BvbnNlEj4KBGl0ZW0YASABKAsyMC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGNoYW5nZU9wZXJhdGlvbiL3AgoXRGlzcGF0Y2hFeGNoYW5nZVJlcXVlc3QSMwoEbmFtZRgBIAEoCUIlukgiciAQARhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBI8CghyZWNlaXZlchgCIAEoCUIlukgiciAQARhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJEgAiAEBEoUBCgdzaWduYWxzGAMgAygLMkMubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRGlzcGF0Y2hFeGNoYW5nZVJlcXVlc3QuU2lnbmFsc0VudHJ5Qi+6SCyaASkIABAyIiNyIRABGIAEMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBpUCgxTaWduYWxzRW50cnkSCwoDa2V5GAEgASgJEjMKBXZhbHVlGAIgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGE6AjgBQgsKCV9yZWNlaXZlciJfChhEaXNwYXRjaEV4Y2hhbmdlUmVzcG9uc2USQwoJb3BlcmF0aW9uGAEgASgLMjAubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhjaGFuZ2VPcGVyYXRpb24irQIKC1NlbmRSZXF1ZXN0Ej0KC3RyYW5zbWl0dGVyGAEgASgJQiO6SCByHhhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJEgAiAEBEnkKB3NpZ25hbHMYAiADKAsyNy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5TZW5kUmVxdWVzdC5TaWduYWxzRW50cnlCL7pILJoBKQgAEDIiI3IhEAEYgAQyGl5bXyRhLXpBLVpdW18kYS16QS1aMC05XSokGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX3RyYW5zbWl0dGVyIg4KDFNlbmRSZXNwb25zZSJhChxCYXRjaEdldEFjdGl2ZVNpZ25hbHNSZXF1ZXN0EkEKBW5hbWVzGAEgAygJQjK6SC+SASwIARD0AxgBIiNyIRABGIAEMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJCLdAQodQmF0Y2hHZXRBY3RpdmVTaWduYWxzUmVzcG9uc2USVgoFaXRlbXMYASADKAsyRy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5CYXRjaEdldEFjdGl2ZVNpZ25hbHNSZXNwb25zZS5JdGVtc0VudHJ5EhAKCHJlY2VpdmVyGAIgASgJGlIKCkl0ZW1zRW50cnkSCwoDa2V5GAEgASgJEjMKBXZhbHVlGAIgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGE6AjgBIqgBChhMaXN0QWN0aXZlU2lnbmFsc1JlcXVlc3QSIAoJcGFnZV9zaXplGAEgASgFQgi6SAUaAxj0A0gAiAEBEh0KBmN1cnNvchgCIAEoCUIIukgFcgMY9ANIAYgBARIdChBvcmRlcl9kZXNjZW5kaW5nGAMgASgISAKIAQFCDAoKX3BhZ2Vfc2l6ZUIJCgdfY3Vyc29yQhMKEV9vcmRlcl9kZXNjZW5kaW5nIoUCChlMaXN0QWN0aXZlU2lnbmFsc1Jlc3BvbnNlElYKB3NpZ25hbHMYASADKAsyRS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5MaXN0QWN0aXZlU2lnbmFsc1Jlc3BvbnNlLlNpZ25hbHNFbnRyeRIQCghyZWNlaXZlchgCIAEoCRIYCgtuZXh0X2N1cnNvchgDIAEoCUgAiAEBGlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAFCDgoMX25leHRfY3Vyc29yImsKJUV4ZWN1dG9yU2VydmljZUdldFZlcnRleENvbmZpZ1JlcXVlc3QSMwoKZmllbGRfbWFzaxgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tIAIgBAUINCgtfZmllbGRfbWFzayKrAgomRXhlY3V0b3JTZXJ2aWNlR2V0VmVydGV4Q29uZmlnUmVzcG9uc2USDgoGY29uZmlnGAEgASgMEjoKCG1ldGFkYXRhGAIgASgLMigubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlZlcnRleE1ldGFkYXRhEnoKE2NvbmZpZ3VyZWRfc2VydmljZXMYAyADKAsyXS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGVjdXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXNwb25zZS5Db25maWd1cmVkU2VydmljZXNFbnRyeRo5ChdDb25maWd1cmVkU2VydmljZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBImgKEUV4Y2hhbmdlT3BlcmF0aW9uEgwKBG5hbWUYASABKAkSCgoCaWQYAiABKAkSOQoGc3RhdHVzGAMgASgOMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXR1czLKDAoPRXhlY3V0b3JTZXJ2aWNlEp4BCg9HZXRWZXJ0ZXhDb25maWcSRC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGVjdXRvclNlcnZpY2VHZXRWZXJ0ZXhDb25maWdSZXF1ZXN0GkUubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlR2V0VmVydGV4Q29uZmlnUmVzcG9uc2UShgEKEUxpc3RBY3RpdmVTaWduYWxzEjcubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuTGlzdEFjdGl2ZVNpZ25hbHNSZXF1ZXN0GjgubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuTGlzdEFjdGl2ZVNpZ25hbHNSZXNwb25zZRKSAQoVQmF0Y2hHZXRBY3RpdmVTaWduYWxzEjsubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRBY3RpdmVTaWduYWxzUmVxdWVzdBo8Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkJhdGNoR2V0QWN0aXZlU2lnbmFsc1Jlc3BvbnNlEl8KBFNlbmQSKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5TZW5kUmVxdWVzdBorLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlNlbmRSZXNwb25zZRKDAQoQRGlzcGF0Y2hFeGNoYW5nZRI2Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkRpc3BhdGNoRXhjaGFuZ2VSZXF1ZXN0GjcubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRGlzcGF0Y2hFeGNoYW5nZVJlc3BvbnNlEo8BChRHZXRFeGNoYW5nZU9wZXJhdGlvbhI6Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldEV4Y2hhbmdlT3BlcmF0aW9uUmVxdWVzdBo7Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldEV4Y2hhbmdlT3BlcmF0aW9uUmVzcG9uc2USmAEKF0NhbmNlbEV4Y2hhbmdlT3BlcmF0aW9uEj0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ2FuY2VsRXhjaGFuZ2VPcGVyYXRpb25SZXF1ZXN0Gj4ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQ2FuY2VsRXhjaGFuZ2VPcGVyYXRpb25SZXNwb25zZRKPAQoKV3JpdGVTdG9yZRI/Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkV4ZWN1dG9yU2VydmljZVdyaXRlU3RvcmVSZXF1ZXN0GkAubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlV3JpdGVTdG9yZVJlc3BvbnNlEp4BCg9CYXRjaFdyaXRlU3RvcmUSRC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGVjdXRvclNlcnZpY2VCYXRjaFdyaXRlU3RvcmVSZXF1ZXN0GkUubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlQmF0Y2hXcml0ZVN0b3JlUmVzcG9uc2USmwEKDkJhdGNoUmVhZFN0b3JlEkMubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlQmF0Y2hSZWFkU3RvcmVSZXF1ZXN0GkQubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhlY3V0b3JTZXJ2aWNlQmF0Y2hSZWFkU3RvcmVSZXNwb25zZRKSAQoLU2VsZWN0U3RvcmUSQC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGVjdXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlcXVlc3QaQS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGVjdXRvclNlcnZpY2VTZWxlY3RTdG9yZVJlc3BvbnNlYgZwcm90bzM",[l,nt,ve,R,v,J]);var ge=et(ie,0);import{enumDesc as ho,fileDesc as tt,messageDesc as Z,serviceDesc as st}from"@bufbuild/protobuf/codegenv2";var h=tt("CjVtb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9maWxlZm9yZ2Vfc2VydmljZS5wcm90bxIdbW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEi+wEKFVJlbmRlckRvY3VtZW50UmVxdWVzdBI/CgtodG1sX3RvX3BkZhgBIAEoCzIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkh0bWxUb1BkZkgAEkcKD21hcmtkb3duX3RvX3BkZhgCIAEoCzIsLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk1hcmtkb3duVG9QZGZIABJDCg1vZmZpY2VfdG9fcGRmGAMgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuT2ZmaWNlVG9QZGZIAEITCgpjb252ZXJzaW9uEgW6SAIIASJOChZSZW5kZXJEb2N1bWVudFJlc3BvbnNlEjQKBm91dHB1dBgBIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhIvoCCglIdG1sVG9QZGYSIAoKaW5kZXhfaHRtbBgBIAEoCUIMukgJcgcQARiAgIAFEiMKC2hlYWRlcl9odG1sGAIgASgJQgm6SAZyBBiAgEBIAIgBARIjCgtmb290ZXJfaHRtbBgDIAEoCUIJukgGcgQYgIBASAGIAQESPgoGYXNzZXRzGAQgAygLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCCLpIBZIBAhBkEkUKBnJlbmRlchgKIAEoCzIwLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkh0bWxSZW5kZXJPcHRpb25zSAKIAQESRAoGb3V0cHV0GAsgASgLMi8ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUGRmT3V0cHV0T3B0aW9uc0gDiAEBQg4KDF9oZWFkZXJfaHRtbEIOCgxfZm9vdGVyX2h0bWxCCQoHX3JlbmRlckIJCgdfb3V0cHV0IskDCg1NYXJrZG93blRvUGRmEiEKDHdyYXBwZXJfaHRtbBgBIAEoCUILukgIcgYQARiAgEASSAoObWFya2Rvd25fZmlsZXMYAiADKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YUIKukgHkgEECAEQMhIjCgtoZWFkZXJfaHRtbBgDIAEoCUIJukgGcgQYgIBASACIAQESIwoLZm9vdGVyX2h0bWwYBCABKAlCCbpIBnIEGICAQEgBiAEBEj4KBmFzc2V0cxgFIAMoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhQgi6SAWSAQIQZBJFCgZyZW5kZXIYCiABKAsyMC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5IdG1sUmVuZGVyT3B0aW9uc0gCiAEBEkQKBm91dHB1dBgLIAEoCzIvLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlBkZk91dHB1dE9wdGlvbnNIA4gBAUIOCgxfaGVhZGVyX2h0bWxCDgoMX2Zvb3Rlcl9odG1sQgkKB19yZW5kZXJCCQoHX291dHB1dCKPBwoLT2ZmaWNlVG9QZGYS2gUKCGRvY3VtZW50GAEgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCoQW6SJ0FugGWBQoYdmFsaWRfZG9jdW1lbnRfZXh0ZW5zaW9uEi1kb2N1bWVudCBtdXN0IGhhdmUgYSBzdXBwb3J0ZWQgZmlsZSBleHRlbnNpb24aygR0aGlzLmZpbGVuYW1lLm1hdGNoZXMoJyg/aSlcXC4oMTIzfDYwMnxhYnd8YmlifGJtcHxjZHJ8Y2dtfGNteHxjc3Z8Y3drfGRiZnxkaWZ8ZG9jfGRvY218ZG9jeHxkb3R8ZG90bXxkb3R4fGR4ZnxlbWZ8ZXBzfGVwdWJ8Zm9kZ3xmb2RwfGZvZHN8Zm9kdHxmb3BkfGdpZnxodG18aHRtbHxod3B8anBlZ3xqcGd8a2V5fGx0eHxsd3B8bWN3fG1ldHxtbWx8bXd8bnVtYmVyc3xvZGR8b2RnfG9kbXxvZHB8b2RzfG9kdHxvdGd8b3RofG90cHxvdHN8b3R0fHBhZ2VzfHBibXxwY2R8cGN0fHBjeHxwZGJ8cGRmfHBnbXxwbmd8cG90fHBvdG18cG90eHxwcG18cHBzfHBwdHxwcHRtfHBwdHh8cHNkfHBzd3xwdWJ8cHdwfHB4bHxyYXN8cnRmfHNkYXxzZGN8c2RkfHNkcHxzZHd8c2dsfHNsa3xzbWZ8c3RjfHN0ZHxzdGl8c3R3fHN2Z3xzdm18c3dmfHN4Y3xzeGR8c3hnfHN4aXxzeG18c3h3fHRnYXx0aWZ8dGlmZnx0eHR8dW9mfHVvcHx1b3N8dW90fHZkeHx2b3J8dnNkfHZzZG18dnNkeHx3YjJ8d2sxfHdrc3x3bWZ8d3BkfHdwZ3x3cHN8eGJtfHhodG1sfHhsc3x4bHNifHhsc218eGxzeHx4bHR8eGx0bXx4bHR4fHhsd3x4bWx8eHBtfHphYncpJCcpyAEBEkcKBnJlbmRlchgKIAEoCzIyLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk9mZmljZVJlbmRlck9wdGlvbnNIAIgBARJECgZvdXRwdXQYCyABKAsyLy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5QZGZPdXRwdXRPcHRpb25zSAGIAQFCCQoHX3JlbmRlckIJCgdfb3V0cHV0IqQMChFIdG1sUmVuZGVyT3B0aW9ucxIdChBwcmludF9iYWNrZ3JvdW5kGAEgASgISACIAQESHAoPb21pdF9iYWNrZ3JvdW5kGAIgASgISAGIAQESIQoUcHJlZmVyX2Nzc19wYWdlX3NpemUYAyABKAhIAogBARJSChNlbXVsYXRlZF9tZWRpYV90eXBlGAQgASgOMjAubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRW11bGF0ZWRNZWRpYVR5cGVIA4gBARIkCgtwYXBlcl93aWR0aBgFIAEoAkIKukgHCgUlAAAAAEgEiAEBEiUKDHBhcGVyX2hlaWdodBgGIAEoAkIKukgHCgUlAAAAAEgFiAEBEiMKCm1hcmdpbl90b3AYByABKAJCCrpIBwoFLQAAAABIBogBARIlCgxtYXJnaW5fcmlnaHQYCCABKAJCCrpIBwoFLQAAAABIB4gBARImCg1tYXJnaW5fYm90dG9tGAkgASgCQgq6SAcKBS0AAAAASAiIAQESJAoLbWFyZ2luX2xlZnQYCiABKAJCCrpIBwoFLQAAAABICYgBARIWCglsYW5kc2NhcGUYCyABKAhICogBARIjCgVzY2FsZRgMIAEoAkIPukgMCgodAAAAQC3NzMw9SAuIAQESRwoLcGFnZV9yYW5nZXMYDSABKAlCLbpIKnIoMiZeWzAtOV0rKC1bMC05XSspPygsWzAtOV0rKC1bMC05XSspPykqJEgMiAEBEhgKC3NpbmdsZV9wYWdlGA4gASgISA2IAQESIAoTZ2VuZXJhdGVfdGFnZ2VkX3BkZhgPIAEoCEgOiAEBOqQFukigBRraAQoXbWFyZ2luc19maXRfcGFwZXJfd2lkdGgSMmxlZnQgKyByaWdodCBtYXJnaW5zIG11c3QgYmUgbGVzcyB0aGFuIHBhcGVyIHdpZHRoGooBKCFoYXModGhpcy5wYXBlcl93aWR0aCkgfHwgIWhhcyh0aGlzLm1hcmdpbl9sZWZ0KSB8fCAhaGFzKHRoaXMubWFyZ2luX3JpZ2h0KSkgfHwgKHRoaXMubWFyZ2luX2xlZnQgKyB0aGlzLm1hcmdpbl9yaWdodCA8IHRoaXMucGFwZXJfd2lkdGgpGt4BChhtYXJnaW5zX2ZpdF9wYXBlcl9oZWlnaHQSM3RvcCArIGJvdHRvbSBtYXJnaW5zIG11c3QgYmUgbGVzcyB0aGFuIHBhcGVyIGhlaWdodBqMASghaGFzKHRoaXMucGFwZXJfaGVpZ2h0KSB8fCAhaGFzKHRoaXMubWFyZ2luX3RvcCkgfHwgIWhhcyh0aGlzLm1hcmdpbl9ib3R0b20pKSB8fCAodGhpcy5tYXJnaW5fdG9wICsgdGhpcy5tYXJnaW5fYm90dG9tIDwgdGhpcy5wYXBlcl9oZWlnaHQpGt8BCilvbWl0X2JhY2tncm91bmRfcmVxdWlyZXNfcHJpbnRfYmFja2dyb3VuZBI0b21pdF9iYWNrZ3JvdW5kIHJlcXVpcmVzIHByaW50X2JhY2tncm91bmQgdG8gYmUgdHJ1ZRp8IWhhcyh0aGlzLm9taXRfYmFja2dyb3VuZCkgfHwgdGhpcy5vbWl0X2JhY2tncm91bmQgPT0gZmFsc2UgfHwgKGhhcyh0aGlzLnByaW50X2JhY2tncm91bmQpICYmIHRoaXMucHJpbnRfYmFja2dyb3VuZCA9PSB0cnVlKUITChFfcHJpbnRfYmFja2dyb3VuZEISChBfb21pdF9iYWNrZ3JvdW5kQhcKFV9wcmVmZXJfY3NzX3BhZ2Vfc2l6ZUIWChRfZW11bGF0ZWRfbWVkaWFfdHlwZUIOCgxfcGFwZXJfd2lkdGhCDwoNX3BhcGVyX2hlaWdodEINCgtfbWFyZ2luX3RvcEIPCg1fbWFyZ2luX3JpZ2h0QhAKDl9tYXJnaW5fYm90dG9tQg4KDF9tYXJnaW5fbGVmdEIMCgpfbGFuZHNjYXBlQggKBl9zY2FsZUIOCgxfcGFnZV9yYW5nZXNCDgoMX3NpbmdsZV9wYWdlQhYKFF9nZW5lcmF0ZV90YWdnZWRfcGRmItINChNPZmZpY2VSZW5kZXJPcHRpb25zEh8KCHBhc3N3b3JkGAEgASgJQgi6SAVyAxiAAkgAiAEBEhYKCWxhbmRzY2FwZRgCIAEoCEgBiAEBEkcKC3BhZ2VfcmFuZ2VzGAMgASgJQi26SCpyKDImXlswLTldKygtWzAtOV0rKT8oLFswLTldKygtWzAtOV0rKT8pKiRIAogBARIbCg51cGRhdGVfaW5kZXhlcxgEIAEoCEgDiAEBEh8KEmV4cG9ydF9mb3JtX2ZpZWxkcxgFIAEoCEgEiAEBEigKG2FsbG93X2R1cGxpY2F0ZV9maWVsZF9uYW1lcxgGIAEoCEgFiAEBEh0KEGV4cG9ydF9ib29rbWFya3MYByABKAhIBogBARIwCiNleHBvcnRfYm9va21hcmtzX3RvX3BkZl9kZXN0aW5hdGlvbhgIIAEoCEgHiAEBEiAKE2V4cG9ydF9wbGFjZWhvbGRlcnMYCSABKAhICIgBARIZCgxleHBvcnRfbm90ZXMYCiABKAhICYgBARIfChJleHBvcnRfbm90ZXNfcGFnZXMYCyABKAhICogBARIkChdleHBvcnRfb25seV9ub3Rlc19wYWdlcxgMIAEoCEgLiAEBEiMKFmV4cG9ydF9ub3Rlc19pbl9tYXJnaW4YDSABKAhIDIgBARItCiBjb252ZXJ0X29vb190YXJnZXRfdG9fcGRmX3RhcmdldBgOIAEoCEgNiAEBEicKGmV4cG9ydF9saW5rc19yZWxhdGl2ZV9mc3lzGA8gASgISA6IAQESIQoUZXhwb3J0X2hpZGRlbl9zbGlkZXMYECABKAhID4gBARIdChBza2lwX2VtcHR5X3BhZ2VzGBEgASgISBCIAQESHwoSc2luZ2xlX3BhZ2Vfc2hlZXRzGBIgASgISBGIAQESLAofYWRkX29yaWdpbmFsX2RvY3VtZW50X2FzX3N0cmVhbRgTIAEoCEgSiAEBEicKGmxvc3NsZXNzX2ltYWdlX2NvbXByZXNzaW9uGBQgASgISBOIAQESHwoHcXVhbGl0eRgVIAEoBUIJukgGGgQYZCgBSBSIAQESJAoXcmVkdWNlX2ltYWdlX3Jlc29sdXRpb24YFiABKAhIFYgBARI2ChRtYXhfaW1hZ2VfcmVzb2x1dGlvbhgXIAEoBUITukgQGg4wSzCWATCsAjDYBDCwCUgWiAEBOo8CukiLAhqIAgozZXhwb3J0X29ubHlfbm90ZXNfcGFnZXNfcmVxdWlyZXNfZXhwb3J0X25vdGVzX3BhZ2VzEj5leHBvcnRfb25seV9ub3Rlc19wYWdlcyByZXF1aXJlcyBleHBvcnRfbm90ZXNfcGFnZXMgdG8gYmUgdHJ1ZRqQASFoYXModGhpcy5leHBvcnRfb25seV9ub3Rlc19wYWdlcykgfHwgdGhpcy5leHBvcnRfb25seV9ub3Rlc19wYWdlcyA9PSBmYWxzZSB8fCAoaGFzKHRoaXMuZXhwb3J0X25vdGVzX3BhZ2VzKSAmJiB0aGlzLmV4cG9ydF9ub3Rlc19wYWdlcyA9PSB0cnVlKUILCglfcGFzc3dvcmRCDAoKX2xhbmRzY2FwZUIOCgxfcGFnZV9yYW5nZXNCEQoPX3VwZGF0ZV9pbmRleGVzQhUKE19leHBvcnRfZm9ybV9maWVsZHNCHgocX2FsbG93X2R1cGxpY2F0ZV9maWVsZF9uYW1lc0ITChFfZXhwb3J0X2Jvb2ttYXJrc0ImCiRfZXhwb3J0X2Jvb2ttYXJrc190b19wZGZfZGVzdGluYXRpb25CFgoUX2V4cG9ydF9wbGFjZWhvbGRlcnNCDwoNX2V4cG9ydF9ub3Rlc0IVChNfZXhwb3J0X25vdGVzX3BhZ2VzQhoKGF9leHBvcnRfb25seV9ub3Rlc19wYWdlc0IZChdfZXhwb3J0X25vdGVzX2luX21hcmdpbkIjCiFfY29udmVydF9vb29fdGFyZ2V0X3RvX3BkZl90YXJnZXRCHQobX2V4cG9ydF9saW5rc19yZWxhdGl2ZV9mc3lzQhcKFV9leHBvcnRfaGlkZGVuX3NsaWRlc0ITChFfc2tpcF9lbXB0eV9wYWdlc0IVChNfc2luZ2xlX3BhZ2Vfc2hlZXRzQiIKIF9hZGRfb3JpZ2luYWxfZG9jdW1lbnRfYXNfc3RyZWFtQh0KG19sb3NzbGVzc19pbWFnZV9jb21wcmVzc2lvbkIKCghfcXVhbGl0eUIaChhfcmVkdWNlX2ltYWdlX3Jlc29sdXRpb25CFwoVX21heF9pbWFnZV9yZXNvbHV0aW9uIosCChBQZGZPdXRwdXRPcHRpb25zEjwKBHBkZmEYASABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5QZGZBRm9ybWF0SACIAQESEgoFcGRmdWEYAiABKAhIAYgBARIUCgdmbGF0dGVuGAMgASgISAKIAQESJAoNdXNlcl9wYXNzd29yZBgEIAEoCUIIukgFcgMYgAFIA4gBARIlCg5vd25lcl9wYXNzd29yZBgFIAEoCUIIukgFcgMYgAFIBIgBAUIHCgVfcGRmYUIICgZfcGRmdWFCCgoIX2ZsYXR0ZW5CEAoOX3VzZXJfcGFzc3dvcmRCEQoPX293bmVyX3Bhc3N3b3JkIrAJCg5JbWFnZU9wZXJhdGlvbhI8CgZyZXNpemUYASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVJlc2l6ZUgAEjgKBGNyb3AYAiABKAsyKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZUNyb3BIABI8CgZyb3RhdGUYAyABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVJvdGF0ZUgAEjgKBGZsaXAYBCABKAsyKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZUZsaXBIABI2CgNwYWQYBSABKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVBhZEgAEjgKBHRyaW0YBiABKAsyKC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVRyaW1IABJECgpwcm9wb3J0aW9uGAcgASgLMi4ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VQcm9wb3J0aW9uSAASOgoFZm9jYWwYCCABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZUZvY2FsSAASPAoGYWRqdXN0GAkgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VBZGp1c3RIABI2CgNodWUYCiABKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZUh1ZUgAEjYKA3JnYhgLIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkltYWdlUmdiSAASOAoEYmx1chgMIAEoCzIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkltYWdlQmx1ckgAEj4KB3NoYXJwZW4YDSABKAsyKy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVNoYXJwZW5IABJHCgxyb3VuZF9jb3JuZXIYDiABKAsyLy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZVJvdW5kQ29ybmVySAASQgoJd2F0ZXJtYXJrGA8gASgLMi0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VXYXRlcm1hcmtIABI6CgVsYWJlbBgQIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkltYWdlTGFiZWxIABJDCgptYXhfZnJhbWVzGBEgASgLMi0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VNYXhGcmFtZXNIABI4CgRwYWdlGBIgASgLMigubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VQYWdlSAASNgoDZHBpGBMgASgLMicubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VEcGlIAEISCglvcGVyYXRpb24SBbpIAggBIu0BChVUcmFuc2Zvcm1JbWFnZVJlcXVlc3QSOwoFaW5wdXQYASABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YUIGukgDyAEBEksKCm9wZXJhdGlvbnMYAiADKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZU9wZXJhdGlvbkIIukgFkgECEDISPwoGb3V0cHV0GB4gASgLMioubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSW1hZ2VPdXRwdXRIAIgBAUIJCgdfb3V0cHV0Ik4KFlRyYW5zZm9ybUltYWdlUmVzcG9uc2USNAoGb3V0cHV0GAEgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGEinQMKC0ltYWdlUmVzaXplEh4KBXdpZHRoGAEgASgFQgq6SAcaBRiIJygASACIAQESHwoGaGVpZ2h0GAIgASgFQgq6SAcaBRiIJygASAGIAQESPAoEdHlwZRgDIAEoDjIpLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlJlc2l6ZVR5cGVIAogBARIUCgdlbmxhcmdlGAQgASgISAOIAQESEwoGZXh0ZW5kGAUgASgISASIAQE6rgG6SKoBGqcBChFyZXF1aXJlX2RpbWVuc2lvbhJEYXQgbGVhc3Qgb25lIG9mIHdpZHRoIG9yIGhlaWdodCBtdXN0IGJlIHNwZWNpZmllZCBhbmQgZ3JlYXRlciB0aGFuIDAaTChoYXModGhpcy53aWR0aCkgJiYgdGhpcy53aWR0aCA+IDApIHx8IChoYXModGhpcy5oZWlnaHQpICYmIHRoaXMuaGVpZ2h0ID4gMClCCAoGX3dpZHRoQgkKB19oZWlnaHRCBwoFX3R5cGVCCgoIX2VubGFyZ2VCCQoHX2V4dGVuZCKdAgoJSW1hZ2VDcm9wEh4KBXdpZHRoGAEgASgFQgq6SAcaBRiIJygASACIAQESHwoGaGVpZ2h0GAIgASgFQgq6SAcaBRiIJygASAGIAQESPAoHZ3Jhdml0eRgDIAEoDjImLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdyYXZpdHlIAogBARIqCghvZmZzZXRfeBgEIAEoBUITukgQGg4YkE4o8LH/////////AUgDiAEBEioKCG9mZnNldF95GAUgASgFQhO6SBAaDhiQTijwsf////////8BSASIAQFCCAoGX3dpZHRoQgkKB19oZWlnaHRCCgoIX2dyYXZpdHlCCwoJX29mZnNldF94QgsKCV9vZmZzZXRfeSJmCgtJbWFnZVJvdGF0ZRIjCgVhbmdsZRgBIAEoBUIPukgMGgowADBaMLQBMI4CSACIAQESGAoLYXV0b19yb3RhdGUYAiABKAhIAYgBAUIICgZfYW5nbGVCDgoMX2F1dG9fcm90YXRlIpICCglJbWFnZUZsaXASFwoKaG9yaXpvbnRhbBgBIAEoCEgAiAEBEhUKCHZlcnRpY2FsGAIgASgISAGIAQE6uAG6SLQBGrEBChZyZXF1aXJlX2ZsaXBfZGlyZWN0aW9uEjNhdCBsZWFzdCBvbmUgb2YgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBtdXN0IGJlIHRydWUaYihoYXModGhpcy5ob3Jpem9udGFsKSAmJiB0aGlzLmhvcml6b250YWwgPT0gdHJ1ZSkgfHwgKGhhcyh0aGlzLnZlcnRpY2FsKSAmJiB0aGlzLnZlcnRpY2FsID09IHRydWUpQg0KC19ob3Jpem9udGFsQgsKCV92ZXJ0aWNhbCKVAwoISW1hZ2VQYWQSGQoDdG9wGAEgASgFQge6SAQaAigASACIAQESGwoFcmlnaHQYAiABKAVCB7pIBBoCKABIAYgBARIcCgZib3R0b20YAyABKAVCB7pIBBoCKABIAogBARIaCgRsZWZ0GAQgASgFQge6SAQaAigASAOIAQE68AG6SOwBGukBCg9yZXF1aXJlX3BhZGRpbmcSP2F0IGxlYXN0IG9uZSBwYWRkaW5nIHZhbHVlIG11c3QgYmUgc3BlY2lmaWVkIGFuZCBncmVhdGVyIHRoYW4gMBqUAShoYXModGhpcy50b3ApICYmIHRoaXMudG9wID4gMCkgfHwgKGhhcyh0aGlzLnJpZ2h0KSAmJiB0aGlzLnJpZ2h0ID4gMCkgfHwgKGhhcyh0aGlzLmJvdHRvbSkgJiYgdGhpcy5ib3R0b20gPiAwKSB8fCAoaGFzKHRoaXMubGVmdCkgJiYgdGhpcy5sZWZ0ID4gMClCBgoEX3RvcEIICgZfcmlnaHRCCQoHX2JvdHRvbUIHCgVfbGVmdCLFAQoJSW1hZ2VUcmltEicKCXRocmVzaG9sZBgBIAEoAkIPukgMCgodAACAPy0AAAAASACIAQESKwoFY29sb3IYAiABKAlCF7pIFHISMhBeWzAtOWEtZkEtRl17Nn0kSAGIAQESFgoJZXF1YWxfaG9yGAMgASgISAKIAQESFgoJZXF1YWxfdmVyGAQgASgISAOIAQFCDAoKX3RocmVzaG9sZEIICgZfY29sb3JCDAoKX2VxdWFsX2hvckIMCgpfZXF1YWxfdmVyIs8DCgtJbWFnZUFkanVzdBIsCgpicmlnaHRuZXNzGAEgASgFQhO6SBAaDhj/ASiB/v////////8BSACIAQESJgoIY29udHJhc3QYAiABKAJCD7pIDAoKHQAAIEEtAAAAAEgBiAEBEigKCnNhdHVyYXRpb24YAyABKAJCD7pIDAoKHQAAIEEtAAAAAEgCiAEBEhYKCWdyYXlzY2FsZRgEIAEoCEgDiAEBOu4BukjqARrnAQoScmVxdWlyZV9hZGp1c3RtZW50ElphdCBsZWFzdCBvbmUgYWRqdXN0bWVudCAoYnJpZ2h0bmVzcywgY29udHJhc3QsIHNhdHVyYXRpb24sIG9yIGdyYXlzY2FsZSkgbXVzdCBiZSBzcGVjaWZpZWQadWhhcyh0aGlzLmJyaWdodG5lc3MpIHx8IGhhcyh0aGlzLmNvbnRyYXN0KSB8fCBoYXModGhpcy5zYXR1cmF0aW9uKSB8fCAoaGFzKHRoaXMuZ3JheXNjYWxlKSAmJiB0aGlzLmdyYXlzY2FsZSA9PSB0cnVlKUINCgtfYnJpZ2h0bmVzc0ILCglfY29udHJhc3RCDQoLX3NhdHVyYXRpb25CDAoKX2dyYXlzY2FsZSIrCglJbWFnZUJsdXISHgoFc2lnbWEYASABKAJCD7pIDAoKHQAAyEIlAAAAACIuCgxJbWFnZVNoYXJwZW4SHgoFc2lnbWEYASABKAJCD7pIDAoKHQAAyEIlAAAAACIuCghJbWFnZUh1ZRIiCgVhbmdsZRgBIAEoBUITukgQGg4YtAEozP7/////////ASJnCghJbWFnZVJnYhIdCgFyGAEgASgFQhK6SA8aDRhkKJz//////////wESHQoBZxgCIAEoBUISukgPGg0YZCic//////////8BEh0KAWIYAyABKAVCErpIDxoNGGQonP//////////ASKbAQoKSW1hZ2VGb2NhbBI8CgZyZWdpb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Gb2NhbFJlZ2lvbkgAEjoKBXBvaW50GAIgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRm9jYWxQb2ludEgAQhMKCmZvY2FsX3R5cGUSBbpIAggBIkcKC0ZvY2FsUmVnaW9uEgwKBGxlZnQYASABKAUSCwoDdG9wGAIgASgFEg0KBXJpZ2h0GAMgASgFEg4KBmJvdHRvbRgEIAEoBSIiCgpGb2NhbFBvaW50EgkKAXgYASABKAUSCQoBeRgCIAEoBSJ/ChBJbWFnZVJvdW5kQ29ybmVyEhMKAnJ4GAEgASgFQge6SAQaAiAAEhgKAnJ5GAIgASgFQge6SAQaAiAASACIAQESKwoFY29sb3IYAyABKAlCF7pIFHISMhBeWzAtOWEtZkEtRl17Nn0kSAGIAQFCBQoDX3J5QggKBl9jb2xvciIxCg9JbWFnZVByb3BvcnRpb24SHgoKcGVyY2VudGFnZRgBIAEoBUIKukgHGgUY9AMoASLJAQoKSW1hZ2VMYWJlbBIYCgR0ZXh0GAEgASgJQgq6SAdyBRABGOgHEgkKAXgYAiABKAUSCQoBeRgDIAEoBRIYCgRzaXplGAQgASgFQgq6SAcaBRjoBygBEiYKBWNvbG9yGAUgASgJQhe6SBRyEjIQXlswLTlhLWZBLUZdezZ9JBIjCgVhbHBoYRgGIAEoAkIPukgMCgodAACAPy0AAAAASACIAQESEQoEZm9udBgHIAEoCUgBiAEBQggKBl9hbHBoYUIHCgVfZm9udCInCg5JbWFnZU1heEZyYW1lcxIVCgFuGAEgASgFQgq6SAcaBRjoBygBIiEKCUltYWdlUGFnZRIUCgNudW0YASABKAVCB7pIBBoCKAEiIwoISW1hZ2VEcGkSFwoDbnVtGAEgASgFQgq6SAcaBRjgEigBIugCCg5JbWFnZVdhdGVybWFyaxI7CgVpbWFnZRgBIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhQga6SAPIAQESPQoIcG9zaXRpb24YAiABKA4yJi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5HcmF2aXR5SACIAQESKgoIb2Zmc2V0X3gYAyABKAVCE7pIEBoOGJBOKPCx/////////wFIAYgBARIqCghvZmZzZXRfeRgEIAEoBUITukgQGg4YkE4o8LH/////////AUgCiAEBEiUKB29wYWNpdHkYBSABKAJCD7pIDAoKHQAAgD8tAAAAAEgDiAEBEh4KBXNjYWxlGAYgASgCQgq6SAcKBSUAAAAASASIAQFCCwoJX3Bvc2l0aW9uQgsKCV9vZmZzZXRfeEILCglfb2Zmc2V0X3lCCgoIX29wYWNpdHlCCAoGX3NjYWxlIroECgtJbWFnZU91dHB1dBI/CgZmb3JtYXQYASABKA4yKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5JbWFnZUZvcm1hdEgAiAEBEh8KB3F1YWxpdHkYAiABKAVCCbpIBhoEGGQoAUgBiAEBEhsKDnN0cmlwX21ldGFkYXRhGAMgASgISAKIAQESMAoKYmFja2dyb3VuZBgEIAEoCUIXukgUchIyEF5bMC05YS1mQS1GXXs2fSRIA4gBARIuChBiYWNrZ3JvdW5kX2FscGhhGAUgASgCQg+6SAwKCh0AAIA/LQAAAABIBIgBARInCg9wbmdfY29tcHJlc3Npb24YBiABKAVCCbpIBhoEGAkoAEgFiAEBEhsKDnBuZ19pbnRlcmxhY2VkGAcgASgISAaIAQESHQoQanBlZ19wcm9ncmVzc2l2ZRgIIAEoCEgHiAEBEhoKDXdlYnBfbG9zc2xlc3MYCSABKAhICIgBARIfCgltYXhfYnl0ZXMYCiABKAVCB7pIBBoCIABICYgBAUIJCgdfZm9ybWF0QgoKCF9xdWFsaXR5QhEKD19zdHJpcF9tZXRhZGF0YUINCgtfYmFja2dyb3VuZEITChFfYmFja2dyb3VuZF9hbHBoYUISChBfcG5nX2NvbXByZXNzaW9uQhEKD19wbmdfaW50ZXJsYWNlZEITChFfanBlZ19wcm9ncmVzc2l2ZUIQCg5fd2VicF9sb3NzbGVzc0IMCgpfbWF4X2J5dGVzItgCChRNYW5pcHVsYXRlUGRmUmVxdWVzdBI4CgVtZXJnZRgBIAEoCzInLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlBkZk1lcmdlSAASOAoFc3BsaXQYAiABKAsyJy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5QZGZTcGxpdEgAEjwKB2VuY3J5cHQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5QZGZFbmNyeXB0SAASPAoHY29udmVydBgEIAEoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlBkZkNvbnZlcnRIABI8CgdmbGF0dGVuGAUgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUGRmRmxhdHRlbkgAQhIKCW9wZXJhdGlvbhIFukgCCAEiTgoVTWFuaXB1bGF0ZVBkZlJlc3BvbnNlEjUKB291dHB1dHMYASADKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YSLEAgoIUGRmTWVyZ2USPwoFZmlsZXMYASADKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YUIKukgHkgEECAIQZBI8CgRwZGZhGAIgASgOMikubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUGRmQUZvcm1hdEgAiAEBEhIKBXBkZnVhGAMgASgISAGIAQESFAoHZmxhdHRlbhgEIAEoCEgCiAEBEiQKDXVzZXJfcGFzc3dvcmQYBSABKAlCCLpIBXIDGIABSAOIAQESJQoOb3duZXJfcGFzc3dvcmQYBiABKAlCCLpIBXIDGIABSASIAQFCBwoFX3BkZmFCCAoGX3BkZnVhQgoKCF9mbGF0dGVuQhAKDl91c2VyX3Bhc3N3b3JkQhEKD19vd25lcl9wYXNzd29yZCK5AwoIUGRmU3BsaXQSOgoEZmlsZRgBIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhQga6SAPIAQESQAoEbW9kZRgCIAEoDjIoLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlNwbGl0TW9kZUIIukgFggECIAASGAoEc3BhbhgDIAEoCUIKukgHcgUQARjoBxISCgV1bmlmeRgEIAEoCEgAiAEBEjwKBHBkZmEYBSABKA4yKS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5QZGZBRm9ybWF0SAGIAQESEgoFcGRmdWEYBiABKAhIAogBARIUCgdmbGF0dGVuGAcgASgISAOIAQESJAoNdXNlcl9wYXNzd29yZBgIIAEoCUIIukgFcgMYgAFIBIgBARIlCg5vd25lcl9wYXNzd29yZBgJIAEoCUIIukgFcgMYgAFIBYgBAUIICgZfdW5pZnlCBwoFX3BkZmFCCAoGX3BkZnVhQgoKCF9mbGF0dGVuQhAKDl91c2VyX3Bhc3N3b3JkQhEKD19vd25lcl9wYXNzd29yZCKlAQoKUGRmRW5jcnlwdBI6CgRmaWxlGAEgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCBrpIA8gBARIhCg11c2VyX3Bhc3N3b3JkGAIgASgJQgq6SAdyBRABGIABEiUKDm93bmVyX3Bhc3N3b3JkGAMgASgJQgi6SAVyAxiAAUgAiAEBQhEKD19vd25lcl9wYXNzd29yZCLOAgoKUGRmQ29udmVydBI6CgRmaWxlGAEgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCBrpIA8gBARI8CgRwZGZhGAIgASgOMikubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuUGRmQUZvcm1hdEgAiAEBEhIKBXBkZnVhGAMgASgISAGIAQE6ngG6SJoBGpcBChlyZXF1aXJlX2NvbnZlcnNpb25fb3B0aW9uEi9hdCBsZWFzdCBvbmUgb2YgcGRmYSBvciBwZGZ1YSBtdXN0IGJlIHNwZWNpZmllZBpJaGFzKHRoaXMucGRmYSkgJiYgdGhpcy5wZGZhICE9IDAgfHwgaGFzKHRoaXMucGRmdWEpICYmIHRoaXMucGRmdWEgPT0gdHJ1ZUIHCgVfcGRmYUIICgZfcGRmdWEiSAoKUGRmRmxhdHRlbhI6CgRmaWxlGAEgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGFCBrpIA8gBASp3ChFFbXVsYXRlZE1lZGlhVHlwZRIjCh9FTVVMQVRFRF9NRURJQV9UWVBFX1VOU1BFQ0lGSUVEEAASHgoaRU1VTEFURURfTUVESUFfVFlQRV9TQ1JFRU4QARIdChlFTVVMQVRFRF9NRURJQV9UWVBFX1BSSU5UEAIqaQoKUGRmQUZvcm1hdBIcChhQREZfQV9GT1JNQVRfVU5TUEVDSUZJRUQQABITCg9QREZfQV9GT1JNQVRfMUIQARITCg9QREZfQV9GT1JNQVRfMkIQAhITCg9QREZfQV9GT1JNQVRfM0IQAyqcAQoKUmVzaXplVHlwZRIbChdSRVNJWkVfVFlQRV9VTlNQRUNJRklFRBAAEhMKD1JFU0laRV9UWVBFX0ZJVBABEhQKEFJFU0laRV9UWVBFX0ZJTEwQAhIZChVSRVNJWkVfVFlQRV9GSUxMX0RPV04QAxIVChFSRVNJWkVfVFlQRV9GT1JDRRAEEhQKEFJFU0laRV9UWVBFX0FVVE8QBSrzAQoHR3Jhdml0eRIXChNHUkFWSVRZX1VOU1BFQ0lGSUVEEAASEgoOR1JBVklUWV9DRU5URVIQARIRCg1HUkFWSVRZX05PUlRIEAISEQoNR1JBVklUWV9TT1VUSBADEhAKDEdSQVZJVFlfRUFTVBAEEhAKDEdSQVZJVFlfV0VTVBAFEhYKEkdSQVZJVFlfTk9SVEhfRUFTVBAGEhYKEkdSQVZJVFlfTk9SVEhfV0VTVBAHEhYKEkdSQVZJVFlfU09VVEhfRUFTVBAIEhYKEkdSQVZJVFlfU09VVEhfV0VTVBAJEhEKDUdSQVZJVFlfU01BUlQQCirfAQoLSW1hZ2VGb3JtYXQSHAoYSU1BR0VfRk9STUFUX1VOU1BFQ0lGSUVEEAASFQoRSU1BR0VfRk9STUFUX0pQRUcQARIUChBJTUFHRV9GT1JNQVRfUE5HEAISFQoRSU1BR0VfRk9STUFUX1dFQlAQAxIVChFJTUFHRV9GT1JNQVRfQVZJRhAEEhQKEElNQUdFX0ZPUk1BVF9HSUYQBRIVChFJTUFHRV9GT1JNQVRfVElGRhAGEhQKEElNQUdFX0ZPUk1BVF9CTVAQBxIUChBJTUFHRV9GT1JNQVRfSUNPEAgqVwoJU3BsaXRNb2RlEhoKFlNQTElUX01PREVfVU5TUEVDSUZJRUQQABIYChRTUExJVF9NT0RFX0lOVEVSVkFMUxABEhQKEFNQTElUX01PREVfUEFHRVMQAjKMAwoQRmlsZUZvcmdlU2VydmljZRJ9Cg5SZW5kZXJEb2N1bWVudBI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlJlbmRlckRvY3VtZW50UmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlJlbmRlckRvY3VtZW50UmVzcG9uc2USfQoOVHJhbnNmb3JtSW1hZ2USNC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5UcmFuc2Zvcm1JbWFnZVJlcXVlc3QaNS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5UcmFuc2Zvcm1JbWFnZVJlc3BvbnNlEnoKDU1hbmlwdWxhdGVQZGYSMy5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5NYW5pcHVsYXRlUGRmUmVxdWVzdBo0Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLk1hbmlwdWxhdGVQZGZSZXNwb25zZWIGcHJvdG8z",[l,R]);var ze=Z(h,2),Ke=Z(h,3),Ne=Z(h,4),ce=Z(h,5),Qe=Z(h,6),T=Z(h,7),Le=Z(h,8),ke=Z(h,9);var we=Z(h,32);var Ue=Z(h,35),De=Z(h,36),Te=Z(h,37),Pe=Z(h,38),je=Z(h,39);var Oe=st(h,0);import{fileDesc as ot,messageDesc as Ro,serviceDesc as at}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_struct as it,file_google_protobuf_timestamp as gt}from"@bufbuild/protobuf/wkt";var ct=ot("CjJtb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9wbHVnaW5fc2VydmljZS5wcm90bxIdbW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEiGgoYR2V0U3lzdGVtU2VydmljZXNSZXF1ZXN0IsUBChlHZXRTeXN0ZW1TZXJ2aWNlc1Jlc3BvbnNlEm0KE2NvbmZpZ3VyZWRfc2VydmljZXMYASADKAsyUC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5HZXRTeXN0ZW1TZXJ2aWNlc1Jlc3BvbnNlLkNvbmZpZ3VyZWRTZXJ2aWNlc0VudHJ5GjkKF0NvbmZpZ3VyZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEiMgoQQXV0aG9yaXplUmVxdWVzdBIeCgxhY2Nlc3NfdG9rZW4YASABKAlCCLpIBXIDGJBOIhMKEUF1dGhvcml6ZVJlc3BvbnNlIoABCh5CYXRjaEdldFN5c3RlbVZhcmlhYmxlc1JlcXVlc3QSXgoFbmFtZXMYASADKAlCT7pITJIBSQgBEGQYASJBcj8QARhkMjleW18kYS16QS1aXVtfJGEtekEtWjAtOV0qKD86XC5bXyRhLXpBLVpdW18kYS16QS1aMC05XSopKiQiwQEKH0JhdGNoR2V0U3lzdGVtVmFyaWFibGVzUmVzcG9uc2USWAoFaXRlbXMYASADKAsySS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5CYXRjaEdldFN5c3RlbVZhcmlhYmxlc1Jlc3BvbnNlLkl0ZW1zRW50cnkaRAoKSXRlbXNFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWU6AjgBIn4KHEJhdGNoR2V0VXNlclZhcmlhYmxlc1JlcXVlc3QSXgoFbmFtZXMYASADKAlCT7pITJIBSQgBEGQYASJBcj8QARhkMjleW18kYS16QS1aXVtfJGEtekEtWjAtOV0qKD86XC5bXyRhLXpBLVpdW18kYS16QS1aMC05XSopKiQivQEKHUJhdGNoR2V0VXNlclZhcmlhYmxlc1Jlc3BvbnNlElYKBWl0ZW1zGAEgAygLMkcubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRVc2VyVmFyaWFibGVzUmVzcG9uc2UuSXRlbXNFbnRyeRpECgpJdGVtc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEiewoZQmF0Y2hHZXRVc2VyVG9rZW5zUmVxdWVzdBJeCgVuYW1lcxgBIAMoCUJPukhMkgFJCAEQZBgBIkFyPxABGGQyOV5bXyRhLXpBLVpdW18kYS16QS1aMC05XSooPzpcLltfJGEtekEtWl1bXyRhLXpBLVowLTldKikqJCLFAQoaQmF0Y2hHZXRVc2VyVG9rZW5zUmVzcG9uc2USUwoFaXRlbXMYASADKAsyRC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5CYXRjaEdldFVzZXJUb2tlbnNSZXNwb25zZS5JdGVtc0VudHJ5GlIKCkl0ZW1zRW50cnkSCwoDa2V5GAEgASgJEjMKBXZhbHVlGAIgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuVG9rZW46AjgBIn0KG0JhdGNoR2V0U3lzdGVtVG9rZW5zUmVxdWVzdBJeCgVuYW1lcxgBIAMoCUJPukhMkgFJCAEQZBgBIkFyPxABGGQyOV5bXyRhLXpBLVpdW18kYS16QS1aMC05XSooPzpcLltfJGEtekEtWl1bXyRhLXpBLVowLTldKikqJCLJAQocQmF0Y2hHZXRTeXN0ZW1Ub2tlbnNSZXNwb25zZRJVCgVpdGVtcxgBIAMoCzJGLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkJhdGNoR2V0U3lzdGVtVG9rZW5zUmVzcG9uc2UuSXRlbXNFbnRyeRpSCgpJdGVtc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLlRva2VuOgI4ASJfCgVUb2tlbhIMCgRuYW1lGAEgASgJEg0KBXRva2VuGAIgASgJEgwKBHR5cGUYAyABKAkSKwoHZXhwaXJlcxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAy1gYKDVBsdWdpblNlcnZpY2USbgoJQXV0aG9yaXplEi8ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQXV0aG9yaXplUmVxdWVzdBowLm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkF1dGhvcml6ZVJlc3BvbnNlEoYBChFHZXRTeXN0ZW1TZXJ2aWNlcxI3Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldFN5c3RlbVNlcnZpY2VzUmVxdWVzdBo4Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkdldFN5c3RlbVNlcnZpY2VzUmVzcG9uc2USmAEKF0JhdGNoR2V0U3lzdGVtVmFyaWFibGVzEj0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRTeXN0ZW1WYXJpYWJsZXNSZXF1ZXN0Gj4ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRTeXN0ZW1WYXJpYWJsZXNSZXNwb25zZRKSAQoVQmF0Y2hHZXRVc2VyVmFyaWFibGVzEjsubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRVc2VyVmFyaWFibGVzUmVxdWVzdBo8Lm1vY2hhYnVnYXBpcy5hZGFwdC5ydW50aW1lLnYxLkJhdGNoR2V0VXNlclZhcmlhYmxlc1Jlc3BvbnNlEokBChJCYXRjaEdldFVzZXJUb2tlbnMSOC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5CYXRjaEdldFVzZXJUb2tlbnNSZXF1ZXN0GjkubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRVc2VyVG9rZW5zUmVzcG9uc2USjwEKFEJhdGNoR2V0U3lzdGVtVG9rZW5zEjoubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRTeXN0ZW1Ub2tlbnNSZXF1ZXN0GjsubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuQmF0Y2hHZXRTeXN0ZW1Ub2tlbnNSZXNwb25zZWIGcHJvdG8z",[l,it,gt]);var _e=at(ct,0);import{Code as I,ConnectError as A,createContextValues as qe}from"@connectrpc/connect";import{compressedFlag as $e,createClientMethodSerializers as en,createEnvelopeReadableStream as le,createMethodUrl as nn,encodeEnvelope as tn,runStreamingCall as lt,runUnaryCall as dt}from"@connectrpc/connect/protocol";import{headerGrpcStatus as sn,requestHeader as on,trailerFlag as de,trailerParse as an,validateResponse as gn,validateTrailer as cn}from"@connectrpc/connect/protocol-grpc-web";function f(d){return{async unary(e,n,t,s,o,a){let{serialize:i,parse:u}=en(e,!0);return dt({interceptors:d.interceptors,signal:n,timeoutMs:t,req:{stream:!1,service:e.parent,method:e,requestMethod:"POST",url:nn("https://runtimeapi/",e),header:on(!0,t,s,!1),contextValues:a??qe(),message:o},next:async r=>{let g=await d.fetcher.fetch(r.url,{method:r.requestMethod,headers:r.header,signal:r.signal,body:tn(0,i(r.message))}),{headerError:G}=gn(g.status,g.headers);if(!g.body)throw G!==void 0?G:new A("missing response body",I.Internal);let V=le(g.body).getReader(),p,y;for(;;){let W=await V.read();if(W.done)break;let{flags:Y,data:B}=W.value;if((Y&$e)===$e)throw new A("received compressed data, which is unsupported",I.Internal);if(Y===de){if(p!==void 0)throw new A("extra trailer",I.Internal);p=an(B);continue}if(y!==void 0)throw new A("extra message",I.Unimplemented);y=u(B)}if(p===void 0)throw G!==void 0?G:new A("missing trailer",g.headers.has(sn)?I.Unimplemented:I.Unknown);if(cn(p,g.headers),y===void 0)throw new A("missing message",p.has(sn)?I.Unimplemented:I.Unknown);return{stream:!1,service:e.parent,method:e,header:g.headers,message:y,trailer:p}}})},async stream(e,n,t,s,o,a){let{serialize:i,parse:u}=en(e,!0);async function r(G){let{value:V,done:p}=await G[Symbol.asyncIterator]().next();if(p)throw new A("missing request message",I.InvalidArgument);return tn(0,i(V))}async function*g(G,V,p,y,W){if(V){if(!(await le(G).getReader().read()).done)throw new A("extra data for trailers-only",I.Internal);return}let Y=le(G).getReader(),B=!1;for(;;){let se=await Y.read();if(se.done)break;let{flags:Gn,data:ye}=se.value;if((Gn&de)===de){if(B)throw new A("extra trailer",I.Internal);B=!0;let Ae=an(ye);cn(Ae,y),Ae.forEach((bn,hn)=>p.set(hn,bn));continue}if(B)throw new A("extra message after trailer",I.Internal);yield u(ye)}if("throwIfAborted"in W&&W.throwIfAborted?.(),!B)throw new A("missing trailer",I.Internal)}return lt({interceptors:d.interceptors,signal:n,timeoutMs:t,req:{stream:!0,service:e.parent,method:e,requestMethod:"POST",url:nn("https://runtimeapi/",e),header:on(!0,t,s,!1),contextValues:a??qe(),message:o},next:async G=>{let V=await r(G.message),p=await d.fetcher.fetch(G.url,{method:G.requestMethod,headers:G.header,signal:G.signal,body:V}),{foundStatus:y,headerError:W}=gn(p.status,p.headers);if(W)throw W;if(!p.body)throw new A("missing response body",I.Internal);let Y=new Headers;return{...G,header:p.headers,trailer:Y,message:g(p.body,y,Y,p.headers,G.signal)}}})}}}import{fileDesc as rt,messageDesc as P}from"@bufbuild/protobuf/codegenv2";var j=rt("Cixtb2NoYWJ1Z2FwaXMvYWRhcHQvcnVudGltZS92MS9pbmNvbWluZy5wcm90bxIdbW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEiOgoOSG9zdGluZ0RldGFpbHMSGAoLcHVibGljX2hvc3QYASABKAlIAIgBAUIOCgxfcHVibGljX2hvc3QiZgoVU3RhcnRFeGVjdXRpb25SZXF1ZXN0EhAKCHJlY2VpdmVyGAEgASgJEjsKBGhvc3QYAiABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Ib3N0aW5nRGV0YWlscyIYChZTdGFydEV4ZWN1dGlvblJlc3BvbnNlIlMKFFN0b3BFeGVjdXRpb25SZXF1ZXN0EjsKBGhvc3QYASABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Ib3N0aW5nRGV0YWlscyIXChVTdG9wRXhlY3V0aW9uUmVzcG9uc2UiUQoSQ3JvblRyaWdnZXJSZXF1ZXN0EjsKBGhvc3QYASABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5Ib3N0aW5nRGV0YWlscyIVChNDcm9uVHJpZ2dlclJlc3BvbnNlIsgBCg5FeGNoYW5nZVJlc3VsdBITCgt0cmFuc21pdHRlchgBIAEoCRJLCgdzaWduYWxzGAIgAygLMjoubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuRXhjaGFuZ2VSZXN1bHQuU2lnbmFsc0VudHJ5GlQKDFNpZ25hbHNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAEi2AEKFUV4Y2hhbmdlUmVzdWx0UmVxdWVzdBJDCglvcGVyYXRpb24YASABKAsyMC5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGNoYW5nZU9wZXJhdGlvbhI9CgZyZXN1bHQYAiABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucnVudGltZS52MS5FeGNoYW5nZVJlc3VsdBI7CgRob3N0GAMgASgLMi0ubW9jaGFidWdhcGlzLmFkYXB0LnJ1bnRpbWUudjEuSG9zdGluZ0RldGFpbHMiGAoWRXhjaGFuZ2VSZXN1bHRSZXNwb25zZWIGcHJvdG8z",[R,ie]);var re=P(j,1);var me=P(j,3);var ue=P(j,5);var pe=P(j,8);var ut={config:"config",metadata:"metadata",configuredServices:"configured_services"};function _(d){return ut[d]??d}var q=class{env;pluginService;pluginToken;fileforge;constructor(e,n){this.env=e,this.pluginToken=n,this.pluginService=K(_e,f({fetcher:this.env.plugin,interceptors:[t=>async s=>(s.header.set("Authorization",`Bearer ${this.pluginToken}`),await t(s))]})),this.fileforge=K(Oe,f({fetcher:this.env.fileforge,interceptors:[t=>async s=>(s.header.set("Authorization",`Bearer ${this.pluginToken}`),await t(s))]}))}async getSystemVariable(e){let t=(await this.pluginService.batchGetSystemVariables({names:[e]})).items[e];return t?X(O,t):void 0}async getSystemVariables(...e){let n=await this.pluginService.batchGetSystemVariables({names:e}),t={};for(let[s,o]of Object.entries(n.items))t[s]=X(O,o);return t}async getUserVariable(e){let t=(await this.pluginService.batchGetUserVariables({names:[e]})).items[e];return t?X(O,t):void 0}async getUserVariables(...e){let n=await this.pluginService.batchGetUserVariables({names:e}),t={};for(let[s,o]of Object.entries(n.items))t[s]=X(O,o);return t}async getUserToken(e){return(await this.pluginService.batchGetUserTokens({names:[e]})).items[e]}async getUserTokens(...e){return(await this.pluginService.batchGetUserTokens({names:e})).items}async getSystemToken(e){return(await this.pluginService.batchGetSystemTokens({names:[e]})).items[e]}async getSystemTokens(...e){return(await this.pluginService.batchGetSystemTokens({names:e})).items}userHttpProxy(e){return(n,t)=>{let s=new Request(n,t);return s.headers.set("X-Mochabug-Adapt-Plugin-HttpProxy-Token",`Bearer ${this.pluginToken}`),s.headers.set("X-Mochabug-Adapt-Plugin-HttpProxy-Path",`user:${e}`),s.headers.set("Host",new URL(s.url).host),this.env.httpproxy.fetch(s)}}systemHttpProxy(e){return(n,t)=>{let s=new Request(n,t);return s.headers.set("X-Mochabug-Adapt-Plugin-HttpProxy-Token",`Bearer ${this.pluginToken}`),s.headers.set("X-Mochabug-Adapt-Plugin-HttpProxy-Path",`system:${e}`),s.headers.set("Host",new URL(s.url).host),this.env.httpproxy.fetch(s)}}async authorize(e){await this.pluginService.authorize({accessToken:e})}async getSystemServices(){return(await this.pluginService.getSystemServices({})).configuredServices}async readFile(e){let n=new URL("https://runtimeapi");n.pathname=e;let t=await this.env.assets.fetch(n,{method:"GET"});if(!t.ok)throw ln(t.status);let s=t.headers.get("content-type");if(!s||!s.toLowerCase().includes("application/octet-stream"))throw new b("Invalid file. Are you reading a directory?",c.InvalidArgument);return{content:t.body,mime:s}}async readDirectory(e){let n=new URL("https://runtimeapi");n.pathname=e;let t=await this.env.assets.fetch(n,{method:"GET"});if(!t.ok)throw ln(t.status);let s=t.headers.get("content-type");if(!s||!s.toLowerCase().includes("application/json"))throw new b("Invalid directory. Are you reading a file?",c.InvalidArgument);return await t.json()}createSignalData(e){return m(E,{filename:e.filename,mimeType:"application/octet-stream",data:e.data})}extractBinaryFile(e){return{filename:e.filename??"output",data:e.data}}async htmlToPdf(e){let n=await this.fileforge.renderDocument({conversion:{case:"htmlToPdf",value:m(ze,{indexHtml:e.indexHtml,headerHtml:e.headerHtml,footerHtml:e.footerHtml,assets:e.assets?.map(t=>this.createSignalData(t))??[],render:e.render?S(ce,e.render):void 0,output:e.output?S(T,e.output):void 0})}});return this.extractBinaryFile(n.output)}async markdownToPdf(e){let n=await this.fileforge.renderDocument({conversion:{case:"markdownToPdf",value:m(Ke,{wrapperHtml:e.wrapperHtml,markdownFiles:e.markdownFiles.map(t=>this.createSignalData(t)),headerHtml:e.headerHtml,footerHtml:e.footerHtml,assets:e.assets?.map(t=>this.createSignalData(t))??[],render:e.render?S(ce,e.render):void 0,output:e.output?S(T,e.output):void 0})}});return this.extractBinaryFile(n.output)}async officeToPdf(e){let n=await this.fileforge.renderDocument({conversion:{case:"officeToPdf",value:m(Ne,{document:this.createSignalData(e.document),render:e.render?S(Qe,e.render):void 0,output:e.output?S(T,e.output):void 0})}});return this.extractBinaryFile(n.output)}async transformImage(e){let n=await this.fileforge.transformImage(m(ke,{input:this.createSignalData(e.input),operations:e.operations?.map(t=>S(Le,t))??[],output:e.output?S(we,e.output):void 0}));return this.extractBinaryFile(n.output)}async mergePdfs(e){let n=await this.fileforge.manipulatePdf({operation:{case:"merge",value:m(Ue,{files:e.files.map(t=>this.createSignalData(t)),pdfa:e.pdfa,pdfua:e.pdfua,flatten:e.flatten,userPassword:e.userPassword,ownerPassword:e.ownerPassword})}});return this.extractBinaryFile(n.outputs[0])}async splitPdf(e){return(await this.fileforge.manipulatePdf({operation:{case:"split",value:m(De,{file:this.createSignalData(e.file),mode:e.mode==="intervals"?1:2,span:e.span,unify:e.unify,pdfa:e.pdfa,pdfua:e.pdfua,flatten:e.flatten,userPassword:e.userPassword,ownerPassword:e.ownerPassword})}})).outputs.map(t=>this.extractBinaryFile(t))}async encryptPdf(e){let n=await this.fileforge.manipulatePdf({operation:{case:"encrypt",value:m(Te,{file:this.createSignalData(e.file),userPassword:e.userPassword,ownerPassword:e.ownerPassword})}});return this.extractBinaryFile(n.outputs[0])}async convertPdf(e){let n=await this.fileforge.manipulatePdf({operation:{case:"convert",value:m(Pe,{file:this.createSignalData(e.file),pdfa:e.pdfa,pdfua:e.pdfua})}});return this.extractBinaryFile(n.outputs[0])}async flattenPdf(e){let n=await this.fileforge.manipulatePdf({operation:{case:"flatten",value:m(je,{file:this.createSignalData(e.file)})}});return this.extractBinaryFile(n.outputs[0])}},Ge=class{result;constructor(e){this.result=e}get(e){let n=this.result[e];if(n)return{value:JSON.parse(new TextDecoder().decode(n.value)),ttl:n.metadata.ttl,lastModified:C(n.metadata.lastModified),etag:n.metadata.etag}}getBinary(e){let n=this.result[e];if(n)return{ttl:n.metadata.ttl,value:n.value,lastModified:C(n.metadata.lastModified),etag:n.metadata.etag}}},be=class{ops=[];insert(e,n,t){return this.ops.push(m(D,{operation:{case:"insert",value:{key:e,value:{value:n instanceof Uint8Array?n:new TextEncoder().encode(JSON.stringify(n)),ttl:t}}}})),this}delete(e){return this.ops.push(m(D,{operation:{case:"delete",value:{key:e}}})),this}rangeDelete(e,n,t,s){return this.ops.push(m(D,{operation:{case:"rangeDelete",value:{start:e,end:n,startInclusive:t,endInclusive:s}}})),this}build(){return this.ops}},N=class{service;namespace;constructor(e,n){this.service=e,this.namespace=mt(Ce,n)}async insert(e,n,t,s){let o;s&&(o=m(ae,{}),s.failIfExists?o.failIfExists=!0:(s.etagEquals&&(o.etag=s.etagEquals),s.timestampEquals?o.timestampCondition={case:"lastModifiedEquals",value:H(s.timestampEquals)}:s.timestampRange&&(o.timestampCondition={case:"lastModifiedRange",value:m(oe,{start:s.timestampRange.start?H(s.timestampRange.start):void 0,end:s.timestampRange.end?H(s.timestampRange.end):void 0,startInclusive:s.timestampRange.startInclusive,endInclusive:s.timestampRange.endInclusive})})));let a=await this.service.writeStore({operation:{operation:{case:"insert",value:{key:e,value:{value:n instanceof Uint8Array?n:new TextEncoder().encode(JSON.stringify(n)),ttl:t},precondition:o}}},namespace:this.namespace});return{ttl:a.metadata.ttl,lastModified:C(a.metadata.lastModified),etag:a.metadata.etag}}async delete(e,n){let t;n&&(t=m(Be,{}),n.mustExists?t.mustExists=!0:(n.etagEquals&&(t.etag=n.etagEquals),n.timestampEquals?t.timestampCondition={case:"lastModifiedEquals",value:H(n.timestampEquals)}:n.timestampRange&&(t.timestampCondition={case:"lastModifiedRange",value:m(oe,{start:n.timestampRange.start?H(n.timestampRange.start):void 0,end:n.timestampRange.end?H(n.timestampRange.end):void 0,startInclusive:n.timestampRange.startInclusive,endInclusive:n.timestampRange.endInclusive})}))),await this.service.writeStore({operation:{operation:{case:"delete",value:{key:e,precondition:t}}},namespace:this.namespace})}async rangeDelete(e,n,t,s){await this.service.batchWriteStore({namespace:this.namespace,operations:[{operation:{case:"rangeDelete",value:{start:e,end:n,startInclusive:t,endInclusive:s}}}]})}async get(e){let t=(await this.service.batchReadStore({keys:[e],namespace:this.namespace})).items[e];if(t)return{data:JSON.parse(new TextDecoder().decode(t.value)),ttl:t.metadata.ttl,etag:t.metadata.etag,lastModified:C(t.metadata.lastModified)}}async getBinary(e){let t=(await this.service.batchReadStore({keys:[e],namespace:this.namespace})).items[e];if(t)return{data:t.value,ttl:t.metadata.ttl,etag:t.metadata.etag,lastModified:C(t.metadata.lastModified)}}async selectRange(e){let n=await this.service.selectStore({namespace:this.namespace,operation:e});return{nextToken:n.nextToken,items:Object.entries(n.items).sort(([t],[s])=>t.localeCompare(s)).map(([t,s])=>({key:t,value:JSON.parse(new TextDecoder().decode(s.value)),ttl:s.metadata.ttl,etag:s.metadata.etag,lastModified:C(s.metadata.lastModified)}))}}async selectRangeBinary(e){let n=await this.service.selectStore({namespace:this.namespace,operation:e});return{nextToken:n.nextToken,items:Object.values(n.items).map(t=>({value:t.value,ttl:t.metadata.ttl,etag:t.metadata.etag,lastModified:C(t.metadata.lastModified)}))}}async writeBatch(e){let n=await this.service.batchWriteStore({namespace:this.namespace,operations:e}),t={};for(let[s,o]of Object.entries(n.metadata))t[s]={ttl:o.ttl,lastModified:C(o.lastModified),etag:o.etag};return t}async readBatch(e){let n=await this.service.batchReadStore({namespace:this.namespace,keys:e});return new Ge(n.items)}async acquire(e,n){try{await this.service.writeStore({namespace:this.namespace,operation:{operation:{case:"insert",value:{key:e,value:{value:new Uint8Array([1]),ttl:n??5},precondition:m(ae,{failIfExists:!0})}}}})}catch(t){if(t instanceof b&&t.code===c.FailedPrecondition)return!1;throw t}return!0}async release(e){await this.writeBatch(new be().delete(e).build())}async lock(e,n,t){let s=t?.maxRetries??5,o=t?.initialDelay??50,a=t?.maxDelay??2e3;for(let i=0;i<s;i++)if(await this.acquire(e))try{return await n()}finally{await this.release(e)}else if(i<s-1){let r=Math.min(o*2**i,a);console.log(`Acquisition failed for key: ${e}. Delaying for ${r}ms`),await new Promise(g=>setTimeout(g,r))}throw new Error("Failed to acquire lock after maximum retries")}},Q=class extends q{executor;constructor(e,n){super(e,n),this.executor=K(ge,f({fetcher:e.executor,interceptors:[t=>async s=>(s.header.set("Authorization",`Bearer ${n}`),await t(s))]}))}async getConfig(...e){let n=await this.executor.getVertexConfig({fieldMask:e.length>0?m(z,{paths:e.map(_)}):void 0}),t={},s=e.length>0?e:["config","metadata","configuredServices"];if(s.includes("metadata")&&(t.metadata=n.metadata?X(F,n.metadata):void 0),s.includes("configuredServices")&&(t.configuredServices=n.configuredServices||{}),s.includes("config"))if(n.config&&n.config.length>0)try{t.config=JSON.parse(new TextDecoder().decode(n.config))}catch{t.config=void 0}else t.config=void 0;return t}async getConfigBinary(...e){let n=await this.executor.getVertexConfig({fieldMask:e.length>0?m(z,{paths:e.map(_)}):void 0}),t={},s=e.length>0?e:["config","metadata","configuredServices"];return s.includes("metadata")&&(t.metadata=n.metadata?X(F,n.metadata):void 0),s.includes("configuredServices")&&(t.configuredServices=n.configuredServices||{}),s.includes("config")&&(t.config=n.config),t}getLocalStore(e){return new N(this.executor,e==="vertex"?"NAMESPACE_VERTEX":"NAMESPACE_PLUGIN")}getSessionApi(e){return new L(this.env,this.pluginToken,e)}},he=class extends Q{sessionAuthHeader;constructor(e,n,t){super(e,n),this.sessionAuthHeader=t,this.executor=K(ge,f({fetcher:e.executor,interceptors:[s=>async o=>(o.header.set("Authorization",t),await s(o))]}))}getAuthHeader(){return this.sessionAuthHeader}getSessionStore(e){return new N(this.executor,e==="vertex"?"NAMESPACE_VERTEX_INSTANCE":"NAMESPACE_PLUGIN_INSTANCE")}},L=class extends he{constructor(e,n,t){super(e,n,t)}async listSignals(e){let n=await this.executor.listActiveSignals({pageSize:e?.pageSize,orderDescending:e?.orderDescending});return{signals:Object.fromEntries(Object.entries(n.signals).map(([t,s])=>[t,JSON.parse(new TextDecoder().decode(s.data))])),receiver:n.receiver,cursor:n.nextCursor}}async listSignalsBinary(e){let n=await this.executor.listActiveSignals({pageSize:e?.pageSize,orderDescending:e?.orderDescending});return{signals:n.signals,receiver:n.receiver,cursor:n.nextCursor}}async continueListSignals(e){let n=await this.executor.listActiveSignals({cursor:e});return{signals:Object.fromEntries(Object.entries(n.signals).map(([t,s])=>[t,JSON.parse(new TextDecoder().decode(s.data))])),receiver:n.receiver,cursor:n.nextCursor}}async continueListSignalsBinary(e){let n=await this.executor.listActiveSignals({cursor:e});return{signals:n.signals,receiver:n.receiver,cursor:n.nextCursor}}async getSignal(e){let t=(await this.executor.batchGetActiveSignals({names:[e]})).items[e];return t?JSON.parse(new TextDecoder().decode(t.data)):void 0}async getSignalBinary(e){return(await this.executor.batchGetActiveSignals({names:[e]})).items[e]}async getSignals(...e){if(e.length===0)return{};let n=await this.executor.batchGetActiveSignals({names:e});if(Object.keys(n.items).length===0)return{};let t={};for(let[s,o]of Object.entries(n.items))t[s]=JSON.parse(new TextDecoder().decode(o.data));return t}async getSignalsBinary(...e){return e.length===0?{}:(await this.executor.batchGetActiveSignals({names:e})).items}async send(e,n){await this.executor.send({transmitter:e,signals:n?Object.fromEntries(Object.entries(n).map(([t,s])=>s?.data instanceof Uint8Array&&typeof s?.mimeType=="string"&&s.mimeType?[t,m(E,{data:s.data,mimeType:s.mimeType,filename:s.filename})]:[t,m(E,{data:new TextEncoder().encode(JSON.stringify(s)),mimeType:"application/json"})])):{}})}async dispatchExchange(e,n,t){return(await this.executor.dispatchExchange({name:e,receiver:n,signals:t?Object.fromEntries(Object.entries(t).map(([o,a])=>a?.data instanceof Uint8Array&&typeof a?.mimeType=="string"&&a.mimeType?[o,m(E,{data:a.data,mimeType:a.mimeType,filename:a.filename})]:[o,m(E,{data:new TextEncoder().encode(JSON.stringify(a)),mimeType:"application/json"})])):{}})).operation}async getExchange(e){let n=await this.executor.getExchangeOperation({id:e});if(!n.item)throw new b("Exchange operation not found",c.NotFound);return n.item}async cancelExchange(e){await this.executor.cancelExchangeOperation({id:e})}},$=class extends q{configurator;constructor(e,n){super(e,n),this.configurator=K(Fe,f({fetcher:e.configurator,interceptors:[t=>async s=>(s.header.set("Authorization",`Bearer ${n}`),await t(s))]}))}async getConfig(...e){let n=await this.configurator.getVertexConfig({fieldMask:e.length>0?m(z,{paths:e.map(_)}):void 0}),t={},s=e.length>0?e:["config","metadata","configuredServices"];if(s.includes("metadata")&&(t.metadata=n.metadata?X(F,n.metadata):void 0),s.includes("configuredServices")&&(t.configuredServices=n.configuredServices||{}),s.includes("config"))if(n.config&&n.config.length>0)try{t.config=JSON.parse(new TextDecoder().decode(n.config))}catch{t.config=void 0}else t.config=void 0;return t}async getConfigBinary(...e){let n=await this.configurator.getVertexConfig({fieldMask:e.length>0?m(z,{paths:e.map(_)}):void 0}),t={},s=e.length>0?e:["config","metadata","configuredServices"];return s.includes("metadata")&&(t.metadata=n.metadata?X(F,n.metadata):void 0),s.includes("configuredServices")&&(t.configuredServices=n.configuredServices||{}),s.includes("config")&&(t.config=n.config),t}async postConfig(e){if(!e.config&&!e.metadata)throw new b("Either config or metadata must be provided",c.InvalidArgument);let n;e.config!==void 0&&(n=e.config instanceof Uint8Array?e.config:new TextEncoder().encode(JSON.stringify(e.config)));let t=await this.configurator.postVertexConfig({config:n,metadata:e.metadata?S(F,e.metadata):void 0,overrideBindings:e?.overrideBindings});return X(F,t.metadata)}async listIncomingSignals(e,n,t){let s=await this.configurator.listIncomingSignals({receiver:e,formats:n?.map(o=>S(Se,o))??[],fieldMask:t?S(z,t):void 0});return X(xe,s)}getLocalStore(e){return new N(this.configurator,e==="vertex"?"NAMESPACE_VERTEX":"NAMESPACE_PLUGIN")}};function ln(d){switch(d){case 400:return new b("Bad Request",c.InvalidArgument);case 401:return new b("Unauthorized",c.Unauthenticated);case 403:return new b("Forbidden",c.PermissionDenied);case 404:return new b("Not Found",c.NotFound);case 409:return new b("Conflict",c.AlreadyExists);case 429:return new b("Too Many Requests",c.ResourceExhausted);case 499:return new b("Client Closed Request",c.Canceled);case 500:return new b("Internal Server Error",c.Internal);case 501:return new b("Not Implemented",c.Unimplemented);case 503:return new b("Service Unavailable",c.Unavailable);case 504:return new b("Gateway Timeout",c.DeadlineExceeded);default:return new b(`Unknown HTTP error: ${d}`,c.Unknown)}}function dn(d){switch(d.code){case c.Canceled:return 499;case c.Unknown:return 500;case c.InvalidArgument:return 400;case c.DeadlineExceeded:return 504;case c.NotFound:return 404;case c.AlreadyExists:return 409;case c.PermissionDenied:return 403;case c.ResourceExhausted:return 429;case c.FailedPrecondition:return 400;case c.Aborted:return 409;case c.OutOfRange:return 400;case c.Unimplemented:return 501;case c.Internal:return 500;case c.Unavailable:return 503;case c.DataLoss:return 500;case c.Unauthenticated:return 401;default:return 500}}function Gi(...d){let n=[];for(let o of d){let a=o.split("/").filter(i=>i.length>0);n.push(...a)}let t=[];for(let o of n)o===".."?t.pop():o!=="."&&t.push(o);let s=t.join("/");return d[0].startsWith("/")&&(s="/"+s),s}var Ie=["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"],M=class{method;matcher;constructor(e,n){this.method=e,this.matcher=Gt(n)}match(e,n){if(this.method!=="*"&&!(Array.isArray(this.method)&&this.method.includes(e)||this.method===e))return null;let t=this.matcher(n);if(!t)return null;let s={};for(let o in t.params)t.params[o]&&(Array.isArray(t.params[o])?s[o]=t.params[o].join("/"):s[o]=t.params[o]);return s}},te=class{routes;middlewares;constructor(){this.routes=[],this.middlewares=[]}useRequestLogging(){return this.middlewares.push(async(e,n,t,s)=>{let o=new Date().toISOString(),a=e.headers.get("X-Forwarded-Host")||"N/A",i=e.headers.get("X-Forwarded-Proto")||"N/A",u=e.headers.get("X-Forwarded-For")||"N/A";return console.log(),console.log(`[Request Log - ${o}]`),console.log("----------------------------------------"),console.log(`URL : ${e.url}`),console.log(`X-Forwarded-Host : ${a}`),console.log(`X-Forwarded-Proto: ${i}`),console.log(`X-Forwarded-For : ${u}`),console.log("----------------------------------------"),console.log(),await s()}),this}useErrorHandling(e){return this.middlewares.push(async(n,t,s,o)=>{try{return await o()}catch(a){return await e(a)}}),this}useBearerAuthorization(e,n){return this.middlewares.push(async(t,s,o,a)=>{let i=new URL(t.url);if(n&&n.some(r=>i.pathname.startsWith(r)))return console.log(`Skipping authorization for ${i.pathname}`),await a();if(e&&!e.some(r=>i.pathname.startsWith(r)))return console.log(`Skipping authorization for ${i.pathname}`),await a();let u=t.headers.get("Authorization");if(u&&u.startsWith("Bearer ")){let r=u.split(" ")[1];if(!r)return console.log("No token found in header"),new Response(null,{status:401});try{await s.authorize(r)}catch(g){return console.log(g),console.error(g),g instanceof pt?new Response(null,{status:dn(g)}):new Response(null,{status:500})}return console.log("Authorization successful"),await a()}else return console.log("No Authorization header found"),new Response("Unauthorized",{status:401})}),this}use(e){return this.middlewares.push(e),this}add(e,n,t){let s=new M(e,n);return this.routes.push({route:s,handler:t}),this}async routeRequest(e,n){let t=new URL(e.url),s=t.pathname,o={};for(let[a,i]of t.searchParams)o[a]=i;for(let{route:a,handler:i}of this.routes){let u=a.match(e.method,s);if(u!==null)return await n(i,{path:s,params:u,searchParams:o})}return new Response("Not found",{status:404})}},rn=class extends te{constructor(){super()}async entrypoint(e,n,t){if(!Ie.includes(e.method.toUpperCase()))return new Response("Method Not Allowed",{status:405});let s=e.headers.get("X-Mochabug-Adapt-Plugin-Token");if(!s)return new Response("Unauthorized",{status:401});try{let o=new Q(n,s),a=0,i=async()=>{if(a<this.middlewares.length){let u=this.middlewares[a];return a++,await u(e,o,t,i)}else return await this.routeRequest(e,async(u,r)=>u(e,o,r,t))};return await i()}catch(o){return console.log("An error was catched during middleware execution"),console.log(o),console.error(o),new Response("Internal Server Error",{status:500})}}},Ze=class{startRoute;stopRoute;exchangeRoutes;cronRoute;constructor(){this.exchangeRoutes=[]}async entrypoint(e,n,t){if(!Ie.includes(e.method.toUpperCase()))return new Response("Method Not Allowed",{status:405});let s=e.headers.get("X-Mochabug-Adapt-Plugin-Token");if(!s)return new Response("Unauthorized",{status:401});try{let o=e.headers.get("Authorization"),a=new L(n,s,o||""),i=new URL(e.url),u=i.pathname.endsWith("/")?i.pathname.slice(0,-1):i.pathname,r=!1;switch(e.headers.get("Content-Type")){case"application/json":r=!0;break;case"application/protobuf":r=!1;break;default:return new Response("Unsupported Media Type",{status:415})}if(this.startRoute?.route.match(e.method,u)){let g;r?g=ne(re,await e.json()):g=ee(re,new Uint8Array(await e.arrayBuffer())),await this.startRoute.handler(g,a,t)}if(this.stopRoute?.route.match(e.method,u)){let g;r?g=ne(me,await e.json()):g=ee(me,new Uint8Array(await e.arrayBuffer())),await this.stopRoute.handler(g,a,t)}if(this.cronRoute?.route.match(e.method,u)){let g;r?g=ne(ue,await e.json()):g=ee(ue,new Uint8Array(await e.arrayBuffer())),await this.cronRoute.handler(g,a,t)}for(let{route:g,handler:G}of this.exchangeRoutes){let V=g.match(e.method,u);if(V?.name){let p;r?p=ne(pe,await e.json()):p=ee(pe,new Uint8Array(await e.arrayBuffer())),await G({...p,getSignal:y=>JSON.parse(new TextDecoder().decode(p.result.signals[y].data)),getSignalBinary:y=>p.result.signals[y]},a,V.name,t);break}}return new Response}catch(o){return console.log("An error was catched during middleware execution"),console.log(o),console.error(o),new Response("Internal Server Error",{status:500})}}onStart(e){return this.startRoute={route:new M("POST","/start"),handler:e},this}onStop(e){return this.stopRoute={route:new M("POST","/stop"),handler:e},this}onExchange(e){return this.exchangeRoutes.push({route:new M("POST","/exchanges/:name"),handler:e}),this}},mn=class extends Ze{constructor(){super()}onCron(e){return this.cronRoute={route:new M("POST","/cron"),handler:e},this}},un=class extends te{constructor(){super()}async entrypoint(e,n,t){if(!Ie.includes(e.method.toUpperCase()))return new Response("Method Not Allowed",{status:405});let s=e.headers.get("X-Mochabug-Adapt-Plugin-Token");if(!s)return new Response("Unauthorized",{status:401});let o=e.headers.get("Authorization"),a=o&&o.startsWith("Bearer ")?o.substring(7):s;try{let i=0,u=new $(n,a),r=async()=>{if(i<this.middlewares.length){let g=this.middlewares[i];return i++,await g(e,u,t,r)}else return await this.routeRequest(e,async(g,G)=>g(e,u,G,t))};return await r()}catch(i){return console.log("An error was catched during middleware execution"),console.log(i),console.error(i),new Response("Internal Server Error",{status:500})}}},pn=class{constructor(){}async entrypoint(e,n,t){return new Response("Not implemented",{status:501})}};export{mn as CronExecutorRouter,un as ExternalConfiguratorRouter,rn as ExternalExecutorRouter,pn as InternalConfiguratorRouter,Ze as InternalExecutorRouter,M as Route,Gi as joinPaths};
|
|
2
2
|
//# sourceMappingURL=router.mjs.map
|