mnemonica 1.0.0 → 1.0.6

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.
Files changed (92) hide show
  1. package/.ai/ONBOARDING.md +1 -1
  2. package/.ai/ask/AGENTS.md +15 -9
  3. package/.ai/async_init.md +2 -2
  4. package/.ai/rules-skill/contributing.md +1 -1
  5. package/.ai/rules-skill/define-patterns.md +8 -2
  6. package/.ai/rules-skill/ecosystem.md +4 -4
  7. package/.ai/rules-skill/instance-methods.md +48 -15
  8. package/.ai/rules-skill/type-system.md +12 -2
  9. package/AGENTS.md +6 -2
  10. package/CONTRIBUTING.md +61 -9
  11. package/FOR_HUMANS.md +149 -239
  12. package/README.md +75 -40
  13. package/SKILL.md +1 -1
  14. package/build/api/errors/exceptionConstructor.js +20 -12
  15. package/build/api/errors/index.js +9 -5
  16. package/build/api/errors/throwModificationError.js +15 -9
  17. package/build/api/index.js +35 -2
  18. package/build/api/types/InstanceCreator.js +5 -2
  19. package/build/api/types/Mnemosyne.d.ts +6 -6
  20. package/build/api/types/Mnemosyne.js +43 -120
  21. package/build/api/types/Props.js +5 -3
  22. package/build/api/types/TypeProxy.js +13 -9
  23. package/build/api/types/compileNewModificatorFunctionBody.js +14 -8
  24. package/build/api/types/index.js +56 -13
  25. package/build/api/utils/index.js +21 -12
  26. package/build/constants/index.js +11 -8
  27. package/build/descriptors/types/index.js +79 -26
  28. package/build/index.d.ts +4 -4
  29. package/build/index.js +62 -15
  30. package/build/types/index.d.ts +52 -31
  31. package/build/types/index.js +1 -1
  32. package/build/utils/clone.d.ts +1 -0
  33. package/build/utils/clone.js +11 -0
  34. package/build/utils/collectConstructors.js +5 -3
  35. package/build/utils/exception.d.ts +1 -0
  36. package/build/utils/exception.js +14 -0
  37. package/build/utils/extract.d.ts +2 -3
  38. package/build/utils/extract.js +3 -2
  39. package/build/utils/fork.d.ts +1 -0
  40. package/build/utils/fork.js +33 -0
  41. package/build/utils/index.d.ts +2 -3
  42. package/build/utils/index.js +21 -7
  43. package/build/utils/merge.d.ts +2 -1
  44. package/build/utils/merge.js +10 -6
  45. package/build/utils/parent.d.ts +1 -1
  46. package/build/utils/parent.js +3 -2
  47. package/build/utils/parse.d.ts +2 -12
  48. package/build/utils/parse.js +1 -1
  49. package/build/utils/pick.d.ts +4 -3
  50. package/build/utils/pick.js +4 -5
  51. package/build/utils/sibling.d.ts +1 -0
  52. package/build/utils/sibling.js +25 -0
  53. package/build/utils/toJSON.d.ts +1 -1
  54. package/build/utils/toJSON.js +3 -2
  55. package/docs/UTILS.md +184 -0
  56. package/docs/ai-learning-trajectory.md +1 -1
  57. package/docs/async-constructors.md +3 -1
  58. package/docs/empathy-in-ai.md +170 -0
  59. package/docs/hott-primer.md +47 -0
  60. package/docs/performance-vs-security.md +395 -0
  61. package/docs/purpose.md +38 -7
  62. package/docs/tactica-pattern.md +10 -10
  63. package/docs/theory-of-operations.md +224 -0
  64. package/docs/typed-lookup.md +12 -12
  65. package/docs/typeomatica.md +1 -1
  66. package/package.json +13 -6
  67. package/src/api/errors/exceptionConstructor.ts +14 -9
  68. package/src/api/errors/index.ts +8 -4
  69. package/src/api/errors/throwModificationError.ts +10 -9
  70. package/src/api/types/InstanceCreator.ts +5 -8
  71. package/src/api/types/Mnemosyne.ts +72 -231
  72. package/src/api/types/Props.ts +4 -2
  73. package/src/api/types/TypeProxy.ts +7 -11
  74. package/src/api/types/compileNewModificatorFunctionBody.ts +13 -7
  75. package/src/api/types/index.ts +15 -8
  76. package/src/api/utils/index.ts +16 -14
  77. package/src/constants/index.ts +6 -9
  78. package/src/descriptors/types/index.ts +44 -24
  79. package/src/index.ts +28 -21
  80. package/src/types/index.ts +101 -69
  81. package/src/utils/clone.ts +11 -0
  82. package/src/utils/collectConstructors.ts +4 -2
  83. package/src/utils/exception.ts +16 -0
  84. package/src/utils/extract.ts +5 -2
  85. package/src/utils/fork.ts +57 -0
  86. package/src/utils/index.ts +32 -13
  87. package/src/utils/merge.ts +18 -6
  88. package/src/utils/parent.ts +4 -6
  89. package/src/utils/parse.ts +5 -4
  90. package/src/utils/pick.ts +10 -2
  91. package/src/utils/sibling.ts +33 -0
  92. package/src/utils/toJSON.ts +3 -2
@@ -64,10 +64,6 @@ export type constructorOptions = {
64
64
  submitStack?: boolean;
65
65
  awaitReturn?: boolean;
66
66
  asClass?: boolean;
67
- exposeInstanceMethods?: boolean;
68
- };
69
- export type HideInstanceMethodsOptions = constructorOptions & {
70
- exposeInstanceMethods: true;
71
67
  };
72
68
  export type SubtypesMap = Map<string, TypeClass>;
73
69
  export type TypeDef = {
@@ -130,21 +126,35 @@ export type ProtoFlat<P extends object, T extends object, L extends Exclude<keyo
130
126
  } & {
131
127
  [key in L]: P[key];
132
128
  };
129
+ export type MnemonicaInstanceMethodKeys = 'extract' | 'pick' | 'parent' | 'clone' | 'fork' | 'exception' | 'sibling';
133
130
  export type Flatten<F> = {
134
131
  [key in keyof F]: F[key];
135
132
  };
133
+ export type Extracted<T extends object> = {
134
+ [K in keyof T as K extends string ? (K extends MnemonicaInstanceMethodKeys ? never : K) : never]: T[K];
135
+ } & {};
136
+ export type Parsed<T extends object> = {
137
+ name: string;
138
+ props: Extracted<T>;
139
+ self: T;
140
+ proto: object;
141
+ joint: Record<string, unknown>;
142
+ parent: object | undefined;
143
+ };
136
144
  export interface SiblingAccessor {
137
145
  (SiblingTypeName: string): TypeClass | undefined;
138
146
  [key: string]: TypeClass | undefined;
139
147
  }
140
- export interface MnemonicaInstance {
141
- extract(): Record<string, unknown>;
148
+ export interface MnemonicaInstance<T extends object = object> {
149
+ extract(): Extracted<T>;
150
+ pick<K extends keyof T>(...keys: (K | K[])[]): {
151
+ [P in K]: T[P];
152
+ } & {};
142
153
  pick(...keys: string[]): Record<string, unknown>;
143
- pick(keys: string[]): Record<string, unknown>;
144
154
  parent(): object | undefined;
145
155
  parent(constructorLookupPath: string): object | undefined;
146
- readonly clone: object;
147
- fork(...forkArgs: unknown[]): object;
156
+ readonly clone: this;
157
+ fork(...forkArgs: unknown[]): this;
148
158
  exception(error: Error, ...args: unknown[]): Error;
149
159
  readonly sibling: SiblingAccessor;
150
160
  }
@@ -160,19 +170,18 @@ export type InstanceInternalProps = {
160
170
  __timestamp__: number;
161
171
  };
162
172
  export type Props = InstanceInternalProps & {
163
- __self__: InstanceInternalProps & MnemonicaInstance;
173
+ __self__: InstanceInternalProps;
164
174
  [key: string]: unknown;
165
175
  };
166
- export type IsHidingMethods<Config extends constructorOptions> = Config extends {
167
- exposeInstanceMethods: false;
168
- } ? true : false;
169
- export type InstanceResult<N extends object, Config extends constructorOptions> = IsHidingMethods<Config> extends true ? Flatten<N> : Flatten<N> & MnemonicaInstance;
170
- export interface IDefinitorInstance<N extends object, Config extends constructorOptions = constructorOptions, R extends InstanceResult<N, Config> = InstanceResult<N, Config>> {
176
+ export type InstanceResult<N extends object> = {
177
+ [K in keyof N]: N[K];
178
+ };
179
+ export interface IDefinitorInstance<N extends object, R extends InstanceResult<N> = InstanceResult<N>> {
171
180
  TypeName: string;
172
181
  prototype: N;
173
182
  new (...args: unknown[]): R;
174
- (...args: unknown[]): IDefinitorInstance<R, Config>;
175
- define<T extends object, F extends Proto<N, T>>(TypeOrTypeName: string | CallableFunction, constructHandlerOrConfig?: IDEF<T> | object | boolean | CallableFunction, configOrUndefined?: constructorOptions | CallableFunction | boolean): IDefinitorInstance<F, Config>;
183
+ (...args: unknown[]): IDefinitorInstance<R>;
184
+ define<T extends object, F extends Proto<N, T>>(TypeOrTypeName: string | CallableFunction, constructHandlerOrConfig?: IDEF<T> | object | boolean | CallableFunction, configOrUndefined?: constructorOptions | CallableFunction | boolean): IDefinitorInstance<F>;
176
185
  lookup: TypeLookup;
177
186
  registerHook(hookType: hooksTypes, cb: hook): void;
178
187
  subtypes: SubtypesMap;
@@ -180,8 +189,7 @@ export interface IDefinitorInstance<N extends object, Config extends constructor
180
189
  collection?: CollectionDef;
181
190
  }
182
191
  export interface TypeAbsorber extends CallableFunction {
183
- <T extends object>(this: unknown, TypeOrTypeName: string | CallableFunction, constructHandlerOrConfig: IDEF<T> | object | boolean | CallableFunction, configOrUndefined: HideInstanceMethodsOptions): IDefinitorInstance<T, HideInstanceMethodsOptions>;
184
- <T extends object>(this: unknown, TypeOrTypeName: string | CallableFunction, constructHandlerOrConfig?: IDEF<T> | object | boolean | CallableFunction, configOrUndefined?: constructorOptions | CallableFunction | boolean): IDefinitorInstance<T, constructorOptions>;
192
+ <T extends object>(this: unknown, TypeOrTypeName: string | CallableFunction, constructHandlerOrConfig?: IDEF<T> | object | boolean | CallableFunction, configOrUndefined?: constructorOptions | CallableFunction | boolean): IDefinitorInstance<T>;
185
193
  }
186
194
  export interface TypesCollection extends Hookable {
187
195
  define: TypeAbsorber;
@@ -221,17 +229,32 @@ export type DecoratedClass<T extends Constructor<object>> = T & (<U extends Cons
221
229
  lookup: TypeLookup;
222
230
  TypeName: string;
223
231
  };
224
- export type ApplyFunction = <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Constructor: IDEF<T>, args?: unknown[]) => S;
225
- export type CallFunction = <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Constructor: IDEF<T>, ...args: unknown[]) => S;
226
- export type BindFunction = <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Constructor: IDEF<T>) => (...args: unknown[]) => S;
232
+ export type Merge<E extends object, T extends object> = {
233
+ [K in keyof T | keyof E as K extends MnemonicaInstanceMethodKeys ? never : K]: K extends keyof T ? T[K] : E[K & keyof E];
234
+ };
235
+ export interface ApplyFunction extends CallableFunction {
236
+ <E extends object, T extends object>(entity: E, Constructor: IDEF<T>, args?: unknown[]): InstanceResult<Merge<E, T>>;
237
+ }
238
+ export interface CallFunction extends CallableFunction {
239
+ <E extends object, T extends object>(entity: E, Constructor: IDEF<T>, ...args: unknown[]): InstanceResult<Merge<E, T>>;
240
+ }
241
+ export interface BindFunction extends CallableFunction {
242
+ <E extends object, T extends object>(entity: E, Constructor: IDEF<T>): (...args: unknown[]) => InstanceResult<Merge<E, T>>;
243
+ }
227
244
  export interface UtilsCollection {
228
- extract: (instance: object) => Record<string, unknown>;
229
- pick: (instance: object, ...args: (string | string[])[]) => Record<string, unknown>;
245
+ extract<T extends object>(instance: T): Extracted<T>;
246
+ pick<T extends object, K extends keyof T>(instance: T, ...args: (K | K[])[]): {
247
+ [P in K]: T[P];
248
+ } & {};
249
+ pick<T extends object>(instance: T, ...args: (string | string[])[]): Record<string, unknown>;
250
+ clone<T extends object>(instance: T): T;
251
+ fork<T extends object>(instance: T): (this: object, ...forkArgs: unknown[]) => T;
252
+ sibling(instance: object): SiblingAccessor;
230
253
  collectConstructors: (instance: object, flat?: boolean) => (CallableFunction | string)[];
231
- merge: (...args: unknown[]) => unknown;
232
- parse: (value: unknown) => object | undefined;
233
- parent: (instance: object, strict?: boolean) => object | undefined;
234
- toJSON: (instance: object) => string;
254
+ merge<A extends object, B extends object>(a: A, b: B, ...args: unknown[]): InstanceResult<Merge<B, A>>;
255
+ parse<T extends object>(self: T): Parsed<T>;
256
+ parent<T extends object>(instance: T, path?: string): object | undefined;
257
+ toJSON<T extends object>(instance: T): string;
235
258
  [key: string]: CallableFunction;
236
259
  }
237
260
  export interface MnemonicaModule {
@@ -240,7 +263,7 @@ export interface MnemonicaModule {
240
263
  apply: ApplyFunction;
241
264
  call: CallFunction;
242
265
  bind: BindFunction;
243
- decorate: <U extends Constructor<object>>(target?: object, config?: object) => DecoratedClass<U>;
266
+ decorate: <T extends Constructor<object> | constructorOptions | undefined = undefined>(target?: T, config?: constructorOptions) => <U extends Constructor<object>>(cstr: U) => DecoratedClass<U>;
244
267
  registerHook: <T extends object>(Constructor: IDEF<T>, hookType: hooksTypes, cb: hook) => void;
245
268
  defaultTypes: TypesCollection;
246
269
  BASE_MNEMONICA_ERROR: MnemonicaErrorConstructor;
@@ -258,12 +281,10 @@ export interface MnemonicaModule {
258
281
  WRONG_STACK_CLEANER: MnemonicaErrorConstructor;
259
282
  MNEMONICA: string;
260
283
  MNEMOSYNE: string;
261
- URANUS: string;
262
284
  SymbolParentType: symbol;
263
285
  SymbolConstructorName: symbol;
264
286
  SymbolDefaultTypesCollection: symbol;
265
287
  SymbolConfig: symbol;
266
- SymbolGaia: symbol;
267
288
  TYPE_TITLE_PREFIX: string;
268
289
  ErrorMessages: ErrorMessages;
269
290
  utils: UtilsCollection;
@@ -1,3 +1,3 @@
1
1
  'use strict';
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiBcIm9mZlwiICovXG5cbi8vIFByb3BzIHR5cGUgZm9yIGdldFByb3BzL3NldFByb3BzXG5leHBvcnQgdHlwZSBQcm9wc1R5cGUgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLy8gQ29yZSB0eXBlIGRlZmluaXRpb25zIGZvciBtbmVtb25pY2FcblxuLy8gQmFzZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB0eXBlIC0gY2FuIGJlIGEgY2xhc3MgY29uc3RydWN0b3Igb3IgYSBmdW5jdGlvbi5cbi8vIEFyZ3MgZGVmYXVsdHMgdG8gdW5rbm93bltdIHNvIElERUY8VD4gaXMgYmFja3dhcmRzIGNvbXBhdGlibGU7XG4vLyBzdXBwbHkgQXJncyB0byBnZXQgdHlwZWQgY29uc3RydWN0b3IgcGFyYW1zOiBJREVGPE15VHlwZSwgW3N0cmluZywgbnVtYmVyXT5cbmV4cG9ydCB0eXBlIElERUY8VCwgQXJncyBleHRlbmRzIHVua25vd25bXSA9IHVua25vd25bXT4gPSB7IG5ldygpOiBUIH0gfCB7ICh0aGlzOiBULCAuLi5hcmdzOiBBcmdzKTogdm9pZCB9O1xuXG4vLyBFcnJvciBtZXNzYWdlIHR5cGVzIC0gYWxsIGVycm9yIG1lc3NhZ2VzIGFyZSBzdHJpbmdzXG5leHBvcnQgdHlwZSBFcnJvck1lc3NhZ2VLZXkgPVxuXHR8ICdCQVNFX0VSUk9SX01FU1NBR0UnXG5cdHwgJ0hBTkRMRVJfTVVTVF9CRV9BX0ZVTkNUSU9OJ1xuXHR8ICdXUk9OR19UWVBFX0RFRklOSVRJT04nXG5cdHwgJ1dST05HX0lOU1RBTkNFX0lOVk9DQVRJT04nXG5cdHwgJ1dST05HX01PRElGSUNBVElPTl9QQVRURVJOJ1xuXHR8ICdBTFJFQURZX0RFQ0xBUkVEJ1xuXHR8ICdXUk9OR19BUkdVTUVOVFNfVVNFRCdcblx0fCAnV1JPTkdfSE9PS19UWVBFJ1xuXHR8ICdNSVNTSU5HX0hPT0tfQ0FMTEJBQ0snXG5cdHwgJ01JU1NJTkdfQ0FMTEJBQ0tfQVJHVU1FTlQnXG5cdHwgJ09QVElPTlNfRVJST1InXG5cdHwgJ1dST05HX1NUQUNLX0NMRUFORVInO1xuXHQvLyB8ICdUWVBFTkFNRV9NVVNUX0JFX0FfU1RSSU5HJ1xuXHQvLyB8ICdGTE9XX0NIRUNLRVJfUkVERUZJTklUSU9OJ1xuXG4vLyBFcnJvciBtZXNzYWdlcyBvYmplY3QgdHlwZVxuZXhwb3J0IHR5cGUgRXJyb3JNZXNzYWdlcyA9IFJlY29yZDxFcnJvck1lc3NhZ2VLZXksIHN0cmluZz47XG5cbi8vIEhvb2sgY2FsbGJhY2sg4oCUIHBhc3NlZCB0byByZWdpc3Rlckhvb2sgYW5kIGludm9rZWQgYnkgaW52b2tlSG9va1xuZXhwb3J0IGludGVyZmFjZSBob29rIGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7XG5cdChvcHRzOiBob29rc09wdHMpOiB1bmtub3duO1xufVxuXG4vLyBFcnJvciBjb25zdHJ1Y3RvciBmcm9tIGNvbnN0cnVjdEVycm9yIC0gY29uc3RydWN0YWJsZSBmdW5jdGlvbiB3aXRoIHByb3RvdHlwZVxuZXhwb3J0IGludGVyZmFjZSBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yIHtcblx0bmV3KGFkZGl0aW9uPzogc3RyaW5nLCBzdGFjaz86IHN0cmluZyB8IHN0cmluZ1tdKTogRXJyb3I7XG5cdChuYW1lOiBzdHJpbmcpOiBFcnJvcjtcblx0cHJvdG90eXBlOiB7XG5cdFx0Y29uc3RydWN0b3I6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdH07XG59XG5cbi8vIEVycm9ycyB0eXBlcyBtYXAgLSBpbmRleGFibGUgcmVjb3JkIG9mIGVycm9yIGNvbnN0cnVjdG9yc1xuZXhwb3J0IHR5cGUgRXJyb3JzVHlwZXNNYXAgPSBSZWNvcmQ8c3RyaW5nLCBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yPjtcblxuLy8gTW5lbW9uaWNhIGVycm9yIGludGVyZmFjZSBmb3IgZXh0ZW5kZWQgRXJyb3Igb2JqZWN0c1xuZXhwb3J0IGludGVyZmFjZSBNbmVtb25pY2FFcnJvciBleHRlbmRzIEVycm9yIHtcblx0ZXhjZXB0aW9uUmVhc29uPzogRXJyb3I7XG5cdHJlYXNvbnM/OiBFcnJvcltdO1xuXHRzdXJwbHVzPzogRXJyb3JbXTtcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBUeXBlIENvbnN0cnVjdG9yLlxuICogXCJUeXBlXCIgaGVyZSBpcyB1c2VkIGluIHRoZSBDb21wdXRlciBTY2llbmNlIHNlbnNlIOKAlCBhbiBpbnRlcmZhY2UvY29udHJhY3RcbiAqIGRlc2NyaWJpbmcgd2hhdCBhIGNvbnN0cnVjdG9yIG11c3Qgc2F0aXNmeSAoYm90aCBgbmV3YC1hYmxlIGFuZCBjYWxsYWJsZSkuXG4gKiBUQyA9IFR5cGUgQ29uc3RydWN0b3I7IFwiSW50ZXJuYWxcIiBtZWFucyB0aGlzIGlzIHRoZSBsaWJyYXJ5J3Mgb3duIGNvbnN0cnVjdG9yXG4gKiBzaGFwZSwgZGlzdGluY3QgZnJvbSB1c2VyLWZhY2luZyBUeXBlQ29uc3RydWN0b3IgYmVsb3cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0ludGVybmFsX1RDXzxDb25zdHJ1Y3Rvckluc3RhbmNlIGV4dGVuZHMgb2JqZWN0PiB7XG5cdG5ldyguLi5hcmdzOiB1bmtub3duW10pOiBDb25zdHJ1Y3Rvckluc3RhbmNlO1xuXHQodGhpczogQ29uc3RydWN0b3JJbnN0YW5jZSwgLi4uYXJnczogdW5rbm93bltdKTogQ29uc3RydWN0b3JJbnN0YW5jZTtcblx0cmVhZG9ubHkgcHJvdG90eXBlOiBDb25zdHJ1Y3Rvckluc3RhbmNlICYge1xuXHRcdHJlYWRvbmx5IGNvbnN0cnVjdG9yOiBfSW50ZXJuYWxfVENfPENvbnN0cnVjdG9ySW5zdGFuY2U+XG5cdH07XG59XG5cbi8qKlxuICogUHVibGljIGFsaWFzIGZvciBfSW50ZXJuYWxfVENfIOKAlCB0aGUgc2hhcGUgb2YgY29uc3RydWN0b3IgZnVuY3Rpb25zIHJldHVybmVkIGJ5IGBkZWZpbmUoKWAuXG4gKiBBdWdtZW50ZWQgYnkgdGFjdGljYS1nZW5lcmF0ZWQgVHlwZVJlZ2lzdHJ5IHRvIGJlY29tZSB1c2VyLXNwZWNpZmljIHR5cGVzLlxuICogS2VwdCBhcyBhIG5hbWVkIGFsaWFzIChyYXRoZXIgdGhhbiBpbmxpbmluZyBfSW50ZXJuYWxfVENfKSBzbyB0YWN0aWNhIGNhbiByZWZlcmVuY2UgaXRcbiAqIGNsZWFubHkgaW4gZ2VuZXJhdGVkIGRlY2xhcmF0aW9uIGZpbGVzLlxuICovXG5leHBvcnQgdHlwZSBUeXBlQ29uc3RydWN0b3I8Q29uc3RydWN0b3JJbnN0YW5jZSBleHRlbmRzIG9iamVjdD4gPSBfSW50ZXJuYWxfVENfPENvbnN0cnVjdG9ySW5zdGFuY2U+O1xuXG4vLyBIb29rIHR5cGVzXG5leHBvcnQgdHlwZSBob29rc1R5cGVzID0gJ3ByZUNyZWF0aW9uJyB8ICdwb3N0Q3JlYXRpb24nIHwgJ2NyZWF0aW9uRXJyb3InO1xuXG4vLyBIb29rIG9wdGlvbnMgcGFzc2VkIHRvIGhvb2sgY2FsbGJhY2tzXG4vLyBQID0gcGFyZW50IC8gZXhpc3RlbnQgaW5zdGFuY2UgKHByb3RvKVxuLy8gVCA9IGNoaWxkIC8gaW5oZXJpdGVkIGluc3RhbmNlICh0eXBlIGJlaW5nIGNyZWF0ZWQpXG5leHBvcnQgdHlwZSBob29rc09wdHM8UCA9IG9iamVjdCwgVCA9IFA+ID0ge1xuXHRUeXBlTmFtZTogc3RyaW5nO1xuXHR0eXBlOiBUeXBlRGVmO1xuXHRhcmdzOiB1bmtub3duW107XG5cdGV4aXN0ZW50SW5zdGFuY2U6IFA7XG5cdGluaGVyaXRlZEluc3RhbmNlPzogVDtcblx0Y3JlYXRvcj86IHsgdGhyb3dNb2RpZmljYXRpb25FcnJvcihlcnJvcjogRXJyb3IpOiB2b2lkIH07XG59O1xuXG4vLyBDYWxsYmFjayBwYXNzZWQgaW50byBNb2RpZmljYXRpb25Db25zdHJ1Y3RvciB0byBhdHRhY2ggaW50ZXJuYWwgcHJvcHMgdG8gdGhlIHByb3RvdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBZGRQcm9wc0NhbGxiYWNrIGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7XG5cdChwcm90bzogb2JqZWN0KTogdm9pZDtcbn1cblxuLy8gTW9kaWZpY2F0aW9uQ29uc3RydWN0b3I6IHdpcmVzIHByb3RvdHlwZSBjaGFpbiBkdXJpbmcgaW5zdGFuY2UgY3JlYXRpb25cbmV4cG9ydCBpbnRlcmZhY2UgTW9kaWZpY2F0aW9uQ29uc3RydWN0b3IgZXh0ZW5kcyBDYWxsYWJsZUZ1bmN0aW9uIHtcblx0KFxuXHRcdHRoaXM6IG9iamVjdCxcblx0XHRNb2RpZmljYXRvclR5cGU6IE1uZW1vbmljYUNvbnN0cnVjdG9yLFxuXHRcdE1vZGlmaWNhdG9yVHlwZVByb3RvdHlwZTogb2JqZWN0LFxuXHRcdF9hZGRQcm9wczogQWRkUHJvcHNDYWxsYmFja1xuXHQpOiBNbmVtb25pY2FDb25zdHJ1Y3Rvcjtcbn1cblxuLy8gRmFjdG9yeSB0aGF0IHJldHVybnMgYSBNb2RpZmljYXRpb25Db25zdHJ1Y3RvciAodXNlZCBpbiBjb25zdHJ1Y3Rvck9wdGlvbnMpXG5leHBvcnQgaW50ZXJmYWNlIE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yRmFjdG9yeSBleHRlbmRzIENhbGxhYmxlRnVuY3Rpb24ge1xuXHQoKTogTW9kaWZpY2F0aW9uQ29uc3RydWN0b3I7XG59XG5cbi8vIEZhY3RvcnkgdGhhdCByZXR1cm5zIGEgTW5lbW9uaWNhQ29uc3RydWN0b3IgKHN0b3JlZCBpbiBUeXBlRGVmLmNvbnN0cnVjdEhhbmRsZXIpXG5leHBvcnQgaW50ZXJmYWNlIE1uZW1vbmljYUNvbnN0cnVjdG9yRmFjdG9yeSBleHRlbmRzIENhbGxhYmxlRnVuY3Rpb24ge1xuXHQoKTogTW5lbW9uaWNhQ29uc3RydWN0b3I7XG59XG5cbi8vIE1hcmtzIHRoZSB0b3Agb2YgYSBjYXB0dXJlZCBzdGFjayB0cmFjZSAocGFzc2VkIHRvIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlIGFzIGNvbnN0cnVjdG9yT3B0KVxuZXhwb3J0IGludGVyZmFjZSBTdGFja0JvdW5kYXJ5IGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7fVxuXG4vLyBBIHdyYXBwYWJsZSB1dGlsaXR5IG1ldGhvZCDigJQgYW55IGNhbGxhYmxlIHRoYXQgd3JhcFRoaXMoKSBjYW4gcHJveHlcbmV4cG9ydCBpbnRlcmZhY2UgV3JhcHBhYmxlTWV0aG9kIGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7fVxuXG4vLyBDb25zdHJ1Y3RvciBvcHRpb25zIGZvciBkZWZpbmUgLSBkZWZhdWx0IChleHBvc2VJbnN0YW5jZU1ldGhvZHMgZGVmYXVsdHMgdG8gdHJ1ZSBiZWhhdmlvcilcbmV4cG9ydCB0eXBlIGNvbnN0cnVjdG9yT3B0aW9ucyA9IHtcblx0Ly8gZXhwbGljaXQgZGVjbGFyYXRpb24gd2Ugd2lzaCB1c2Vcblx0Ly8gYW4gb2xkIHN0eWxlIGJhc2VkIGNvbnN0cnVjdG9yc1xuXHRNb2RpZmljYXRpb25Db25zdHJ1Y3Rvcj86IE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yRmFjdG9yeSxcblx0Ly8gc2hhbGwgb3Igbm90IHdlIHVzZSBzdHJpY3QgY2hlY2tpbmdcblx0Ly8gZm9yIGNyZWF0aW9uIHN1Yi1pbnN0YW5jZXMgT25seSBmcm9tIGN1cnJlbnQgdHlwZVxuXHQvLyBvciB3ZSBtaWdodCB1c2UgdXAtbmVzdGVkIHN1Yi1pbnN0YW5jZXMgZnJvbSBjaGFpblxuXHRzdHJpY3RDaGFpbj86IGJvb2xlYW4sXG5cdC8vIHNob3VsZCB3ZSB1c2UgZm9yY2VkIGVycm9ycyBjaGVja2luZ1xuXHQvLyB0byBtYWtlIGFsbCBpbmhlcml0ZWQgdHlwZXMgZXJyb3JlZFxuXHQvLyBpZiB0aGVyZSBpcyBhbiBlcnJvciBzb21ld2hlcmUgaW4gY2hhaW5cblx0YmxvY2tFcnJvcnM/OiBib29sZWFuLFxuXHQvLyBpZiBpdCBpcyBuZWNlc3NhcnkgdG8gY29sbGVjdCBzdGFja1xuXHQvLyBhcyBhIF9fc3RhY2tfXyBwcm90b3R5cGUgcHJvcGVydHlcblx0Ly8gZHVyaW5nIHRoZSBwcm9jZXNzIG9mIGluc3RhbmNlIGNyZWF0aW9uXG5cdHN1Ym1pdFN0YWNrPzogYm9vbGVhbixcblx0Ly8gYXdhaXQgbmV3IENvbnN0cnVjdG9yKClcblx0Ly8gbXVzdCByZXR1cm4gdmFsdWVcblx0YXdhaXRSZXR1cm4/OiBib29sZWFuLFxuXHQvLyBGb3JjZSBjbGFzcyBtb2RlIChhdXRvLWRldGVjdGVkIGJ5IGRlZmF1bHQpXG5cdGFzQ2xhc3M/OiBib29sZWFuLFxuXHQvLyBFeHBvc2UgaW5zdGFuY2UgbWV0aG9kcyAoZXh0cmFjdCwgcGljaywgcGFyZW50LCBjbG9uZSwgZm9yaywgZXhjZXB0aW9uLCBzaWJsaW5nKVxuXHQvLyBvbiB0aGUgaW5zdGFuY2UgdHlwZS4gV2hlbiBmYWxzZSwgdGhlc2UgbWV0aG9kcyBhcmUgc3RpbGwgYXZhaWxhYmxlIG9uIHRoZSBwcm90b3R5cGVcblx0Ly8gYnV0IGhpZGRlbiBmcm9tIHRoZSB0eXBlIGRlZmluaXRpb24gdW5sZXNzIGV4cGxpY2l0bHkgZXhwb3NlZC5cblx0ZXhwb3NlSW5zdGFuY2VNZXRob2RzPzogYm9vbGVhbixcbn07XG5cbi8vIENvbnN0cnVjdG9yIG9wdGlvbnMgdGhhdCBleHBsaWNpdGx5IGhpZGUgaW5zdGFuY2UgbWV0aG9kc1xuZXhwb3J0IHR5cGUgSGlkZUluc3RhbmNlTWV0aG9kc09wdGlvbnMgPSBjb25zdHJ1Y3Rvck9wdGlvbnMgJiB7XG5cdGV4cG9zZUluc3RhbmNlTWV0aG9kczogdHJ1ZTtcbn07XG5cbi8vIFN1YnR5cGVzIG1hcCAtIHJlcHJlc2VudHMgdGhlIHN1YnR5cGVzIHByb3BlcnR5XG5leHBvcnQgdHlwZSBTdWJ0eXBlc01hcCA9IE1hcDxzdHJpbmcsIFR5cGVDbGFzcz47XG5cbi8vIFR5cGUgZGVmaW5pdGlvbiBvYmplY3QgKGludGVybmFsIHByb3BlcnRpZXMpXG5leHBvcnQgdHlwZSBUeXBlRGVmID0ge1xuXHRUeXBlTmFtZTogc3RyaW5nO1xuXHRwcm90bzogb2JqZWN0O1xuXHRpc1N1YlR5cGU6IGJvb2xlYW47XG5cdHN1YnR5cGVzOiBTdWJ0eXBlc01hcDtcblx0Y29sbGVjdGlvbjogQ29sbGVjdGlvbkRlZjtcblx0Y29uZmlnOiBjb25zdHJ1Y3Rvck9wdGlvbnM7XG5cdHBhcmVudFR5cGU/OiBUeXBlRGVmO1xuXHRjb25zdHJ1Y3RIYW5kbGVyOiBNbmVtb25pY2FDb25zdHJ1Y3RvckZhY3Rvcnk7XG5cdHRpdGxlOiBzdHJpbmc7XG5cdGhvb2tzOiBSZWNvcmQ8c3RyaW5nLCBTZXQ8aG9vaz4+O1xuXHRpbnZva2VIb29rOiAoaG9va1R5cGU6IGhvb2tzVHlwZXMsIG9wdHM6IGhvb2tzT3B0cykgPT4gU2V0PHVua25vd24+O1xuXHRwcm90b3R5cGU6IHVua25vd247XG5cdHN0YWNrPzogc3RyaW5nO1xuXHRbU3ltYm9sLmhhc0luc3RhbmNlXTogKGluc3RhbmNlOiBvYmplY3QpID0+IGJvb2xlYW47XG59O1xuXG4vLyBDb2xsZWN0aW9uIGRlZmluaXRpb25cbmV4cG9ydCB0eXBlIENvbGxlY3Rpb25EZWYgPSBIb29rYWJsZSAmIHtcblx0ZGVmaW5lOiBUeXBlQWJzb3JiZXI7XG5cdGxvb2t1cDogVHlwZUxvb2t1cDtcblx0c3VidHlwZXM6IFN1YnR5cGVzTWFwO1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xufTtcblxuLy8gVHlwZSBsb29rdXAgZnVuY3Rpb24gdHlwZTogbWF5IGhhdmUgYXVnbWVudGF0aW9uIGJ5IFRhY3RpY2EgcmUtZGVmaW5pdGlvblxuZXhwb3J0IGludGVyZmFjZSBUeXBlTG9va3VwIGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7XG5cdCh0aGlzOiBNYXA8c3RyaW5nLCB1bmtub3duPiwgVHlwZU5lc3RlZFBhdGg6IHN0cmluZyk6IFR5cGVDbGFzcyB8IHVuZGVmaW5lZDtcbn1cblxuLy8gU3BlY2lmaWNhdGlvbiBmb3IgY2hhaW5lZCBzdWJ0eXBlIGNyZWF0aW9uIHdpdGggLnRoZW4oKVxuZXhwb3J0IGludGVyZmFjZSBUaGVuU3BlYyB7XG5cdHN1YnR5cGU6IG9iamVjdDtcblx0YXJnczogdW5rbm93bltdO1xuXHRuYW1lPzogc3RyaW5nO1xufVxuXG4vLyBDb250ZXh0IG9iamVjdCBwYXNzZWQgdGhyb3VnaCB0aGUgSW5zdGFuY2VDcmVhdG9yIHBpcGVsaW5lXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlQ3JlYXRvckNvbnRleHQge1xuXHR0eXBlOiBUeXBlRGVmO1xuXHRUeXBlTmFtZTogc3RyaW5nO1xuXHRleGlzdGVudEluc3RhbmNlOiBvYmplY3Q7XG5cdGFyZ3M6IHVua25vd25bXTtcblx0TW9kaWZpY2F0aW9uQ29uc3RydWN0b3I6IE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yO1xuXHRNb2RpZmljYXRvclR5cGU6IE1uZW1vbmljYUNvbnN0cnVjdG9yO1xuXHRJbnN0YW5jZU1vZGlmaWNhdG9yOiBNbmVtb25pY2FDb25zdHJ1Y3Rvcjtcblx0aW5oZXJpdGVkSW5zdGFuY2U6IG9iamVjdCB8IFByb21pc2U8b2JqZWN0Pjtcblx0Y29uZmlnOiBjb25zdHJ1Y3Rvck9wdGlvbnM7XG5cdHByb3RvOiBvYmplY3Q7XG5cdF9fcHJvdG9fcHJvdG9fXz86IG9iamVjdDtcblx0c3RhY2s/OiBzdHJpbmdbXTtcblxuXHRnZXRFeGlzdGVudEFzeW5jU3RhY2soZXhpc3RlbnRJbnN0YW5jZTogb2JqZWN0KTogdW5rbm93bjtcblx0cG9zdFByb2Nlc3NpbmcoY29udGludWF0aW9uT2Y/OiBUeXBlRGVmKTogdm9pZDtcblx0bWFrZUF3YWl0ZXIodHlwZTogVHlwZURlZiwgdGhlbj86IFRoZW5TcGVjKTogUHJvbWlzZTxvYmplY3Q+O1xuXHRhZGRUaGVuKHRoZW46IFRoZW5TcGVjKTogdm9pZDtcblx0aW52b2tlUHJlSG9va3MoKTogdm9pZDtcblx0aW52b2tlUG9zdEhvb2tzKCk6IHsgdHlwZTogU2V0PHVua25vd24+OyBjb2xsZWN0aW9uOiBTZXQ8dW5rbm93bj4gfTtcblx0dGhyb3dNb2RpZmljYXRpb25FcnJvcihlcnJvcjogTW5lbW9uaWNhRXJyb3IpOiB2b2lkO1xufVxuXG4vKipcbiAqIFByb3RvIG1lcmdlIHR5cGUgLSBjb21iaW5lcyBwYXJlbnQgYW5kIGNoaWxkIHR5cGVzIHdpdGhvdXQgcHJvcGVydHkgY29uZmxpY3RzLlxuICpcbiAqIFdoZW4gYSBzdWJ0eXBlIGlzIGRlZmluZWQgZnJvbSBhIHBhcmVudCBpbnN0YW5jZSwgd2Ugd2FudCB0aGUgY2hpbGQgcHJvcGVydGllc1xuICogdG8gdGFrZSBwcmVjZWRlbmNlLiBgRXhjbHVkZTxrZXlvZiBQLCBrZXlvZiBUPmAgcmVtb3ZlcyBvdmVybGFwcGluZyBrZXlzIGZyb20gUCxcbiAqIHNvIGBQaWNrPFAsIC4uLj5gIG9ubHkgYnJpbmdzIGluIHBhcmVudCBwcm9wZXJ0aWVzIHRoYXQgZG9uJ3QgY2xhc2ggd2l0aCBjaGlsZC5cbiAqXG4gKiBSZXN1bHQ6IGNoaWxkIFQgZ2V0cyBhbGwgaXRzIG93biBwcm9wcywgcGx1cyBwYXJlbnQncyBub24tb3ZlcmxhcHBpbmcgcHJvcHMuXG4gKi9cbmV4cG9ydCB0eXBlIFByb3RvPFAgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3Q+ID0gVCAmIFBpY2s8UCwgRXhjbHVkZTxrZXlvZiBQLCBrZXlvZiBUPj47XG5cblxuLy8gZXhwb3J0IHR5cGUgUHJvdG9GbGF0PFxuLy8gXHRQIGV4dGVuZHMgb2JqZWN0LFxuLy8gXHRUIGV4dGVuZHMgb2JqZWN0LFxuLy8gXHRGIGV4dGVuZHMgUHJvdG88UCwgVD4gPSBQcm90bzxQLCBUPlxuLy8gPiA9IHsgW2tleSBpbiBrZXlvZiBGXTogRltrZXldfSA7XG5cbmV4cG9ydCB0eXBlIFByb3RvRmxhdDxcblx0UCBleHRlbmRzIG9iamVjdCxcblx0VCBleHRlbmRzIG9iamVjdCxcblx0TCBleHRlbmRzIEV4Y2x1ZGU8a2V5b2YgUCwga2V5b2YgVD4gPSBFeGNsdWRlPGtleW9mIFAsIGtleW9mIFQ+LFxuPiA9IHtcbiAgICBba2V5IGluIGtleW9mIFRdOiBUW2tleV07XG59ICYge1xuXHRba2V5IGluIExdOiBQW2tleV07XG59O1xuXG5leHBvcnQgdHlwZSBGbGF0dGVuPEY+ID0geyBba2V5IGluIGtleW9mIEZdOiBGW2tleV0gfVxuXG4vLyBTaWJsaW5nIHR5cGUgYWNjZXNzb3JcbmV4cG9ydCBpbnRlcmZhY2UgU2libGluZ0FjY2Vzc29yIHtcblx0KFNpYmxpbmdUeXBlTmFtZTogc3RyaW5nKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkO1xuXHRba2V5OiBzdHJpbmddOiBUeXBlQ2xhc3MgfCB1bmRlZmluZWQ7XG59XG5cbi8vIE1uZW1vbmljYSBpbnN0YW5jZSBtZXRob2RzIGludGVyZmFjZVxuLy8gVGhlc2UgbWV0aG9kcyBhcmUgYWx3YXlzIGF2YWlsYWJsZSBvbiB0aGUgcHJvdG90eXBlIGNoYWluXG4vLyBidXQgY2FuIGJlIGhpZGRlbiBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgdmlhIGV4cG9zZUluc3RhbmNlTWV0aG9kcyBvcHRpb25cbmV4cG9ydCBpbnRlcmZhY2UgTW5lbW9uaWNhSW5zdGFuY2Uge1xuXHRleHRyYWN0KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRwaWNrKC4uLmtleXM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdHBpY2soa2V5czogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0cGFyZW50KCk6IG9iamVjdCB8IHVuZGVmaW5lZDtcblx0cGFyZW50KGNvbnN0cnVjdG9yTG9va3VwUGF0aDogc3RyaW5nKTogb2JqZWN0IHwgdW5kZWZpbmVkO1xuXHRyZWFkb25seSBjbG9uZTogb2JqZWN0O1xuXHRmb3JrKC4uLmZvcmtBcmdzOiB1bmtub3duW10pOiBvYmplY3Q7XG5cdGV4Y2VwdGlvbihlcnJvcjogRXJyb3IsIC4uLmFyZ3M6IHVua25vd25bXSk6IEVycm9yO1xuXHRyZWFkb25seSBzaWJsaW5nOiBTaWJsaW5nQWNjZXNzb3I7XG59XG5cbi8vIEluc3RhbmNlIHByb3BlcnRpZXMgZm9yIF9fc2VsZl9fIHJlZmVyZW5jZVxuLy8gVGhpcyBtZXJnZXMgaW50ZXJuYWwgcHJvcHMgd2l0aCB0aGUgaW5zdGFuY2UgbWV0aG9kc1xuLy8gSW50ZXJuYWwgaW5zdGFuY2UgcHJvcGVydGllcyAobm9uLWVudW1lcmFibGUpXG4vLyBUaGVzZSBhcmUgYWx3YXlzIHByZXNlbnQgb24gaW5zdGFuY2VzIGJ1dCBhY2Nlc3NlZCB2aWEgZ2V0UHJvcHMvc2V0UHJvcHNcbmV4cG9ydCB0eXBlIEluc3RhbmNlSW50ZXJuYWxQcm9wcyA9IHtcblx0X19wcm90b19wcm90b19fOiBvYmplY3Q7XG5cdF9fYXJnc19fOiB1bmtub3duW107XG5cdF9fY29sbGVjdGlvbl9fOiBDb2xsZWN0aW9uRGVmO1xuXHRfX3N1YnR5cGVzX186IE1hcDxzdHJpbmcsIG9iamVjdD47XG5cdF9fdHlwZV9fOiBUeXBlRGVmO1xuXHRfX3BhcmVudF9fOiBvYmplY3Q7XG5cdF9fc3RhY2tfXz86IHN0cmluZztcblx0X19jcmVhdG9yX186IEluc3RhbmNlQ3JlYXRvckNvbnRleHQ7XG5cdF9fdGltZXN0YW1wX186IG51bWJlcjtcbn07XG5cbi8vIENvbWJpbmVkIFByb3BzIHR5cGUgZm9yIGludGVybmFsIHVzZSBpbnNpZGUgLi9zcmNcbmV4cG9ydCB0eXBlIFByb3BzID0gSW5zdGFuY2VJbnRlcm5hbFByb3BzICYge1xuXHRfX3NlbGZfXzogSW5zdGFuY2VJbnRlcm5hbFByb3BzICYgTW5lbW9uaWNhSW5zdGFuY2U7XG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG59O1xuXG4vLyBIZWxwZXIgdHlwZTogdHJ1ZSB3aGVuIGV4cG9zZUluc3RhbmNlTWV0aG9kcyBpcyBleHBsaWNpdGx5IGZhbHNlXG5leHBvcnQgdHlwZSBJc0hpZGluZ01ldGhvZHM8Q29uZmlnIGV4dGVuZHMgY29uc3RydWN0b3JPcHRpb25zPiA9XG4gIENvbmZpZyBleHRlbmRzIHsgZXhwb3NlSW5zdGFuY2VNZXRob2RzOiBmYWxzZSB9ID8gdHJ1ZSA6IGZhbHNlO1xuXG4vLyBDb21iaW5lZCBpbnN0YW5jZSB0eXBlIGJhc2VkIG9uIGNvbmZpZzpcbi8vICAgaGlkaW5nIOKGkiBGbGF0dGVuPE4+ICh1c2VyIHByb3BzIG9ubHkpXG4vLyAgIHNob3dpbmcg4oaSIEZsYXR0ZW48Tj4gJiBNbmVtb25pY2FJbnN0YW5jZSAodXNlciBwcm9wcyArIGV4dHJhY3QvZm9yay9ldGMuKVxuZXhwb3J0IHR5cGUgSW5zdGFuY2VSZXN1bHQ8XG4gIE4gZXh0ZW5kcyBvYmplY3QsXG4gIENvbmZpZyBleHRlbmRzIGNvbnN0cnVjdG9yT3B0aW9ucyxcbj4gPSBJc0hpZGluZ01ldGhvZHM8Q29uZmlnPiBleHRlbmRzIHRydWUgPyBGbGF0dGVuPE4+IDogRmxhdHRlbjxOPiAmIE1uZW1vbmljYUluc3RhbmNlO1xuXG4vLyBEZWZpbml0b3IgaW5zdGFuY2UgLSB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24gcmV0dXJuZWQgYnkgZGVmaW5lXG4vLyBOID0gaW5zdGFuY2UgdHlwZSAocHJvcGVydGllcyBhdmFpbGFibGUgb24gaW5zdGFuY2VzKVxuLy8gUyA9IHN1YnR5cGVzIG1hcFxuLy8gQ29uZmlnID0gY29uc3RydWN0b3Igb3B0aW9ucyBjb250cm9sbGluZyB0eXBlIHZpc2liaWxpdHlcbmV4cG9ydCBpbnRlcmZhY2UgSURlZmluaXRvckluc3RhbmNlPFxuXHROIGV4dGVuZHMgb2JqZWN0LFxuXHRDb25maWcgZXh0ZW5kcyBjb25zdHJ1Y3Rvck9wdGlvbnMgPSBjb25zdHJ1Y3Rvck9wdGlvbnMsXG5cdFIgZXh0ZW5kcyBJbnN0YW5jZVJlc3VsdDxOLCBDb25maWc+ID0gSW5zdGFuY2VSZXN1bHQ8TiwgQ29uZmlnPlxuPiB7XG5cblx0VHlwZU5hbWU6IHN0cmluZztcblx0cHJvdG90eXBlOiBOO1xuXG5cdFxuXHQvLyB0aGUgbGluZSBiZWxvdyBkZWNsYXJlcyBhIGBuZXcgLi4uYCBpbnZvY2F0aW9uLFxuXHQvLyBzbyBtYWtlcyBpbnRlcmZhY2UgY29uc3RydWN0aWJsZVxuXHQvLyBuZXcoLi4uYXJnczogdW5rbm93bltdKTogeyBba2V5IGluIGtleW9mIFJdOiBSW2tleV0gfTtcblx0bmV3KC4uLmFyZ3M6IHVua25vd25bXSk6IFI7XG5cblx0XG5cdC8vIFRPRE86IG5lZWQgY2hlY2sgaWYgbGluZSBiZWxvdyB3b3Jrc1xuXHQvLyBhbHNvIFRTIGhpbnRpbmcgY2hlY2sgYXMgd2VsbFxuXHQvLyB0aGUgbGluZSBiZWxvdyBzaG91bGQgbWFrZSBpcyBhIEBkZWNvcmF0ZSBkZWNvcmF0b3Igd29ya2luZ1xuXHQoLi4uYXJnczogdW5rbm93bltdKTogSURlZmluaXRvckluc3RhbmNlPFIsIENvbmZpZz47XG5cblxuXHQvLyBEZWZpbmUgbWV0aG9kIHRoYXQgY29tYmluZXMgcGFyZW50IE4gd2l0aCBuZXcgdHlwZSBUIHVzaW5nIFByb3RvXG5cdGRlZmluZTxcblx0XHRUIGV4dGVuZHMgb2JqZWN0LFxuXG5cdFx0Ly8gdGhpcyB3aWxsIGJlIGluc3RhbmNlIHR5cGUgZm9yIHN1Yi10eXBlICEhIVxuXHRcdC8vIEYgZXh0ZW5kcyBGbGF0dGVuPFByb3RvPE4sIFQ+PlxuXHRcdEYgZXh0ZW5kcyBQcm90bzxOLCBUPlxuXHQ+KFxuXHRcdFR5cGVPclR5cGVOYW1lOiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZz86IElERUY8VD4gfCBvYmplY3QgfCBib29sZWFuIHwgQ2FsbGFibGVGdW5jdGlvbixcblx0XHRjb25maWdPclVuZGVmaW5lZD86IGNvbnN0cnVjdG9yT3B0aW9ucyB8IENhbGxhYmxlRnVuY3Rpb24gfCBib29sZWFuXG5cdCk6IElEZWZpbml0b3JJbnN0YW5jZTxGLCBDb25maWc+O1xuXHRcblx0bG9va3VwOiBUeXBlTG9va3VwO1xuXHRcblx0cmVnaXN0ZXJIb29rKGhvb2tUeXBlOiBob29rc1R5cGVzLCBjYjogaG9vayk6IHZvaWQ7XG5cdFxuXHRcblx0c3VidHlwZXM6IFN1YnR5cGVzTWFwO1xuXHRcblx0Ly8gSW50ZXJuYWwgcHJvcGVydGllcyBhY2Nlc3NlZCBieSB0ZXN0c1xuXHRfX3R5cGVfXz86IFR5cGVEZWY7XG5cdGNvbGxlY3Rpb24/OiBDb2xsZWN0aW9uRGVmO1xuXG5cdC8qXG5cdC8vIEFsbG93IGR5bmFtaWMgcHJvcGVydHkgYWNjZXNzIGZvciBzdWJ0eXBlc1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xuXHQqL1xufVxuXG4vLyBUeXBlIGFic29yYmVyIGZ1bmN0aW9uIHR5cGUgLSB1c2VkIGZvciBkZWZpbmluZyBzdWJ0eXBlc1xuLy8gU3VwcG9ydHMgbXVsdGlwbGUgY2FsbGluZyBjb252ZW50aW9uczpcbi8vIDEuIE1vZGVybjogZGVmaW5lKFR5cGVOYW1lLCBjb25zdHJ1Y3RIYW5kbGVyLCBjb25maWc/KVxuLy8gMi4gTGVnYWN5OiBkZWZpbmUoY29uc3RydWN0SGFuZGxlciwgY29uZmlnPykgLSBUeXBlTmFtZSBmcm9tIGNvbnN0cnVjdG9yIG5hbWVcbi8vIDMuIE5lc3RlZDogcGFyZW50VHlwZS5kZWZpbmUoVHlwZU5hbWUsIGNvbnN0cnVjdEhhbmRsZXIsIGNvbmZpZz8pXG4vLyBVc2luZyBpbnRlcmZhY2Ugd2l0aCBvdmVybG9hZHMgdG8gcHJvcGVybHkgaGFuZGxlIGV4cG9zZUluc3RhbmNlTWV0aG9kcyBvcHRpb25cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZUFic29yYmVyIGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7XG5cdC8vIE92ZXJsb2FkOiB3aXRoIGV4cG9zZUluc3RhbmNlTWV0aG9kczogZmFsc2UgLSBoaWRlIGluc3RhbmNlIG1ldGhvZHNcblx0PFQgZXh0ZW5kcyBvYmplY3Q+KFxuXHRcdHRoaXM6IHVua25vd24sXG5cdFx0VHlwZU9yVHlwZU5hbWU6IHN0cmluZyB8IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0Y29uc3RydWN0SGFuZGxlck9yQ29uZmlnOiBJREVGPFQ+IHwgb2JqZWN0IHwgYm9vbGVhbiB8IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0Y29uZmlnT3JVbmRlZmluZWQ6IEhpZGVJbnN0YW5jZU1ldGhvZHNPcHRpb25zXG5cdCk6IElEZWZpbml0b3JJbnN0YW5jZTxULCBIaWRlSW5zdGFuY2VNZXRob2RzT3B0aW9ucz47XG5cdFxuXHQvLyBPdmVybG9hZDogd2l0aG91dCBjb25maWcgb3Igd2l0aCBleHBvc2VJbnN0YW5jZU1ldGhvZHMgbm90IGZhbHNlIC0gc2hvdyBhbGxcblx0PFQgZXh0ZW5kcyBvYmplY3Q+KFxuXHRcdHRoaXM6IHVua25vd24sXG5cdFx0VHlwZU9yVHlwZU5hbWU6IHN0cmluZyB8IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0Y29uc3RydWN0SGFuZGxlck9yQ29uZmlnPzogSURFRjxUPiB8IG9iamVjdCB8IGJvb2xlYW4gfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdGNvbmZpZ09yVW5kZWZpbmVkPzogY29uc3RydWN0b3JPcHRpb25zIHwgQ2FsbGFibGVGdW5jdGlvbiB8IGJvb2xlYW5cblx0KTogSURlZmluaXRvckluc3RhbmNlPFQsIGNvbnN0cnVjdG9yT3B0aW9ucz47XG59XG5cbi8vIFR5cGVzQ29sbGVjdGlvbiBpbnRlcmZhY2UgZm9yIGNyZWF0ZVR5cGVzQ29sbGVjdGlvblxuLy8gVGhpcyByZXByZXNlbnRzIHRoZSBhY3R1YWwgcmV0dXJuIHR5cGUgb2YgY3JlYXRlVHlwZXNDb2xsZWN0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVzQ29sbGVjdGlvbiBleHRlbmRzIEhvb2thYmxlIHtcblx0ZGVmaW5lOiBUeXBlQWJzb3JiZXI7XG5cdGxvb2t1cDogVHlwZUxvb2t1cDtcblx0c3VidHlwZXM6IFN1YnR5cGVzTWFwO1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vLyBTaGFyZWQgaW50ZXJmYWNlIGZvciBvYmplY3RzIHRoYXQgc3VwcG9ydCBob29rcyAoVHlwZURlZiBhbmQgQ29sbGVjdGlvbkRlZilcbmV4cG9ydCBpbnRlcmZhY2UgSG9va2FibGUge1xuXHRob29rczogUmVjb3JkPHN0cmluZywgU2V0PGhvb2s+Pjtcblx0aW52b2tlSG9vayhob29rVHlwZTogaG9va3NUeXBlcywgb3B0czogaG9va3NPcHRzKTogU2V0PHVua25vd24+O1xuXHRyZWdpc3Rlckhvb2soaG9va1R5cGU6IGhvb2tzVHlwZXMsIGNiOiBob29rKTogdm9pZDtcblx0cmVnaXN0ZXJGbG93Q2hlY2tlcihjYjogKG9wdHM6IG9iamVjdCkgPT4gdW5rbm93bik6IHZvaWQ7XG59XG5cbi8vIGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiBmdW5jdGlvbiB0eXBlXG5leHBvcnQgdHlwZSBDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbiA9IChjb25maWc/OiBjb25zdHJ1Y3Rvck9wdGlvbnMpID0+IFR5cGVzQ29sbGVjdGlvbjtcblxuLy8gVHlwZSBjbGFzcyAtIGJhc2UgdHlwZSBjb25zdHJ1Y3RvclxuZXhwb3J0IHR5cGUgVHlwZUNsYXNzID0gSURlZmluaXRvckluc3RhbmNlPG9iamVjdD47XG5cbi8vIE1uZW1vbmljYSBjb25zdHJ1Y3RvciDigJQgdGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGNvbnN0cnVjdEhhbmRsZXIoKVxuLy8gSGFzIFN5bWJvbENvbnN0cnVjdG9yTmFtZSBhdHRhY2hlZCBhbmQgaXMgYm90aCBuZXdhYmxlIGFuZCBjYWxsYWJsZVxuZXhwb3J0IGludGVyZmFjZSBNbmVtb25pY2FDb25zdHJ1Y3RvciBleHRlbmRzIE5ld2FibGVGdW5jdGlvbiB7XG5cdG5ldyAoLi4uYXJnczogdW5rbm93bltdKTogb2JqZWN0O1xuXHQodGhpczogb2JqZWN0LCAuLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duO1xuXHRba2V5OiBzeW1ib2xdOiB1bmtub3duO1xufVxuXG4vLyBUeXBlIGRlc2NyaXB0b3IgaW5zdGFuY2Ug4oCUIGludGVybmFsIHNoYXBlIG9mIFR5cGVEZXNjcmlwdG9yIG9iamVjdHNcbmV4cG9ydCBpbnRlcmZhY2UgVHlwZURlc2NyaXB0b3JEZWZpbmUgZXh0ZW5kcyBDYWxsYWJsZUZ1bmN0aW9uIHtcblx0KFxuXHRcdFR5cGVPclR5cGVOYW1lOiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZz86IENhbGxhYmxlRnVuY3Rpb24gfCBvYmplY3QsXG5cdFx0Y29uZmlnPzogb2JqZWN0XG5cdCk6IFR5cGVDbGFzcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlRGVzY3JpcHRvckxvb2t1cCBleHRlbmRzIENhbGxhYmxlRnVuY3Rpb24ge1xuXHQoVHlwZU5lc3RlZFBhdGg6IHN0cmluZyk6IFR5cGVDbGFzcyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgVHlwZURlc2NyaXB0b3JJbnN0YW5jZSA9IHtcblx0ZGVmaW5lOiBUeXBlRGVzY3JpcHRvckRlZmluZTtcblx0bG9va3VwOiBUeXBlRGVzY3JpcHRvckxvb2t1cDtcblx0c3VidHlwZXM6IE1hcDxzdHJpbmcsIG9iamVjdD47XG5cdFR5cGVOYW1lOiBzdHJpbmc7XG59O1xuXG4vLyBDb25zdHJ1Y3RvciB0eXBlIGZvciBkZWNvcmF0ZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgQ29uc3RydWN0b3I8VCA9IG9iamVjdD4gPSBuZXcgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gVDtcblxuLy8gRGVjb3JhdGVkIGNsYXNzIHR5cGUgLSBpbmNsdWRlcyBjYWxsIHNpZ25hdHVyZSBmb3IgZGVjb3JhdG9yIHBhdHRlcm5cbmV4cG9ydCB0eXBlIERlY29yYXRlZENsYXNzPFQgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+PiA9XG5cdFQgJlxuXHQoPFUgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+Pih0YXJnZXQ6IFUpID0+IERlY29yYXRlZENsYXNzPFU+KSAmIHtcblx0XHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0XHRyZWdpc3Rlckhvb2soaG9va1R5cGU6IGhvb2tzVHlwZXMsIGNiOiBob29rKTogdm9pZDtcblx0XHRsb29rdXA6IFR5cGVMb29rdXA7XG5cdFx0VHlwZU5hbWU6IHN0cmluZztcblx0fTtcblxuLy8gQXBwbHkvQ2FsbC9CaW5kIGZ1bmN0aW9uIHR5cGVzXG5leHBvcnQgdHlwZSBBcHBseUZ1bmN0aW9uID0gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q29uc3RydWN0b3I6IElERUY8VD4sXG5cdGFyZ3M/OiB1bmtub3duW11cbikgPT4gUztcblxuZXhwb3J0IHR5cGUgQ2FsbEZ1bmN0aW9uID0gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q29uc3RydWN0b3I6IElERUY8VD4sXG5cdC4uLmFyZ3M6IHVua25vd25bXVxuKSA9PiBTO1xuXG5leHBvcnQgdHlwZSBCaW5kRnVuY3Rpb24gPSA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDb25zdHJ1Y3RvcjogSURFRjxUPlxuKSA9PiAoLi4uYXJnczogdW5rbm93bltdKSA9PiBTO1xuXG4vLyBVdGlscyBvYmplY3QgdHlwZVxuZXhwb3J0IGludGVyZmFjZSBVdGlsc0NvbGxlY3Rpb24ge1xuXHRleHRyYWN0OiAoaW5zdGFuY2U6IG9iamVjdCkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdHBpY2s6IChpbnN0YW5jZTogb2JqZWN0LCAuLi5hcmdzOiAoc3RyaW5nIHwgc3RyaW5nW10pW10pID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRjb2xsZWN0Q29uc3RydWN0b3JzOiAoaW5zdGFuY2U6IG9iamVjdCwgZmxhdD86IGJvb2xlYW4pID0+IChDYWxsYWJsZUZ1bmN0aW9uIHwgc3RyaW5nKVtdO1xuXHRtZXJnZTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bjtcblx0cGFyc2U6ICh2YWx1ZTogdW5rbm93bikgPT4gb2JqZWN0IHwgdW5kZWZpbmVkO1xuXHRwYXJlbnQ6IChpbnN0YW5jZTogb2JqZWN0LCBzdHJpY3Q/OiBib29sZWFuKSA9PiBvYmplY3QgfCB1bmRlZmluZWQ7XG5cdHRvSlNPTjogKGluc3RhbmNlOiBvYmplY3QpID0+IHN0cmluZztcblx0W2tleTogc3RyaW5nXTogQ2FsbGFibGVGdW5jdGlvbjtcbn1cblxuLy8gTWFpbiBtbmVtb25pY2EgbW9kdWxlIGludGVyZmFjZSAtIHJlcHJlc2VudHMgdGhlIGV4cG9ydGVkIG1vZHVsZSBvYmplY3RcbmV4cG9ydCBpbnRlcmZhY2UgTW5lbW9uaWNhTW9kdWxlIHtcblx0Ly8gQ29yZSBmdW5jdGlvbnNcblx0ZGVmaW5lOiBUeXBlQWJzb3JiZXI7XG5cdGxvb2t1cDogKFR5cGVOZXN0ZWRQYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZDtcblx0YXBwbHk6IEFwcGx5RnVuY3Rpb247XG5cdGNhbGw6IENhbGxGdW5jdGlvbjtcblx0YmluZDogQmluZEZ1bmN0aW9uO1xuXHRkZWNvcmF0ZTogPFUgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+Pih0YXJnZXQ/OiBvYmplY3QsIGNvbmZpZz86IG9iamVjdCkgPT4gRGVjb3JhdGVkQ2xhc3M8VT47XG5cdHJlZ2lzdGVySG9vazogPFQgZXh0ZW5kcyBvYmplY3Q+KENvbnN0cnVjdG9yOiBJREVGPFQ+LCBob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2spID0+IHZvaWQ7XG5cblx0Ly8gRGVzY3JpcHRvcnNcblx0ZGVmYXVsdFR5cGVzOiBUeXBlc0NvbGxlY3Rpb247XG5cblx0Ly8gRXJyb3JzXG5cdEJBU0VfTU5FTU9OSUNBX0VSUk9SOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRXUk9OR19UWVBFX0RFRklOSVRJT046IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdFdST05HX0lOU1RBTkNFX0lOVk9DQVRJT046IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdFdST05HX01PRElGSUNBVElPTl9QQVRURVJOOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRBTFJFQURZX0RFQ0xBUkVEOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRXUk9OR19BUkdVTUVOVFNfVVNFRDogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0V1JPTkdfSE9PS19UWVBFOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRNSVNTSU5HX0NBTExCQUNLX0FSR1VNRU5UOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHQvLyBGTE9XX0NIRUNLRVJfUkVERUZJTklUSU9OOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRNSVNTSU5HX0hPT0tfQ0FMTEJBQ0s6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdFRZUEVOQU1FX01VU1RfQkVfQV9TVFJJTkc6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdEhBTkRMRVJfTVVTVF9CRV9BX0ZVTkNUSU9OOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRPUFRJT05TX0VSUk9SOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRXUk9OR19TVEFDS19DTEVBTkVSOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXG5cdC8vIENvbnN0YW50c1xuXHRNTkVNT05JQ0E6IHN0cmluZztcblx0TU5FTU9TWU5FOiBzdHJpbmc7XG5cdFVSQU5VUzogc3RyaW5nO1xuXHRTeW1ib2xQYXJlbnRUeXBlOiBzeW1ib2w7XG5cdFN5bWJvbENvbnN0cnVjdG9yTmFtZTogc3ltYm9sO1xuXHRTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uOiBzeW1ib2w7XG5cdFN5bWJvbENvbmZpZzogc3ltYm9sO1xuXHRTeW1ib2xHYWlhOiBzeW1ib2w7XG5cdFRZUEVfVElUTEVfUFJFRklYOiBzdHJpbmc7XG5cdEVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZXM7XG5cblx0Ly8gVXRpbHNcblx0dXRpbHM6IFV0aWxzQ29sbGVjdGlvbjtcblx0Z2V0UHJvcHM6IChpbnN0YW5jZTogb2JqZWN0KSA9PiBQcm9wc1R5cGUgfCB1bmRlZmluZWQ7XG5cdHNldFByb3BzOiAoaW5zdGFuY2U6IG9iamVjdCwgdmFsdWVzOiBvYmplY3QpID0+IHN0cmluZ1tdIHwgZmFsc2U7XG5cdGZpbmRTdWJUeXBlRnJvbVBhcmVudDogKGluc3RhbmNlOiBvYmplY3QgfCB1bmRlZmluZWQsIHN1YlR5cGU6IHN0cmluZykgPT4gb2JqZWN0IHwgbnVsbDtcblx0aXNDbGFzczogKGZuOiBDYWxsYWJsZUZ1bmN0aW9uKSA9PiBib29sZWFuO1xuXG5cdC8vIGNyZWF0ZVR5cGVzQ29sbGVjdGlvblxuXHRjcmVhdGVUeXBlc0NvbGxlY3Rpb246IENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uO1xuXG5cdC8vIEFsbG93IGFkZGl0aW9uYWwgcHJvcGVydGllc1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiBcIm9mZlwiICovXG5cbi8vIFByb3BzIHR5cGUgZm9yIGdldFByb3BzL3NldFByb3BzXG5leHBvcnQgdHlwZSBQcm9wc1R5cGUgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLy8gQ29yZSB0eXBlIGRlZmluaXRpb25zIGZvciBtbmVtb25pY2FcblxuLy8gQmFzZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB0eXBlIC0gY2FuIGJlIGEgY2xhc3MgY29uc3RydWN0b3Igb3IgYSBmdW5jdGlvbi5cbi8vIEFyZ3MgZGVmYXVsdHMgdG8gdW5rbm93bltdIHNvIElERUY8VD4gaXMgYmFja3dhcmRzIGNvbXBhdGlibGU7XG4vLyBzdXBwbHkgQXJncyB0byBnZXQgdHlwZWQgY29uc3RydWN0b3IgcGFyYW1zOiBJREVGPE15VHlwZSwgW3N0cmluZywgbnVtYmVyXT5cbmV4cG9ydCB0eXBlIElERUY8VCwgQXJncyBleHRlbmRzIHVua25vd25bXSA9IHVua25vd25bXT4gPSB7IG5ldygpOiBUIH0gfCB7ICh0aGlzOiBULCAuLi5hcmdzOiBBcmdzKTogdm9pZCB9O1xuXG4vLyBFcnJvciBtZXNzYWdlIHR5cGVzIC0gYWxsIGVycm9yIG1lc3NhZ2VzIGFyZSBzdHJpbmdzXG5leHBvcnQgdHlwZSBFcnJvck1lc3NhZ2VLZXkgPVxuXHR8ICdCQVNFX0VSUk9SX01FU1NBR0UnXG5cdHwgJ0hBTkRMRVJfTVVTVF9CRV9BX0ZVTkNUSU9OJ1xuXHR8ICdXUk9OR19UWVBFX0RFRklOSVRJT04nXG5cdHwgJ1dST05HX0lOU1RBTkNFX0lOVk9DQVRJT04nXG5cdHwgJ1dST05HX01PRElGSUNBVElPTl9QQVRURVJOJ1xuXHR8ICdBTFJFQURZX0RFQ0xBUkVEJ1xuXHR8ICdXUk9OR19BUkdVTUVOVFNfVVNFRCdcblx0fCAnV1JPTkdfSE9PS19UWVBFJ1xuXHR8ICdNSVNTSU5HX0hPT0tfQ0FMTEJBQ0snXG5cdHwgJ01JU1NJTkdfQ0FMTEJBQ0tfQVJHVU1FTlQnXG5cdHwgJ09QVElPTlNfRVJST1InXG5cdHwgJ1dST05HX1NUQUNLX0NMRUFORVInO1xuXHQvLyB8ICdUWVBFTkFNRV9NVVNUX0JFX0FfU1RSSU5HJ1xuXHQvLyB8ICdGTE9XX0NIRUNLRVJfUkVERUZJTklUSU9OJ1xuXG4vLyBFcnJvciBtZXNzYWdlcyBvYmplY3QgdHlwZVxuZXhwb3J0IHR5cGUgRXJyb3JNZXNzYWdlcyA9IFJlY29yZDxFcnJvck1lc3NhZ2VLZXksIHN0cmluZz47XG5cbi8vIEhvb2sgY2FsbGJhY2sg4oCUIHBhc3NlZCB0byByZWdpc3Rlckhvb2sgYW5kIGludm9rZWQgYnkgaW52b2tlSG9va1xuZXhwb3J0IGludGVyZmFjZSBob29rIGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7XG5cdChvcHRzOiBob29rc09wdHMpOiB1bmtub3duO1xufVxuXG4vLyBFcnJvciBjb25zdHJ1Y3RvciBmcm9tIGNvbnN0cnVjdEVycm9yIC0gY29uc3RydWN0YWJsZSBmdW5jdGlvbiB3aXRoIHByb3RvdHlwZVxuZXhwb3J0IGludGVyZmFjZSBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yIHtcblx0bmV3KGFkZGl0aW9uPzogc3RyaW5nLCBzdGFjaz86IHN0cmluZyB8IHN0cmluZ1tdKTogRXJyb3I7XG5cdChuYW1lOiBzdHJpbmcpOiBFcnJvcjtcblx0cHJvdG90eXBlOiB7XG5cdFx0Y29uc3RydWN0b3I6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdH07XG59XG5cbi8vIEVycm9ycyB0eXBlcyBtYXAgLSBpbmRleGFibGUgcmVjb3JkIG9mIGVycm9yIGNvbnN0cnVjdG9yc1xuZXhwb3J0IHR5cGUgRXJyb3JzVHlwZXNNYXAgPSBSZWNvcmQ8c3RyaW5nLCBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yPjtcblxuLy8gTW5lbW9uaWNhIGVycm9yIGludGVyZmFjZSBmb3IgZXh0ZW5kZWQgRXJyb3Igb2JqZWN0c1xuZXhwb3J0IGludGVyZmFjZSBNbmVtb25pY2FFcnJvciBleHRlbmRzIEVycm9yIHtcblx0ZXhjZXB0aW9uUmVhc29uPzogRXJyb3I7XG5cdHJlYXNvbnM/OiBFcnJvcltdO1xuXHRzdXJwbHVzPzogRXJyb3JbXTtcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBUeXBlIENvbnN0cnVjdG9yLlxuICogXCJUeXBlXCIgaGVyZSBpcyB1c2VkIGluIHRoZSBDb21wdXRlciBTY2llbmNlIHNlbnNlIOKAlCBhbiBpbnRlcmZhY2UvY29udHJhY3RcbiAqIGRlc2NyaWJpbmcgd2hhdCBhIGNvbnN0cnVjdG9yIG11c3Qgc2F0aXNmeSAoYm90aCBgbmV3YC1hYmxlIGFuZCBjYWxsYWJsZSkuXG4gKiBUQyA9IFR5cGUgQ29uc3RydWN0b3I7IFwiSW50ZXJuYWxcIiBtZWFucyB0aGlzIGlzIHRoZSBsaWJyYXJ5J3Mgb3duIGNvbnN0cnVjdG9yXG4gKiBzaGFwZSwgZGlzdGluY3QgZnJvbSB1c2VyLWZhY2luZyBUeXBlQ29uc3RydWN0b3IgYmVsb3cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0ludGVybmFsX1RDXzxDb25zdHJ1Y3Rvckluc3RhbmNlIGV4dGVuZHMgb2JqZWN0PiB7XG5cdG5ldyguLi5hcmdzOiB1bmtub3duW10pOiBDb25zdHJ1Y3Rvckluc3RhbmNlO1xuXHQodGhpczogQ29uc3RydWN0b3JJbnN0YW5jZSwgLi4uYXJnczogdW5rbm93bltdKTogQ29uc3RydWN0b3JJbnN0YW5jZTtcblx0cmVhZG9ubHkgcHJvdG90eXBlOiBDb25zdHJ1Y3Rvckluc3RhbmNlICYge1xuXHRcdHJlYWRvbmx5IGNvbnN0cnVjdG9yOiBfSW50ZXJuYWxfVENfPENvbnN0cnVjdG9ySW5zdGFuY2U+XG5cdH07XG59XG5cbi8qKlxuICogUHVibGljIGFsaWFzIGZvciBfSW50ZXJuYWxfVENfIOKAlCB0aGUgc2hhcGUgb2YgY29uc3RydWN0b3IgZnVuY3Rpb25zIHJldHVybmVkIGJ5IGBkZWZpbmUoKWAuXG4gKiBBdWdtZW50ZWQgYnkgdGFjdGljYS1nZW5lcmF0ZWQgVHlwZVJlZ2lzdHJ5IHRvIGJlY29tZSB1c2VyLXNwZWNpZmljIHR5cGVzLlxuICogS2VwdCBhcyBhIG5hbWVkIGFsaWFzIChyYXRoZXIgdGhhbiBpbmxpbmluZyBfSW50ZXJuYWxfVENfKSBzbyB0YWN0aWNhIGNhbiByZWZlcmVuY2UgaXRcbiAqIGNsZWFubHkgaW4gZ2VuZXJhdGVkIGRlY2xhcmF0aW9uIGZpbGVzLlxuICovXG5leHBvcnQgdHlwZSBUeXBlQ29uc3RydWN0b3I8Q29uc3RydWN0b3JJbnN0YW5jZSBleHRlbmRzIG9iamVjdD4gPSBfSW50ZXJuYWxfVENfPENvbnN0cnVjdG9ySW5zdGFuY2U+O1xuXG4vLyBIb29rIHR5cGVzXG5leHBvcnQgdHlwZSBob29rc1R5cGVzID0gJ3ByZUNyZWF0aW9uJyB8ICdwb3N0Q3JlYXRpb24nIHwgJ2NyZWF0aW9uRXJyb3InO1xuXG4vLyBIb29rIG9wdGlvbnMgcGFzc2VkIHRvIGhvb2sgY2FsbGJhY2tzXG4vLyBQID0gcGFyZW50IC8gZXhpc3RlbnQgaW5zdGFuY2UgKHByb3RvKVxuLy8gVCA9IGNoaWxkIC8gaW5oZXJpdGVkIGluc3RhbmNlICh0eXBlIGJlaW5nIGNyZWF0ZWQpXG5leHBvcnQgdHlwZSBob29rc09wdHM8UCA9IG9iamVjdCwgVCA9IFA+ID0ge1xuXHRUeXBlTmFtZTogc3RyaW5nO1xuXHR0eXBlOiBUeXBlRGVmO1xuXHRhcmdzOiB1bmtub3duW107XG5cdGV4aXN0ZW50SW5zdGFuY2U6IFA7XG5cdGluaGVyaXRlZEluc3RhbmNlPzogVDtcblx0Y3JlYXRvcj86IHsgdGhyb3dNb2RpZmljYXRpb25FcnJvcihlcnJvcjogRXJyb3IpOiB2b2lkIH07XG59O1xuXG4vLyBDYWxsYmFjayBwYXNzZWQgaW50byBNb2RpZmljYXRpb25Db25zdHJ1Y3RvciB0byBhdHRhY2ggaW50ZXJuYWwgcHJvcHMgdG8gdGhlIHByb3RvdHlwZVxuZXhwb3J0IGludGVyZmFjZSBBZGRQcm9wc0NhbGxiYWNrIGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7XG5cdChwcm90bzogb2JqZWN0KTogdm9pZDtcbn1cblxuLy8gTW9kaWZpY2F0aW9uQ29uc3RydWN0b3I6IHdpcmVzIHByb3RvdHlwZSBjaGFpbiBkdXJpbmcgaW5zdGFuY2UgY3JlYXRpb25cbmV4cG9ydCBpbnRlcmZhY2UgTW9kaWZpY2F0aW9uQ29uc3RydWN0b3IgZXh0ZW5kcyBDYWxsYWJsZUZ1bmN0aW9uIHtcblx0KFxuXHRcdHRoaXM6IG9iamVjdCxcblx0XHRNb2RpZmljYXRvclR5cGU6IE1uZW1vbmljYUNvbnN0cnVjdG9yLFxuXHRcdE1vZGlmaWNhdG9yVHlwZVByb3RvdHlwZTogb2JqZWN0LFxuXHRcdF9hZGRQcm9wczogQWRkUHJvcHNDYWxsYmFja1xuXHQpOiBNbmVtb25pY2FDb25zdHJ1Y3Rvcjtcbn1cblxuLy8gRmFjdG9yeSB0aGF0IHJldHVybnMgYSBNb2RpZmljYXRpb25Db25zdHJ1Y3RvciAodXNlZCBpbiBjb25zdHJ1Y3Rvck9wdGlvbnMpXG5leHBvcnQgaW50ZXJmYWNlIE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yRmFjdG9yeSBleHRlbmRzIENhbGxhYmxlRnVuY3Rpb24ge1xuXHQoKTogTW9kaWZpY2F0aW9uQ29uc3RydWN0b3I7XG59XG5cbi8vIEZhY3RvcnkgdGhhdCByZXR1cm5zIGEgTW5lbW9uaWNhQ29uc3RydWN0b3IgKHN0b3JlZCBpbiBUeXBlRGVmLmNvbnN0cnVjdEhhbmRsZXIpXG5leHBvcnQgaW50ZXJmYWNlIE1uZW1vbmljYUNvbnN0cnVjdG9yRmFjdG9yeSBleHRlbmRzIENhbGxhYmxlRnVuY3Rpb24ge1xuXHQoKTogTW5lbW9uaWNhQ29uc3RydWN0b3I7XG59XG5cbi8vIE1hcmtzIHRoZSB0b3Agb2YgYSBjYXB0dXJlZCBzdGFjayB0cmFjZSAocGFzc2VkIHRvIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlIGFzIGNvbnN0cnVjdG9yT3B0KVxuZXhwb3J0IGludGVyZmFjZSBTdGFja0JvdW5kYXJ5IGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7fVxuXG4vLyBBIHdyYXBwYWJsZSB1dGlsaXR5IG1ldGhvZCDigJQgYW55IGNhbGxhYmxlIHRoYXQgd3JhcFRoaXMoKSBjYW4gcHJveHlcbmV4cG9ydCBpbnRlcmZhY2UgV3JhcHBhYmxlTWV0aG9kIGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7fVxuXG4vLyBDb25zdHJ1Y3RvciBvcHRpb25zIGZvciBkZWZpbmVcbmV4cG9ydCB0eXBlIGNvbnN0cnVjdG9yT3B0aW9ucyA9IHtcblx0Ly8gZXhwbGljaXQgZGVjbGFyYXRpb24gd2Ugd2lzaCB1c2Vcblx0Ly8gYW4gb2xkIHN0eWxlIGJhc2VkIGNvbnN0cnVjdG9yc1xuXHRNb2RpZmljYXRpb25Db25zdHJ1Y3Rvcj86IE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yRmFjdG9yeSxcblx0Ly8gc2hhbGwgb3Igbm90IHdlIHVzZSBzdHJpY3QgY2hlY2tpbmdcblx0Ly8gZm9yIGNyZWF0aW9uIHN1Yi1pbnN0YW5jZXMgT25seSBmcm9tIGN1cnJlbnQgdHlwZVxuXHQvLyBvciB3ZSBtaWdodCB1c2UgdXAtbmVzdGVkIHN1Yi1pbnN0YW5jZXMgZnJvbSBjaGFpblxuXHRzdHJpY3RDaGFpbj86IGJvb2xlYW4sXG5cdC8vIHNob3VsZCB3ZSB1c2UgZm9yY2VkIGVycm9ycyBjaGVja2luZ1xuXHQvLyB0byBtYWtlIGFsbCBpbmhlcml0ZWQgdHlwZXMgZXJyb3JlZFxuXHQvLyBpZiB0aGVyZSBpcyBhbiBlcnJvciBzb21ld2hlcmUgaW4gY2hhaW5cblx0YmxvY2tFcnJvcnM/OiBib29sZWFuLFxuXHQvLyBpZiBpdCBpcyBuZWNlc3NhcnkgdG8gY29sbGVjdCBzdGFja1xuXHQvLyBhcyBhIF9fc3RhY2tfXyBwcm90b3R5cGUgcHJvcGVydHlcblx0Ly8gZHVyaW5nIHRoZSBwcm9jZXNzIG9mIGluc3RhbmNlIGNyZWF0aW9uXG5cdHN1Ym1pdFN0YWNrPzogYm9vbGVhbixcblx0Ly8gYXdhaXQgbmV3IENvbnN0cnVjdG9yKClcblx0Ly8gbXVzdCByZXR1cm4gdmFsdWVcblx0YXdhaXRSZXR1cm4/OiBib29sZWFuLFxuXHQvLyBGb3JjZSBjbGFzcyBtb2RlIChhdXRvLWRldGVjdGVkIGJ5IGRlZmF1bHQpXG5cdGFzQ2xhc3M/OiBib29sZWFuLFxufTtcblxuLy8gU3VidHlwZXMgbWFwIC0gcmVwcmVzZW50cyB0aGUgc3VidHlwZXMgcHJvcGVydHlcbmV4cG9ydCB0eXBlIFN1YnR5cGVzTWFwID0gTWFwPHN0cmluZywgVHlwZUNsYXNzPjtcblxuLy8gVHlwZSBkZWZpbml0aW9uIG9iamVjdCAoaW50ZXJuYWwgcHJvcGVydGllcylcbmV4cG9ydCB0eXBlIFR5cGVEZWYgPSB7XG5cdFR5cGVOYW1lOiBzdHJpbmc7XG5cdHByb3RvOiBvYmplY3Q7XG5cdGlzU3ViVHlwZTogYm9vbGVhbjtcblx0c3VidHlwZXM6IFN1YnR5cGVzTWFwO1xuXHRjb2xsZWN0aW9uOiBDb2xsZWN0aW9uRGVmO1xuXHRjb25maWc6IGNvbnN0cnVjdG9yT3B0aW9ucztcblx0cGFyZW50VHlwZT86IFR5cGVEZWY7XG5cdGNvbnN0cnVjdEhhbmRsZXI6IE1uZW1vbmljYUNvbnN0cnVjdG9yRmFjdG9yeTtcblx0dGl0bGU6IHN0cmluZztcblx0aG9va3M6IFJlY29yZDxzdHJpbmcsIFNldDxob29rPj47XG5cdGludm9rZUhvb2s6IChob29rVHlwZTogaG9va3NUeXBlcywgb3B0czogaG9va3NPcHRzKSA9PiBTZXQ8dW5rbm93bj47XG5cdHByb3RvdHlwZTogdW5rbm93bjtcblx0c3RhY2s/OiBzdHJpbmc7XG5cdFtTeW1ib2wuaGFzSW5zdGFuY2VdOiAoaW5zdGFuY2U6IG9iamVjdCkgPT4gYm9vbGVhbjtcbn07XG5cbi8vIENvbGxlY3Rpb24gZGVmaW5pdGlvblxuZXhwb3J0IHR5cGUgQ29sbGVjdGlvbkRlZiA9IEhvb2thYmxlICYge1xuXHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0bG9va3VwOiBUeXBlTG9va3VwO1xuXHRzdWJ0eXBlczogU3VidHlwZXNNYXA7XG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG59O1xuXG4vLyBUeXBlIGxvb2t1cCBmdW5jdGlvbiB0eXBlOiBtYXkgaGF2ZSBhdWdtZW50YXRpb24gYnkgVGFjdGljYSByZS1kZWZpbml0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVMb29rdXAgZXh0ZW5kcyBDYWxsYWJsZUZ1bmN0aW9uIHtcblx0KHRoaXM6IE1hcDxzdHJpbmcsIHVua25vd24+LCBUeXBlTmVzdGVkUGF0aDogc3RyaW5nKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkO1xufVxuXG4vLyBTcGVjaWZpY2F0aW9uIGZvciBjaGFpbmVkIHN1YnR5cGUgY3JlYXRpb24gd2l0aCAudGhlbigpXG5leHBvcnQgaW50ZXJmYWNlIFRoZW5TcGVjIHtcblx0c3VidHlwZTogb2JqZWN0O1xuXHRhcmdzOiB1bmtub3duW107XG5cdG5hbWU/OiBzdHJpbmc7XG59XG5cbi8vIENvbnRleHQgb2JqZWN0IHBhc3NlZCB0aHJvdWdoIHRoZSBJbnN0YW5jZUNyZWF0b3IgcGlwZWxpbmVcbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VDcmVhdG9yQ29udGV4dCB7XG5cdHR5cGU6IFR5cGVEZWY7XG5cdFR5cGVOYW1lOiBzdHJpbmc7XG5cdGV4aXN0ZW50SW5zdGFuY2U6IG9iamVjdDtcblx0YXJnczogdW5rbm93bltdO1xuXHRNb2RpZmljYXRpb25Db25zdHJ1Y3RvcjogTW9kaWZpY2F0aW9uQ29uc3RydWN0b3I7XG5cdE1vZGlmaWNhdG9yVHlwZTogTW5lbW9uaWNhQ29uc3RydWN0b3I7XG5cdEluc3RhbmNlTW9kaWZpY2F0b3I6IE1uZW1vbmljYUNvbnN0cnVjdG9yO1xuXHRpbmhlcml0ZWRJbnN0YW5jZTogb2JqZWN0IHwgUHJvbWlzZTxvYmplY3Q+O1xuXHRjb25maWc6IGNvbnN0cnVjdG9yT3B0aW9ucztcblx0cHJvdG86IG9iamVjdDtcblx0X19wcm90b19wcm90b19fPzogb2JqZWN0O1xuXHRzdGFjaz86IHN0cmluZ1tdO1xuXG5cdGdldEV4aXN0ZW50QXN5bmNTdGFjayhleGlzdGVudEluc3RhbmNlOiBvYmplY3QpOiB1bmtub3duO1xuXHRwb3N0UHJvY2Vzc2luZyhjb250aW51YXRpb25PZj86IFR5cGVEZWYpOiB2b2lkO1xuXHRtYWtlQXdhaXRlcih0eXBlOiBUeXBlRGVmLCB0aGVuPzogVGhlblNwZWMpOiBQcm9taXNlPG9iamVjdD47XG5cdGFkZFRoZW4odGhlbjogVGhlblNwZWMpOiB2b2lkO1xuXHRpbnZva2VQcmVIb29rcygpOiB2b2lkO1xuXHRpbnZva2VQb3N0SG9va3MoKTogeyB0eXBlOiBTZXQ8dW5rbm93bj47IGNvbGxlY3Rpb246IFNldDx1bmtub3duPiB9O1xuXHR0aHJvd01vZGlmaWNhdGlvbkVycm9yKGVycm9yOiBNbmVtb25pY2FFcnJvcik6IHZvaWQ7XG59XG5cbi8qKlxuICogUHJvdG8gbWVyZ2UgdHlwZSAtIGNvbWJpbmVzIHBhcmVudCBhbmQgY2hpbGQgdHlwZXMgd2l0aG91dCBwcm9wZXJ0eSBjb25mbGljdHMuXG4gKlxuICogV2hlbiBhIHN1YnR5cGUgaXMgZGVmaW5lZCBmcm9tIGEgcGFyZW50IGluc3RhbmNlLCB3ZSB3YW50IHRoZSBjaGlsZCBwcm9wZXJ0aWVzXG4gKiB0byB0YWtlIHByZWNlZGVuY2UuIGBFeGNsdWRlPGtleW9mIFAsIGtleW9mIFQ+YCByZW1vdmVzIG92ZXJsYXBwaW5nIGtleXMgZnJvbSBQLFxuICogc28gYFBpY2s8UCwgLi4uPmAgb25seSBicmluZ3MgaW4gcGFyZW50IHByb3BlcnRpZXMgdGhhdCBkb24ndCBjbGFzaCB3aXRoIGNoaWxkLlxuICpcbiAqIFJlc3VsdDogY2hpbGQgVCBnZXRzIGFsbCBpdHMgb3duIHByb3BzLCBwbHVzIHBhcmVudCdzIG5vbi1vdmVybGFwcGluZyBwcm9wcy5cbiAqL1xuZXhwb3J0IHR5cGUgUHJvdG88UCBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdD4gPSBUICYgUGljazxQLCBFeGNsdWRlPGtleW9mIFAsIGtleW9mIFQ+PjtcblxuXG4vLyBleHBvcnQgdHlwZSBQcm90b0ZsYXQ8XG4vLyBcdFAgZXh0ZW5kcyBvYmplY3QsXG4vLyBcdFQgZXh0ZW5kcyBvYmplY3QsXG4vLyBcdEYgZXh0ZW5kcyBQcm90bzxQLCBUPiA9IFByb3RvPFAsIFQ+XG4vLyA+ID0geyBba2V5IGluIGtleW9mIEZdOiBGW2tleV19IDtcblxuZXhwb3J0IHR5cGUgUHJvdG9GbGF0PFxuXHRQIGV4dGVuZHMgb2JqZWN0LFxuXHRUIGV4dGVuZHMgb2JqZWN0LFxuXHRMIGV4dGVuZHMgRXhjbHVkZTxrZXlvZiBQLCBrZXlvZiBUPiA9IEV4Y2x1ZGU8a2V5b2YgUCwga2V5b2YgVD4sXG4+ID0ge1xuICAgIFtrZXkgaW4ga2V5b2YgVF06IFRba2V5XTtcbn0gJiB7XG5cdFtrZXkgaW4gTF06IFBba2V5XTtcbn07XG5cbi8vIE1uZW1vbmljYSBpbnN0YW5jZSBtZXRob2Qga2V5cy4gVGhlc2UgYXJlIGZpbHRlcmVkIG91dCBvZiBleHRyYWN0ZWQvbWVyZ2VkXG4vLyBmaWVsZC1vbmx5IHZpZXdzIGJlY2F1c2UgdGhleSBiZWxvbmcgdG8gdGhlIHByb3RvdHlwZSwgbm90IHRvIHRoZSB1c2VyJ3Ncbi8vIGVudW1lcmFibGUgZGF0YSBwcm9wZXJ0aWVzLlxuZXhwb3J0IHR5cGUgTW5lbW9uaWNhSW5zdGFuY2VNZXRob2RLZXlzID1cblx0J2V4dHJhY3QnIHwgJ3BpY2snIHwgJ3BhcmVudCcgfCAnY2xvbmUnIHwgJ2ZvcmsnIHwgJ2V4Y2VwdGlvbicgfCAnc2libGluZyc7XG5cbmV4cG9ydCB0eXBlIEZsYXR0ZW48Rj4gPSB7IFtrZXkgaW4ga2V5b2YgRl06IEZba2V5XSB9XG5cbi8vIEV4dHJhY3RlZDxUPjogdGhlIHNoYXBlIHJldHVybmVkIGJ5IHV0aWxzLmV4dHJhY3QoaW5zdGFuY2UpLlxuLy8gSXQgY29udGFpbnMgdGhlIGVudW1lcmFibGUgc3RyaW5nLWtleWVkIHVzZXIgcHJvcGVydGllcyBvZiB0aGUgaW5zdGFuY2UsXG4vLyBvbWl0dGluZyBNbmVtb25pY2FJbnN0YW5jZSBtZXRob2RzIChleHRyYWN0LCBwaWNrLCBwYXJlbnQsIGNsb25lLCBmb3JrLFxuLy8gZXhjZXB0aW9uLCBzaWJsaW5nKS4gT3B0aW9uYWxpdHkgaXMgcHJlc2VydmVkIGZyb20gdGhlIHNvdXJjZSB0eXBlLlxuLy8gVGhlIGAmIHt9YCB0cmljayBmb3JjZXMgVHlwZVNjcmlwdCB0byBleHBhbmQgdGhlIGFsaWFzIGluIGhvdmVyIHRvb2x0aXBzXG4vLyBzbyBpdCByZW5kZXJzIGFzIGEgcGxhaW4gb2JqZWN0IGxpdGVyYWwgaW5zdGVhZCBvZiBcIkV4dHJhY3RlZDx7Li4ufT5cIi5cbmV4cG9ydCB0eXBlIEV4dHJhY3RlZDxUIGV4dGVuZHMgb2JqZWN0PiA9IHtcblx0W0sgaW4ga2V5b2YgVCBhcyBLIGV4dGVuZHMgc3RyaW5nID8gKEsgZXh0ZW5kcyBNbmVtb25pY2FJbnN0YW5jZU1ldGhvZEtleXMgPyBuZXZlciA6IEspIDogbmV2ZXJdOiBUW0tdO1xufSAmIHt9O1xuXG4vLyBQYXJzZWQ8VD46IHRoZSBzaGFwZSByZXR1cm5lZCBieSB1dGlscy5wYXJzZShpbnN0YW5jZSkuXG4vLyBJdCBpcyBhIG9uZS1sZXZlbCBzbmFwc2hvdCBvZiB0aGUgaW5zdGFuY2UncyBwcm90b3R5cGUgY2hhaW4uXG4vLyBgcHJvcHNgIGNvbnRhaW5zIHRoZSBpbnN0YW5jZSdzIGVudW1lcmFibGUgdXNlciBwcm9wZXJ0aWVzO1xuLy8gYGpvaW50YCBjb250YWlucyBlbnVtZXJhYmxlIHByb3BlcnRpZXMgY29waWVkIGZyb20gdGhlIGltbWVkaWF0ZSBwcm90b3R5cGU7XG4vLyBgcGFyZW50YCBpcyB0aGUgbmV4dCBsaW5rIHVwIHRoZSBjaGFpbiAoY3VycmVudGx5IG5vdCByZWN1cnNpdmVseSBwYXJzZWQpLlxuZXhwb3J0IHR5cGUgUGFyc2VkPFQgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHByb3BzOiBFeHRyYWN0ZWQ8VD47XG5cdHNlbGY6IFQ7XG5cdHByb3RvOiBvYmplY3Q7XG5cdGpvaW50OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0cGFyZW50OiBvYmplY3QgfCB1bmRlZmluZWQ7XG59O1xuXG4vLyBTaWJsaW5nIHR5cGUgYWNjZXNzb3JcbmV4cG9ydCBpbnRlcmZhY2UgU2libGluZ0FjY2Vzc29yIHtcblx0KFNpYmxpbmdUeXBlTmFtZTogc3RyaW5nKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkO1xuXHRba2V5OiBzdHJpbmddOiBUeXBlQ2xhc3MgfCB1bmRlZmluZWQ7XG59XG5cbi8vIE1uZW1vbmljYSBpbnN0YW5jZSBtZXRob2RzIGludGVyZmFjZSAob3B0LWluKS5cbi8vIFRoZXNlIG1ldGhvZHMgdXNlZCB0byBiZSBhdXRvLWluamVjdGVkIG9udG8gZXZlcnkgaW5zdGFuY2UuIFRoZXkgYXJlIG5vd1xuLy8gYXZhaWxhYmxlIG9ubHkgd2hlbiBhIHR5cGUgZXhwbGljaXRseSBhZGRzIHRoZW0gdG8gaXRzIHByb3RvdHlwZS5cbi8vIFVzZXJzIGNhbiBzdGlsbCB1c2UgdGhpcyBpbnRlcmZhY2UgdG8gdHlwZSB0aGVpciBvd24gcm9vdC1sZXZlbCBoZWxwZXJzLlxuZXhwb3J0IGludGVyZmFjZSBNbmVtb25pY2FJbnN0YW5jZTxUIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PiB7XG5cdGV4dHJhY3QoKTogRXh0cmFjdGVkPFQ+O1xuXHRwaWNrPEsgZXh0ZW5kcyBrZXlvZiBUPiguLi5rZXlzOiAoSyB8IEtbXSlbXSk6IHsgW1AgaW4gS106IFRbUF0gfSAmIHt9O1xuXHRwaWNrKC4uLmtleXM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdHBhcmVudCgpOiBvYmplY3QgfCB1bmRlZmluZWQ7XG5cdHBhcmVudChjb25zdHJ1Y3Rvckxvb2t1cFBhdGg6IHN0cmluZyk6IG9iamVjdCB8IHVuZGVmaW5lZDtcblx0cmVhZG9ubHkgY2xvbmU6IHRoaXM7XG5cdGZvcmsoLi4uZm9ya0FyZ3M6IHVua25vd25bXSk6IHRoaXM7XG5cdGV4Y2VwdGlvbihlcnJvcjogRXJyb3IsIC4uLmFyZ3M6IHVua25vd25bXSk6IEVycm9yO1xuXHRyZWFkb25seSBzaWJsaW5nOiBTaWJsaW5nQWNjZXNzb3I7XG59XG5cbi8vIEluc3RhbmNlIHByb3BlcnRpZXMgZm9yIF9fc2VsZl9fIHJlZmVyZW5jZVxuLy8gVGhpcyBtZXJnZXMgaW50ZXJuYWwgcHJvcHMgd2l0aCB0aGUgaW5zdGFuY2UgbWV0aG9kc1xuLy8gSW50ZXJuYWwgaW5zdGFuY2UgcHJvcGVydGllcyAobm9uLWVudW1lcmFibGUpXG4vLyBUaGVzZSBhcmUgYWx3YXlzIHByZXNlbnQgb24gaW5zdGFuY2VzIGJ1dCBhY2Nlc3NlZCB2aWEgZ2V0UHJvcHMvc2V0UHJvcHNcbmV4cG9ydCB0eXBlIEluc3RhbmNlSW50ZXJuYWxQcm9wcyA9IHtcblx0X19wcm90b19wcm90b19fOiBvYmplY3Q7XG5cdF9fYXJnc19fOiB1bmtub3duW107XG5cdF9fY29sbGVjdGlvbl9fOiBDb2xsZWN0aW9uRGVmO1xuXHRfX3N1YnR5cGVzX186IE1hcDxzdHJpbmcsIG9iamVjdD47XG5cdF9fdHlwZV9fOiBUeXBlRGVmO1xuXHRfX3BhcmVudF9fOiBvYmplY3Q7XG5cdF9fc3RhY2tfXz86IHN0cmluZztcblx0X19jcmVhdG9yX186IEluc3RhbmNlQ3JlYXRvckNvbnRleHQ7XG5cdF9fdGltZXN0YW1wX186IG51bWJlcjtcbn07XG5cbi8vIENvbWJpbmVkIFByb3BzIHR5cGUgZm9yIGludGVybmFsIHVzZSBpbnNpZGUgLi9zcmNcbmV4cG9ydCB0eXBlIFByb3BzID0gSW5zdGFuY2VJbnRlcm5hbFByb3BzICYge1xuXHRfX3NlbGZfXzogSW5zdGFuY2VJbnRlcm5hbFByb3BzO1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xufTtcblxuLy8gQ29tYmluZWQgaW5zdGFuY2UgdHlwZTogcGxhaW4gb2JqZWN0IHdpdGggdGhlIHVzZXIncyBmaWVsZHMgb25seS5cbi8vIEluc3RhbmNlIG1ldGhvZHMgKGV4dHJhY3QsIHBpY2ssIGZvcmssIGV0Yy4pIGFyZSBubyBsb25nZXIgYXV0by1pbmplY3RlZC5cbi8vIFRoZSBpbmxpbmUgbWFwcGVkIHR5cGUgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBGbGF0dGVuIGFsaWFzIHNvIHRoYXQgaG92ZXJcbi8vIHRvb2x0aXBzIHNob3cgdGhlIGFjdHVhbCBmaWVsZCBvYmplY3QgbGl0ZXJhbCBmaXJzdCwgbm90IFwiRmxhdHRlbjx7Li4ufT5cIi5cbmV4cG9ydCB0eXBlIEluc3RhbmNlUmVzdWx0PFxuICBOIGV4dGVuZHMgb2JqZWN0LFxuPiA9IHsgW0sgaW4ga2V5b2YgTl06IE5bS10gfTtcblxuLy8gRGVmaW5pdG9yIGluc3RhbmNlIC0gdGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGRlZmluZVxuLy8gTiA9IGluc3RhbmNlIHR5cGUgKHByb3BlcnRpZXMgYXZhaWxhYmxlIG9uIGluc3RhbmNlcylcbi8vIFMgPSBzdWJ0eXBlcyBtYXBcbmV4cG9ydCBpbnRlcmZhY2UgSURlZmluaXRvckluc3RhbmNlPFxuXHROIGV4dGVuZHMgb2JqZWN0LFxuXHRSIGV4dGVuZHMgSW5zdGFuY2VSZXN1bHQ8Tj4gPSBJbnN0YW5jZVJlc3VsdDxOPlxuPiB7XG5cblx0VHlwZU5hbWU6IHN0cmluZztcblx0cHJvdG90eXBlOiBOO1xuXG5cdFxuXHQvLyB0aGUgbGluZSBiZWxvdyBkZWNsYXJlcyBhIGBuZXcgLi4uYCBpbnZvY2F0aW9uLFxuXHQvLyBzbyBtYWtlcyBpbnRlcmZhY2UgY29uc3RydWN0aWJsZVxuXHQvLyBuZXcoLi4uYXJnczogdW5rbm93bltdKTogeyBba2V5IGluIGtleW9mIFJdOiBSW2tleV0gfTtcblx0bmV3KC4uLmFyZ3M6IHVua25vd25bXSk6IFI7XG5cblx0XG5cdC8vIFRPRE86IG5lZWQgY2hlY2sgaWYgbGluZSBiZWxvdyB3b3Jrc1xuXHQvLyBhbHNvIFRTIGhpbnRpbmcgY2hlY2sgYXMgd2VsbFxuXHQvLyB0aGUgbGluZSBiZWxvdyBzaG91bGQgbWFrZSBpcyBhIEBkZWNvcmF0ZSBkZWNvcmF0b3Igd29ya2luZ1xuXHQoLi4uYXJnczogdW5rbm93bltdKTogSURlZmluaXRvckluc3RhbmNlPFI+O1xuXG5cblx0Ly8gRGVmaW5lIG1ldGhvZCB0aGF0IGNvbWJpbmVzIHBhcmVudCBOIHdpdGggbmV3IHR5cGUgVCB1c2luZyBQcm90b1xuXHRkZWZpbmU8XG5cdFx0VCBleHRlbmRzIG9iamVjdCxcblxuXHRcdC8vIHRoaXMgd2lsbCBiZSBpbnN0YW5jZSB0eXBlIGZvciBzdWItdHlwZSAhISFcblx0XHQvLyBGIGV4dGVuZHMgRmxhdHRlbjxQcm90bzxOLCBUPj5cblx0XHRGIGV4dGVuZHMgUHJvdG88TiwgVD5cblx0Pihcblx0XHRUeXBlT3JUeXBlTmFtZTogc3RyaW5nIHwgQ2FsbGFibGVGdW5jdGlvbixcblx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWc/OiBJREVGPFQ+IHwgb2JqZWN0IHwgYm9vbGVhbiB8IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0Y29uZmlnT3JVbmRlZmluZWQ/OiBjb25zdHJ1Y3Rvck9wdGlvbnMgfCBDYWxsYWJsZUZ1bmN0aW9uIHwgYm9vbGVhblxuXHQpOiBJRGVmaW5pdG9ySW5zdGFuY2U8Rj47XG5cdFxuXHRsb29rdXA6IFR5cGVMb29rdXA7XG5cdFxuXHRyZWdpc3Rlckhvb2soaG9va1R5cGU6IGhvb2tzVHlwZXMsIGNiOiBob29rKTogdm9pZDtcblx0XG5cdFxuXHRzdWJ0eXBlczogU3VidHlwZXNNYXA7XG5cdFxuXHQvLyBJbnRlcm5hbCBwcm9wZXJ0aWVzIGFjY2Vzc2VkIGJ5IHRlc3RzXG5cdF9fdHlwZV9fPzogVHlwZURlZjtcblx0Y29sbGVjdGlvbj86IENvbGxlY3Rpb25EZWY7XG5cblx0Lypcblx0Ly8gQWxsb3cgZHluYW1pYyBwcm9wZXJ0eSBhY2Nlc3MgZm9yIHN1YnR5cGVzXG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG5cdCovXG59XG5cbi8vIFR5cGUgYWJzb3JiZXIgZnVuY3Rpb24gdHlwZSAtIHVzZWQgZm9yIGRlZmluaW5nIHN1YnR5cGVzXG4vLyBTdXBwb3J0cyBtdWx0aXBsZSBjYWxsaW5nIGNvbnZlbnRpb25zOlxuLy8gMS4gTW9kZXJuOiBkZWZpbmUoVHlwZU5hbWUsIGNvbnN0cnVjdEhhbmRsZXIsIGNvbmZpZz8pXG4vLyAyLiBMZWdhY3k6IGRlZmluZShjb25zdHJ1Y3RIYW5kbGVyLCBjb25maWc/KSAtIFR5cGVOYW1lIGZyb20gY29uc3RydWN0b3IgbmFtZVxuLy8gMy4gTmVzdGVkOiBwYXJlbnRUeXBlLmRlZmluZShUeXBlTmFtZSwgY29uc3RydWN0SGFuZGxlciwgY29uZmlnPylcbmV4cG9ydCBpbnRlcmZhY2UgVHlwZUFic29yYmVyIGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7XG5cdDxUIGV4dGVuZHMgb2JqZWN0Pihcblx0XHR0aGlzOiB1bmtub3duLFxuXHRcdFR5cGVPclR5cGVOYW1lOiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZz86IElERUY8VD4gfCBvYmplY3QgfCBib29sZWFuIHwgQ2FsbGFibGVGdW5jdGlvbixcblx0XHRjb25maWdPclVuZGVmaW5lZD86IGNvbnN0cnVjdG9yT3B0aW9ucyB8IENhbGxhYmxlRnVuY3Rpb24gfCBib29sZWFuXG5cdCk6IElEZWZpbml0b3JJbnN0YW5jZTxUPjtcbn1cblxuLy8gVHlwZXNDb2xsZWN0aW9uIGludGVyZmFjZSBmb3IgY3JlYXRlVHlwZXNDb2xsZWN0aW9uXG4vLyBUaGlzIHJlcHJlc2VudHMgdGhlIGFjdHVhbCByZXR1cm4gdHlwZSBvZiBjcmVhdGVUeXBlc0NvbGxlY3Rpb25cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXNDb2xsZWN0aW9uIGV4dGVuZHMgSG9va2FibGUge1xuXHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0bG9va3VwOiBUeXBlTG9va3VwO1xuXHRzdWJ0eXBlczogU3VidHlwZXNNYXA7XG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbi8vIFNoYXJlZCBpbnRlcmZhY2UgZm9yIG9iamVjdHMgdGhhdCBzdXBwb3J0IGhvb2tzIChUeXBlRGVmIGFuZCBDb2xsZWN0aW9uRGVmKVxuZXhwb3J0IGludGVyZmFjZSBIb29rYWJsZSB7XG5cdGhvb2tzOiBSZWNvcmQ8c3RyaW5nLCBTZXQ8aG9vaz4+O1xuXHRpbnZva2VIb29rKGhvb2tUeXBlOiBob29rc1R5cGVzLCBvcHRzOiBob29rc09wdHMpOiBTZXQ8dW5rbm93bj47XG5cdHJlZ2lzdGVySG9vayhob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2spOiB2b2lkO1xuXHRyZWdpc3RlckZsb3dDaGVja2VyKGNiOiAob3B0czogb2JqZWN0KSA9PiB1bmtub3duKTogdm9pZDtcbn1cblxuLy8gY3JlYXRlVHlwZXNDb2xsZWN0aW9uIGZ1bmN0aW9uIHR5cGVcbmV4cG9ydCB0eXBlIENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uID0gKGNvbmZpZz86IGNvbnN0cnVjdG9yT3B0aW9ucykgPT4gVHlwZXNDb2xsZWN0aW9uO1xuXG4vLyBUeXBlIGNsYXNzIC0gYmFzZSB0eXBlIGNvbnN0cnVjdG9yXG5leHBvcnQgdHlwZSBUeXBlQ2xhc3MgPSBJRGVmaW5pdG9ySW5zdGFuY2U8b2JqZWN0PjtcblxuLy8gTW5lbW9uaWNhIGNvbnN0cnVjdG9yIOKAlCB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24gcmV0dXJuZWQgYnkgY29uc3RydWN0SGFuZGxlcigpXG4vLyBIYXMgU3ltYm9sQ29uc3RydWN0b3JOYW1lIGF0dGFjaGVkIGFuZCBpcyBib3RoIG5ld2FibGUgYW5kIGNhbGxhYmxlXG5leHBvcnQgaW50ZXJmYWNlIE1uZW1vbmljYUNvbnN0cnVjdG9yIGV4dGVuZHMgTmV3YWJsZUZ1bmN0aW9uIHtcblx0bmV3ICguLi5hcmdzOiB1bmtub3duW10pOiBvYmplY3Q7XG5cdCh0aGlzOiBvYmplY3QsIC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd247XG5cdFtrZXk6IHN5bWJvbF06IHVua25vd247XG59XG5cbi8vIFR5cGUgZGVzY3JpcHRvciBpbnN0YW5jZSDigJQgaW50ZXJuYWwgc2hhcGUgb2YgVHlwZURlc2NyaXB0b3Igb2JqZWN0c1xuZXhwb3J0IGludGVyZmFjZSBUeXBlRGVzY3JpcHRvckRlZmluZSBleHRlbmRzIENhbGxhYmxlRnVuY3Rpb24ge1xuXHQoXG5cdFx0VHlwZU9yVHlwZU5hbWU6IHN0cmluZyB8IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0Y29uc3RydWN0SGFuZGxlck9yQ29uZmlnPzogQ2FsbGFibGVGdW5jdGlvbiB8IG9iamVjdCxcblx0XHRjb25maWc/OiBvYmplY3Rcblx0KTogVHlwZUNsYXNzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZXNjcmlwdG9yTG9va3VwIGV4dGVuZHMgQ2FsbGFibGVGdW5jdGlvbiB7XG5cdChUeXBlTmVzdGVkUGF0aDogc3RyaW5nKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgdHlwZSBUeXBlRGVzY3JpcHRvckluc3RhbmNlID0ge1xuXHRkZWZpbmU6IFR5cGVEZXNjcmlwdG9yRGVmaW5lO1xuXHRsb29rdXA6IFR5cGVEZXNjcmlwdG9yTG9va3VwO1xuXHRzdWJ0eXBlczogTWFwPHN0cmluZywgb2JqZWN0Pjtcblx0VHlwZU5hbWU6IHN0cmluZztcbn07XG5cbi8vIENvbnN0cnVjdG9yIHR5cGUgZm9yIGRlY29yYXRlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RvcjxUID0gb2JqZWN0PiA9IG5ldyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBUO1xuXG4vLyBEZWNvcmF0ZWQgY2xhc3MgdHlwZSAtIGluY2x1ZGVzIGNhbGwgc2lnbmF0dXJlIGZvciBkZWNvcmF0b3IgcGF0dGVyblxuZXhwb3J0IHR5cGUgRGVjb3JhdGVkQ2xhc3M8VCBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+ID1cblx0VCAmXG5cdCg8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KHRhcmdldDogVSkgPT4gRGVjb3JhdGVkQ2xhc3M8VT4pICYge1xuXHRcdGRlZmluZTogVHlwZUFic29yYmVyO1xuXHRcdHJlZ2lzdGVySG9vayhob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2spOiB2b2lkO1xuXHRcdGxvb2t1cDogVHlwZUxvb2t1cDtcblx0XHRUeXBlTmFtZTogc3RyaW5nO1xuXHR9O1xuXG4vLyBIZWxwZXI6IG1lcmdlIHBhcmVudCBlbnRpdHkgKEUpIGFuZCBjaGlsZCBjb25zdHJ1Y3RvciBpbnN0YW5jZSAoVCkgaW50byBhXG4vLyBzaW5nbGUgZmxhdCBvYmplY3QgdHlwZSwgZmlsdGVyaW5nIG91dCBNbmVtb25pY2FJbnN0YW5jZSBtZXRob2QgbmFtZXMuXG4vLyBVc2VkIGJ5IGFwcGx5L2NhbGwvYmluZC5cbmV4cG9ydCB0eXBlIE1lcmdlPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuXHRbSyBpbiBrZXlvZiBUIHwga2V5b2YgRSBhcyBLIGV4dGVuZHMgTW5lbW9uaWNhSW5zdGFuY2VNZXRob2RLZXlzID8gbmV2ZXIgOiBLXTpcblx0XHRLIGV4dGVuZHMga2V5b2YgVCA/IFRbS10gOiBFW0sgJiBrZXlvZiBFXTtcbn07XG5cbi8vIEFwcGx5L0NhbGwvQmluZCBmdW5jdGlvbiB0eXBlc1xuLy8gVGhlIHJldHVybiB0eXBlIG1lcmdlcyB0aGUgcGFyZW50IGVudGl0eSBmaWVsZHMgd2l0aCB0aGUgY2hpbGQgY29uc3RydWN0b3Jcbi8vIGZpZWxkcyAoZmlsdGVyaW5nIG91dCBNbmVtb25pY2FJbnN0YW5jZSBtZXRob2QgbmFtZXMpLCBwcm9kdWNpbmcgdGhlIHNhbWVcbi8vIGB7IGZpZWxkcyB9YCBob3ZlciBzdHlsZSBhcyBgbmV3IFR5cGUoKWAuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5RnVuY3Rpb24gZXh0ZW5kcyBDYWxsYWJsZUZ1bmN0aW9uIHtcblx0PEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3Q+KFxuXHRcdGVudGl0eTogRSxcblx0XHRDb25zdHJ1Y3RvcjogSURFRjxUPixcblx0XHRhcmdzPzogdW5rbm93bltdXG5cdCk6IEluc3RhbmNlUmVzdWx0PE1lcmdlPEUsIFQ+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYWxsRnVuY3Rpb24gZXh0ZW5kcyBDYWxsYWJsZUZ1bmN0aW9uIHtcblx0PEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3Q+KFxuXHRcdGVudGl0eTogRSxcblx0XHRDb25zdHJ1Y3RvcjogSURFRjxUPixcblx0XHQuLi5hcmdzOiB1bmtub3duW11cblx0KTogSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRGdW5jdGlvbiBleHRlbmRzIENhbGxhYmxlRnVuY3Rpb24ge1xuXHQ8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdD4oXG5cdFx0ZW50aXR5OiBFLFxuXHRcdENvbnN0cnVjdG9yOiBJREVGPFQ+XG5cdCk6ICguLi5hcmdzOiB1bmtub3duW10pID0+IEluc3RhbmNlUmVzdWx0PE1lcmdlPEUsIFQ+Pjtcbn1cblxuLy8gVXRpbHMgb2JqZWN0IHR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgVXRpbHNDb2xsZWN0aW9uIHtcblx0ZXh0cmFjdDxUIGV4dGVuZHMgb2JqZWN0PihpbnN0YW5jZTogVCk6IEV4dHJhY3RlZDxUPjtcblx0cGljazxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4oaW5zdGFuY2U6IFQsIC4uLmFyZ3M6IChLIHwgS1tdKVtdKTogeyBbUCBpbiBLXTogVFtQXSB9ICYge307XG5cdHBpY2s8VCBleHRlbmRzIG9iamVjdD4oaW5zdGFuY2U6IFQsIC4uLmFyZ3M6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRjbG9uZTxUIGV4dGVuZHMgb2JqZWN0PihpbnN0YW5jZTogVCk6IFQ7XG5cdGZvcms8VCBleHRlbmRzIG9iamVjdD4oaW5zdGFuY2U6IFQpOiAodGhpczogb2JqZWN0LCAuLi5mb3JrQXJnczogdW5rbm93bltdKSA9PiBUO1xuXHRzaWJsaW5nKGluc3RhbmNlOiBvYmplY3QpOiBTaWJsaW5nQWNjZXNzb3I7XG5cdGNvbGxlY3RDb25zdHJ1Y3RvcnM6IChpbnN0YW5jZTogb2JqZWN0LCBmbGF0PzogYm9vbGVhbikgPT4gKENhbGxhYmxlRnVuY3Rpb24gfCBzdHJpbmcpW107XG5cdG1lcmdlPEEgZXh0ZW5kcyBvYmplY3QsIEIgZXh0ZW5kcyBvYmplY3Q+KFxuXHRcdGE6IEEsXG5cdFx0YjogQixcblx0XHQuLi5hcmdzOiB1bmtub3duW11cblx0KTogSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8QiwgQT4+O1xuXHRwYXJzZTxUIGV4dGVuZHMgb2JqZWN0PihzZWxmOiBUKTogUGFyc2VkPFQ+O1xuXHRwYXJlbnQ8VCBleHRlbmRzIG9iamVjdD4oaW5zdGFuY2U6IFQsIHBhdGg/OiBzdHJpbmcpOiBvYmplY3QgfCB1bmRlZmluZWQ7XG5cdHRvSlNPTjxUIGV4dGVuZHMgb2JqZWN0PihpbnN0YW5jZTogVCk6IHN0cmluZztcblx0W2tleTogc3RyaW5nXTogQ2FsbGFibGVGdW5jdGlvbjtcbn1cblxuLy8gTWFpbiBtbmVtb25pY2EgbW9kdWxlIGludGVyZmFjZSAtIHJlcHJlc2VudHMgdGhlIGV4cG9ydGVkIG1vZHVsZSBvYmplY3RcbmV4cG9ydCBpbnRlcmZhY2UgTW5lbW9uaWNhTW9kdWxlIHtcblx0Ly8gQ29yZSBmdW5jdGlvbnNcblx0ZGVmaW5lOiBUeXBlQWJzb3JiZXI7XG5cdGxvb2t1cDogKFR5cGVOZXN0ZWRQYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZDtcblx0YXBwbHk6IEFwcGx5RnVuY3Rpb247XG5cdGNhbGw6IENhbGxGdW5jdGlvbjtcblx0YmluZDogQmluZEZ1bmN0aW9uO1xuXHRkZWNvcmF0ZTogPFQgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+IHwgY29uc3RydWN0b3JPcHRpb25zIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcblx0XHR0YXJnZXQ/OiBULFxuXHRcdGNvbmZpZz86IGNvbnN0cnVjdG9yT3B0aW9uc1xuXHQpID0+IDxVIGV4dGVuZHMgQ29uc3RydWN0b3I8b2JqZWN0Pj4oY3N0cjogVSkgPT4gRGVjb3JhdGVkQ2xhc3M8VT47XG5cdHJlZ2lzdGVySG9vazogPFQgZXh0ZW5kcyBvYmplY3Q+KENvbnN0cnVjdG9yOiBJREVGPFQ+LCBob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2spID0+IHZvaWQ7XG5cblx0Ly8gRGVzY3JpcHRvcnNcblx0ZGVmYXVsdFR5cGVzOiBUeXBlc0NvbGxlY3Rpb247XG5cblx0Ly8gRXJyb3JzXG5cdEJBU0VfTU5FTU9OSUNBX0VSUk9SOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRXUk9OR19UWVBFX0RFRklOSVRJT046IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdFdST05HX0lOU1RBTkNFX0lOVk9DQVRJT046IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdFdST05HX01PRElGSUNBVElPTl9QQVRURVJOOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRBTFJFQURZX0RFQ0xBUkVEOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRXUk9OR19BUkdVTUVOVFNfVVNFRDogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0V1JPTkdfSE9PS19UWVBFOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRNSVNTSU5HX0NBTExCQUNLX0FSR1VNRU5UOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHQvLyBGTE9XX0NIRUNLRVJfUkVERUZJTklUSU9OOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRNSVNTSU5HX0hPT0tfQ0FMTEJBQ0s6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdFRZUEVOQU1FX01VU1RfQkVfQV9TVFJJTkc6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdEhBTkRMRVJfTVVTVF9CRV9BX0ZVTkNUSU9OOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRPUFRJT05TX0VSUk9SOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRXUk9OR19TVEFDS19DTEVBTkVSOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXG5cdC8vIENvbnN0YW50c1xuXHRNTkVNT05JQ0E6IHN0cmluZztcblx0TU5FTU9TWU5FOiBzdHJpbmc7XG5cdFN5bWJvbFBhcmVudFR5cGU6IHN5bWJvbDtcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lOiBzeW1ib2w7XG5cdFN5bWJvbERlZmF1bHRUeXBlc0NvbGxlY3Rpb246IHN5bWJvbDtcblx0U3ltYm9sQ29uZmlnOiBzeW1ib2w7XG5cdFRZUEVfVElUTEVfUFJFRklYOiBzdHJpbmc7XG5cdEVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZXM7XG5cblx0Ly8gVXRpbHNcblx0dXRpbHM6IFV0aWxzQ29sbGVjdGlvbjtcblx0Z2V0UHJvcHM6IChpbnN0YW5jZTogb2JqZWN0KSA9PiBQcm9wc1R5cGUgfCB1bmRlZmluZWQ7XG5cdHNldFByb3BzOiAoaW5zdGFuY2U6IG9iamVjdCwgdmFsdWVzOiBvYmplY3QpID0+IHN0cmluZ1tdIHwgZmFsc2U7XG5cdGZpbmRTdWJUeXBlRnJvbVBhcmVudDogKGluc3RhbmNlOiBvYmplY3QgfCB1bmRlZmluZWQsIHN1YlR5cGU6IHN0cmluZykgPT4gb2JqZWN0IHwgbnVsbDtcblx0aXNDbGFzczogKGZuOiBDYWxsYWJsZUZ1bmN0aW9uKSA9PiBib29sZWFuO1xuXG5cdC8vIGNyZWF0ZVR5cGVzQ29sbGVjdGlvblxuXHRjcmVhdGVUeXBlc0NvbGxlY3Rpb246IENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uO1xuXG5cdC8vIEFsbG93IGFkZGl0aW9uYWwgcHJvcGVydGllc1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuIl19
@@ -0,0 +1 @@
1
+ export declare const clone: <T extends object>(instance: T) => T;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clone = void 0;
4
+ const fork_1 = require("./fork");
5
+ const clone = (instance) => {
6
+ const forkFn = (0, fork_1.fork)(instance);
7
+ const result = forkFn.call(instance);
8
+ return result;
9
+ };
10
+ exports.clone = clone;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY2xvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixpQ0FBOEI7QUFFdkIsTUFBTSxLQUFLLEdBQUcsQ0FBbUIsUUFBVyxFQUFLLEVBQUU7SUFFekQsTUFBTSxNQUFNLEdBQUcsSUFBQSxXQUFJLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQU0sQ0FBQztJQUMxQyxPQUFPLE1BQU0sQ0FBQztBQUVmLENBQUMsQ0FBQztBQU5XLFFBQUEsS0FBSyxTQU1oQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgZm9yayB9IGZyb20gJy4vZm9yayc7XG5cbmV4cG9ydCBjb25zdCBjbG9uZSA9IDxUIGV4dGVuZHMgb2JqZWN0PihpbnN0YW5jZTogVCk6IFQgPT4ge1xuXG5cdGNvbnN0IGZvcmtGbiA9IGZvcmsoaW5zdGFuY2UpO1xuXHRjb25zdCByZXN1bHQgPSBmb3JrRm4uY2FsbChpbnN0YW5jZSkgYXMgVDtcblx0cmV0dXJuIHJlc3VsdDtcblxufTtcbiJdfQ==
@@ -4,15 +4,17 @@ exports.collectConstructors = void 0;
4
4
  const constants_1 = require("../constants");
5
5
  const { MNEMOSYNE, MNEMONICA, } = constants_1.constants;
6
6
  const getAdditor = (constructors) => {
7
- return Array.isArray(constructors) ?
7
+ const result = Array.isArray(constructors) ?
8
8
  (name) => {
9
9
  constructors.push(name);
10
10
  } : (name) => {
11
11
  constructors[name] = true;
12
12
  };
13
+ return result;
13
14
  };
14
15
  const getAccumulator = (asSequence) => {
15
- return asSequence ? [] : {};
16
+ const result = asSequence ? [] : {};
17
+ return result;
16
18
  };
17
19
  const collectConstructors = (self, asSequence = false) => {
18
20
  const constructors = getAccumulator(asSequence);
@@ -58,4 +60,4 @@ const collectConstructors = (self, asSequence = false) => {
58
60
  return constructors;
59
61
  };
60
62
  exports.collectConstructors = collectConstructors;
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdENvbnN0cnVjdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb2xsZWN0Q29uc3RydWN0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsNENBQXlDO0FBRXpDLE1BQU0sRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUVULEdBQUcscUJBQVMsQ0FBQztBQUVkLE1BQU0sVUFBVSxHQUFHLENBQUMsWUFBcUQsRUFBRSxFQUFFO0lBQzVFLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDaEIsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7UUFDcEIsWUFBWSxDQUFFLElBQUksQ0FBRSxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDLENBQUM7QUFFSixDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQW1CLEVBQUUsRUFBRTtJQUM5QyxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDN0IsQ0FBQyxDQUFDO0FBRUssTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQVksRUFBRSxVQUFVLEdBQUcsS0FBSyxFQUFFLEVBQUU7SUFFdkUsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUUvQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ25CLE9BQU8sWUFBWSxDQUFDO1FBQ3JCLENBQUM7SUFDRixDQUFDO1NBQU0sQ0FBQztRQUNQLE9BQU8sWUFBWSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEtBQUssR0FBWSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWxELElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQzdCLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZCxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUMvQyxJQUFJLGVBQWUsS0FBSyxTQUFTLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUM3QixLQUFLLEVBQ0wsYUFBYSxDQUNiLEVBQUUsQ0FBQztvQkFDSCxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQy9CLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDekIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixDQUFDO1lBQ0YsQ0FBQztpQkFBTSxJQUFJLGVBQWUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDekMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUMvQixNQUFNO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0YsQ0FBQztRQUVELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QixNQUFNO1FBQ1AsQ0FBQztRQUVELElBQUksR0FBRyxLQUFLLENBQUM7UUFDYixLQUFLLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQixhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUN4QyxNQUFNO1FBQ1AsQ0FBQztJQVdGLENBQUM7SUFDRCxPQUFPLFlBQVksQ0FBQztBQUNyQixDQUFDLENBQUM7QUExRFcsUUFBQSxtQkFBbUIsdUJBMEQ5QiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuY29uc3Qge1xuXHRNTkVNT1NZTkUsXG5cdE1ORU1PTklDQSxcblx0Ly8gU3ltYm9sQ29uc3RydWN0b3JOYW1lXG59ID0gY29uc3RhbnRzO1xuXG5jb25zdCBnZXRBZGRpdG9yID0gKGNvbnN0cnVjdG9yczogc3RyaW5nW10gfCB7IFtpbmRleDogc3RyaW5nXTogYm9vbGVhbiB9KSA9PiB7XG5cdHJldHVybiBBcnJheS5pc0FycmF5KGNvbnN0cnVjdG9ycykgP1xuXHRcdChuYW1lOiBzdHJpbmcpID0+IHtcblx0XHRcdGNvbnN0cnVjdG9ycy5wdXNoKG5hbWUpO1xuXHRcdH0gOiAobmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0XHRjb25zdHJ1Y3RvcnNbIG5hbWUgXSA9IHRydWU7XG5cdFx0fTtcblxufTtcblxuY29uc3QgZ2V0QWNjdW11bGF0b3IgPSAoYXNTZXF1ZW5jZTogYm9vbGVhbikgPT4ge1xuXHRyZXR1cm4gYXNTZXF1ZW5jZSA/IFtdIDoge307XG59O1xuXG5leHBvcnQgY29uc3QgY29sbGVjdENvbnN0cnVjdG9ycyA9IChzZWxmOiBvYmplY3QsIGFzU2VxdWVuY2UgPSBmYWxzZSkgPT4ge1xuXG5cdGNvbnN0IGNvbnN0cnVjdG9ycyA9IGdldEFjY3VtdWxhdG9yKGFzU2VxdWVuY2UpO1xuXHRjb25zdCBhZGRUb1NlcXVlbmNlID0gZ2V0QWRkaXRvcihjb25zdHJ1Y3RvcnMpO1xuXG5cdGlmICh0eXBlb2Ygc2VsZiA9PT0gJ29iamVjdCcpIHtcblx0XHRpZiAoc2VsZiA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGNvbnN0cnVjdG9ycztcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGNvbnN0cnVjdG9ycztcblx0fVxuXG5cdGxldCBwcm90bzogdW5rbm93biA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2Yoc2VsZik7XG5cblx0bGV0IG1uZW1vbmljYVJlYWNoZWQgPSBmYWxzZTtcblx0d2hpbGUgKHByb3RvKSB7XG5cdFx0aWYgKHByb3RvLmNvbnN0cnVjdG9yKSB7XG5cdFx0XHRjb25zdCBjb25zdHJ1Y3Rvck5hbWUgPSBwcm90by5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdFx0aWYgKGNvbnN0cnVjdG9yTmFtZSA9PT0gTU5FTU9OSUNBICYmICFtbmVtb25pY2FSZWFjaGVkKSB7XG5cdFx0XHRcdGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChcblx0XHRcdFx0XHRwcm90byxcblx0XHRcdFx0XHQnY29uc3RydWN0b3InXG5cdFx0XHRcdCkpIHtcblx0XHRcdFx0XHRhZGRUb1NlcXVlbmNlKGNvbnN0cnVjdG9yTmFtZSk7XG5cdFx0XHRcdFx0YWRkVG9TZXF1ZW5jZShNTkVNT1NZTkUpO1xuXHRcdFx0XHRcdG1uZW1vbmljYVJlYWNoZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnN0cnVjdG9yTmFtZSA9PT0gJ09iamVjdCcpIHtcblx0XHRcdFx0YWRkVG9TZXF1ZW5jZShjb25zdHJ1Y3Rvck5hbWUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFkZFRvU2VxdWVuY2UoY29uc3RydWN0b3JOYW1lKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAobW5lbW9uaWNhUmVhY2hlZCkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdFxuXHRcdHNlbGYgPSBwcm90bztcblx0XHRwcm90byA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2Yoc2VsZik7XG5cdFx0aWYgKHByb3RvID09PSBudWxsKSB7XG5cdFx0XHRhZGRUb1NlcXVlbmNlKCdPYmplY3Q6IG51bGwgcHJvdG90eXBlJyk7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0Lypcblx0XHRUT0RPOiBzaG93IGZ1bGwgY2hhaW4gYW5kIHRlc3QgaXQgISEhXG5cdFx0ZWxzZSB7XG5cdFx0XHQvLyBwcm90byBtYXkgYmUgZWl0aGVyIGVtcHR5IG9iamVjdCBvciBudWxsXG5cdFx0XHQvLyBzbyB0eXBlb2Ygd2lsbCBhbHdheXMgYmUgJ29iamVjdCdcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb25lbHktaWZcblx0XHRcdGFkZFRvU2VxdWVuY2UoJy4uLiBwbGFpbiBvYmplY3QgLi4uJyk7XG5cdFx0fVxuXHRcdCovXG5cdFx0Ly8gc28gaGVyZSB3ZSBnbyBkZWVwZXIgdG8gdGhlIGNoYWluXG5cdH1cblx0cmV0dXJuIGNvbnN0cnVjdG9ycztcbn07XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdENvbnN0cnVjdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb2xsZWN0Q29uc3RydWN0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsNENBQXlDO0FBRXpDLE1BQU0sRUFDTCxTQUFTLEVBQ1QsU0FBUyxHQUVULEdBQUcscUJBQVMsQ0FBQztBQUVkLE1BQU0sVUFBVSxHQUFHLENBQUMsWUFBcUQsRUFBRSxFQUFFO0lBQzVFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ2hCLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO1FBQ3BCLFlBQVksQ0FBRSxJQUFJLENBQUUsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFFZixDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQW1CLEVBQUUsRUFBRTtJQUM5QyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BDLE9BQU8sTUFBTSxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUssTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQVksRUFBRSxVQUFVLEdBQUcsS0FBSyxFQUFFLEVBQUU7SUFFdkUsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUUvQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ25CLE9BQU8sWUFBWSxDQUFDO1FBQ3JCLENBQUM7SUFDRixDQUFDO1NBQU0sQ0FBQztRQUNQLE9BQU8sWUFBWSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEtBQUssR0FBWSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWxELElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQzdCLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZCxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUMvQyxJQUFJLGVBQWUsS0FBSyxTQUFTLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUM3QixLQUFLLEVBQ0wsYUFBYSxDQUNiLEVBQUUsQ0FBQztvQkFDSCxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQy9CLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDekIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixDQUFDO1lBQ0YsQ0FBQztpQkFBTSxJQUFJLGVBQWUsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDekMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUMvQixNQUFNO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0YsQ0FBQztRQUVELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QixNQUFNO1FBQ1AsQ0FBQztRQUVELElBQUksR0FBRyxLQUFLLENBQUM7UUFDYixLQUFLLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQixhQUFhLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUN4QyxNQUFNO1FBQ1AsQ0FBQztJQVdGLENBQUM7SUFDRCxPQUFPLFlBQVksQ0FBQztBQUNyQixDQUFDLENBQUM7QUExRFcsUUFBQSxtQkFBbUIsdUJBMEQ5QiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuY29uc3Qge1xuXHRNTkVNT1NZTkUsXG5cdE1ORU1PTklDQSxcblx0Ly8gU3ltYm9sQ29uc3RydWN0b3JOYW1lXG59ID0gY29uc3RhbnRzO1xuXG5jb25zdCBnZXRBZGRpdG9yID0gKGNvbnN0cnVjdG9yczogc3RyaW5nW10gfCB7IFtpbmRleDogc3RyaW5nXTogYm9vbGVhbiB9KSA9PiB7XG5cdGNvbnN0IHJlc3VsdCA9IEFycmF5LmlzQXJyYXkoY29uc3RydWN0b3JzKSA/XG5cdFx0KG5hbWU6IHN0cmluZykgPT4ge1xuXHRcdFx0Y29uc3RydWN0b3JzLnB1c2gobmFtZSk7XG5cdFx0fSA6IChuYW1lOiBzdHJpbmcpID0+IHtcblx0XHRcdGNvbnN0cnVjdG9yc1sgbmFtZSBdID0gdHJ1ZTtcblx0XHR9O1xuXHRyZXR1cm4gcmVzdWx0O1xuXG59O1xuXG5jb25zdCBnZXRBY2N1bXVsYXRvciA9IChhc1NlcXVlbmNlOiBib29sZWFuKSA9PiB7XG5cdGNvbnN0IHJlc3VsdCA9IGFzU2VxdWVuY2UgPyBbXSA6IHt9O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbGxlY3RDb25zdHJ1Y3RvcnMgPSAoc2VsZjogb2JqZWN0LCBhc1NlcXVlbmNlID0gZmFsc2UpID0+IHtcblxuXHRjb25zdCBjb25zdHJ1Y3RvcnMgPSBnZXRBY2N1bXVsYXRvcihhc1NlcXVlbmNlKTtcblx0Y29uc3QgYWRkVG9TZXF1ZW5jZSA9IGdldEFkZGl0b3IoY29uc3RydWN0b3JzKTtcblxuXHRpZiAodHlwZW9mIHNlbGYgPT09ICdvYmplY3QnKSB7XG5cdFx0aWYgKHNlbGYgPT09IG51bGwpIHtcblx0XHRcdHJldHVybiBjb25zdHJ1Y3RvcnM7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBjb25zdHJ1Y3RvcnM7XG5cdH1cblxuXHRsZXQgcHJvdG86IHVua25vd24gPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHNlbGYpO1xuXG5cdGxldCBtbmVtb25pY2FSZWFjaGVkID0gZmFsc2U7XG5cdHdoaWxlIChwcm90bykge1xuXHRcdGlmIChwcm90by5jb25zdHJ1Y3Rvcikge1xuXHRcdFx0Y29uc3QgY29uc3RydWN0b3JOYW1lID0gcHJvdG8uY29uc3RydWN0b3IubmFtZTtcblx0XHRcdGlmIChjb25zdHJ1Y3Rvck5hbWUgPT09IE1ORU1PTklDQSAmJiAhbW5lbW9uaWNhUmVhY2hlZCkge1xuXHRcdFx0XHRpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwoXG5cdFx0XHRcdFx0cHJvdG8sXG5cdFx0XHRcdFx0J2NvbnN0cnVjdG9yJ1xuXHRcdFx0XHQpKSB7XG5cdFx0XHRcdFx0YWRkVG9TZXF1ZW5jZShjb25zdHJ1Y3Rvck5hbWUpO1xuXHRcdFx0XHRcdGFkZFRvU2VxdWVuY2UoTU5FTU9TWU5FKTtcblx0XHRcdFx0XHRtbmVtb25pY2FSZWFjaGVkID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChjb25zdHJ1Y3Rvck5hbWUgPT09ICdPYmplY3QnKSB7XG5cdFx0XHRcdGFkZFRvU2VxdWVuY2UoY29uc3RydWN0b3JOYW1lKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhZGRUb1NlcXVlbmNlKGNvbnN0cnVjdG9yTmFtZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG1uZW1vbmljYVJlYWNoZWQpIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRcblx0XHRzZWxmID0gcHJvdG87XG5cdFx0cHJvdG8gPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHNlbGYpO1xuXHRcdGlmIChwcm90byA9PT0gbnVsbCkge1xuXHRcdFx0YWRkVG9TZXF1ZW5jZSgnT2JqZWN0OiBudWxsIHByb3RvdHlwZScpO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdC8qXG5cdFx0VE9ETzogc2hvdyBmdWxsIGNoYWluIGFuZCB0ZXN0IGl0ICEhIVxuXHRcdGVsc2Uge1xuXHRcdFx0Ly8gcHJvdG8gbWF5IGJlIGVpdGhlciBlbXB0eSBvYmplY3Qgb3IgbnVsbFxuXHRcdFx0Ly8gc28gdHlwZW9mIHdpbGwgYWx3YXlzIGJlICdvYmplY3QnXG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbG9uZWx5LWlmXG5cdFx0XHRhZGRUb1NlcXVlbmNlKCcuLi4gcGxhaW4gb2JqZWN0IC4uLicpO1xuXHRcdH1cblx0XHQqL1xuXHRcdC8vIHNvIGhlcmUgd2UgZ28gZGVlcGVyIHRvIHRoZSBjaGFpblxuXHR9XG5cdHJldHVybiBjb25zdHJ1Y3RvcnM7XG59O1xuIl19
@@ -0,0 +1 @@
1
+ export declare const exception: (instance: object, error: Error, ...args: unknown[]) => any;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.exception = void 0;
7
+ const exceptionConstructor_1 = __importDefault(require("../api/errors/exceptionConstructor"));
8
+ const exception = function (instance, error, ...args) {
9
+ const target = new.target;
10
+ const exceptionResult = exceptionConstructor_1.default.call(instance, target, error, ...args);
11
+ return exceptionResult;
12
+ };
13
+ exports.exception = exception;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2V4Y2VwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7Ozs7OztBQUViLDhGQUFzRTtBQUUvRCxNQUFNLFNBQVMsR0FBRyxVQUFVLFFBQWdCLEVBQUUsS0FBWSxFQUFFLEdBQUcsSUFBZTtJQUVwRixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQzFCLE1BQU0sZUFBZSxHQUFHLDhCQUFvQixDQUFDLElBQUksQ0FDaEQsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsR0FBRyxJQUFJLENBQ1AsQ0FBQztJQUNGLE9BQU8sZUFBZSxDQUFDO0FBRXhCLENBQUMsQ0FBQztBQVhXLFFBQUEsU0FBUyxhQVdwQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IGV4Y2VwdGlvbkNvbnN0cnVjdG9yIGZyb20gJy4uL2FwaS9lcnJvcnMvZXhjZXB0aW9uQ29uc3RydWN0b3InO1xuXG5leHBvcnQgY29uc3QgZXhjZXB0aW9uID0gZnVuY3Rpb24gKGluc3RhbmNlOiBvYmplY3QsIGVycm9yOiBFcnJvciwgLi4uYXJnczogdW5rbm93bltdKSB7XG5cblx0Y29uc3QgdGFyZ2V0ID0gbmV3LnRhcmdldDtcblx0Y29uc3QgZXhjZXB0aW9uUmVzdWx0ID0gZXhjZXB0aW9uQ29uc3RydWN0b3IuY2FsbChcblx0XHRpbnN0YW5jZSxcblx0XHR0YXJnZXQsXG5cdFx0ZXJyb3IsXG5cdFx0Li4uYXJnc1xuXHQpO1xuXHRyZXR1cm4gZXhjZXB0aW9uUmVzdWx0O1xuXG59O1xuIl19
@@ -1,3 +1,2 @@
1
- export declare const extract: (instance: object) => {
2
- [index: string]: unknown;
3
- };
1
+ import type { Extracted } from '../types';
2
+ export declare const extract: <T extends object>(instance: T) => Extracted<T>;
@@ -11,7 +11,8 @@ const extract = (instance) => {
11
11
  for (const name in instance) {
12
12
  extracted[name] = instance[name];
13
13
  }
14
- return extracted;
14
+ const result = extracted;
15
+ return result;
15
16
  };
16
17
  exports.extract = extract;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leHRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsa0RBQW9EO0FBQ3BELE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxHQUFHLG9CQUFXLENBQUM7QUFJM0MsTUFBTSxPQUFPLEdBQUcsQ0FBRSxRQUFnQixFQUFHLEVBQUU7SUFHN0MsSUFBSyxRQUFRLEtBQUssTUFBTSxDQUFFLFFBQVEsQ0FBRSxFQUFHLENBQUM7UUFDdkMsTUFBTSxJQUFJLHlCQUF5QixDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBbUMsRUFBRSxDQUFDO0lBRXJELEtBQU0sTUFBTSxJQUFJLElBQUksUUFBUSxFQUFHLENBQUM7UUFRL0IsU0FBUyxDQUFFLElBQUksQ0FBRSxHQUFLLFFBQXFDLENBQUUsSUFBSSxDQUFFLENBQUM7SUFDckUsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBRWxCLENBQUMsQ0FBQztBQXRCVyxRQUFBLE9BQU8sV0FzQmxCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBFcnJvcnNUeXBlcyB9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL2Vycm9ycyc7XG5jb25zdCB7IFdST05HX0lOU1RBTkNFX0lOVk9DQVRJT04gfSA9IEVycm9yc1R5cGVzO1xuXG4vLyBpbXBvcnQgeyBob3AgfSBmcm9tICcuL2hvcCc7XG5cbmV4cG9ydCBjb25zdCBleHRyYWN0ID0gKCBpbnN0YW5jZTogb2JqZWN0ICkgPT4ge1xuXG5cdC8vIGF0IHRoaXMgc2l0dWF0aW9uIHRoaXMgY2hlY2sgaXMgZW5vdWdoXG5cdGlmICggaW5zdGFuY2UgIT09IE9iamVjdCggaW5zdGFuY2UgKSApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTjtcblx0fVxuXG5cdGNvbnN0IGV4dHJhY3RlZDogeyBbIGluZGV4OiBzdHJpbmcgXTogdW5rbm93biB9ID0ge307XG5cblx0Zm9yICggY29uc3QgbmFtZSBpbiBpbnN0YW5jZSApIHtcblx0XHQvLyBpZiAoIG5hbWUgPT09ICdjb25zdHJ1Y3RvcicgJiYgIWhvcCggaW5zdGFuY2UsIG5hbWUgKSApIHtcblx0XHQvLyBcdGNvbnRpbnVlO1xuXHRcdC8vIH1cblx0XHQvLyBpZiAobmFtZSA9PT0gJ3RpbWVzdGFtcCcpIHtcblx0XHQvLyBcdGNvbnRpbnVlO1xuXHRcdC8vIH1cblxuXHRcdGV4dHJhY3RlZFsgbmFtZSBdID0gKCBpbnN0YW5jZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiApWyBuYW1lIF07XG5cdH1cblxuXHRyZXR1cm4gZXh0cmFjdGVkO1xuXG59O1xuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leHRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsa0RBQW9EO0FBQ3BELE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxHQUFHLG9CQUFXLENBQUM7QUFNM0MsTUFBTSxPQUFPLEdBQUcsQ0FBb0IsUUFBVyxFQUFpQixFQUFFO0lBR3hFLElBQUssUUFBUSxLQUFLLE1BQU0sQ0FBRSxRQUFRLENBQUUsRUFBRyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQW1DLEVBQUUsQ0FBQztJQUVyRCxLQUFNLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRyxDQUFDO1FBUS9CLFNBQVMsQ0FBRSxJQUFJLENBQUUsR0FBSyxRQUFxQyxDQUFFLElBQUksQ0FBRSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxTQUF5QixDQUFDO0lBQ3pDLE9BQU8sTUFBTSxDQUFDO0FBRWYsQ0FBQyxDQUFDO0FBdkJXLFFBQUEsT0FBTyxXQXVCbEIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHsgV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTiB9ID0gRXJyb3JzVHlwZXM7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdGVkIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBpbXBvcnQgeyBob3AgfSBmcm9tICcuL2hvcCc7XG5cbmV4cG9ydCBjb25zdCBleHRyYWN0ID0gPFQgZXh0ZW5kcyBvYmplY3Q+KCBpbnN0YW5jZTogVCApOiBFeHRyYWN0ZWQ8VD4gPT4ge1xuXG5cdC8vIGF0IHRoaXMgc2l0dWF0aW9uIHRoaXMgY2hlY2sgaXMgZW5vdWdoXG5cdGlmICggaW5zdGFuY2UgIT09IE9iamVjdCggaW5zdGFuY2UgKSApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTjtcblx0fVxuXG5cdGNvbnN0IGV4dHJhY3RlZDogeyBbIGluZGV4OiBzdHJpbmcgXTogdW5rbm93biB9ID0ge307XG5cblx0Zm9yICggY29uc3QgbmFtZSBpbiBpbnN0YW5jZSApIHtcblx0XHQvLyBpZiAoIG5hbWUgPT09ICdjb25zdHJ1Y3RvcicgJiYgIWhvcCggaW5zdGFuY2UsIG5hbWUgKSApIHtcblx0XHQvLyBcdGNvbnRpbnVlO1xuXHRcdC8vIH1cblx0XHQvLyBpZiAobmFtZSA9PT0gJ3RpbWVzdGFtcCcpIHtcblx0XHQvLyBcdGNvbnRpbnVlO1xuXHRcdC8vIH1cblxuXHRcdGV4dHJhY3RlZFsgbmFtZSBdID0gKCBpbnN0YW5jZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiApWyBuYW1lIF07XG5cdH1cblxuXHRjb25zdCByZXN1bHQgPSBleHRyYWN0ZWQgYXMgRXh0cmFjdGVkPFQ+O1xuXHRyZXR1cm4gcmVzdWx0O1xuXG59O1xuIl19
@@ -0,0 +1 @@
1
+ export declare const fork: <T extends object>(instance: T) => (this: object, ...forkArgs: unknown[]) => T;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fork = void 0;
7
+ const Props_1 = require("../api/types/Props");
8
+ const InstanceCreator_1 = require("../api/types/InstanceCreator");
9
+ const index_1 = __importDefault(require("../api/utils/index"));
10
+ const { reflectPrimitiveWrappers } = index_1.default;
11
+ const fork = (instance) => {
12
+ const props = (0, Props_1.getProps)(instance);
13
+ const { __type__: type, __collection__: collection, __parent__: existentInstance, __args__, __self__, } = props;
14
+ const { isSubType, TypeName } = type;
15
+ const result = function (...forkArgs) {
16
+ let forked;
17
+ const Constructor = isSubType ?
18
+ existentInstance :
19
+ collection;
20
+ const args = forkArgs.length ? forkArgs : __args__;
21
+ if (this === __self__) {
22
+ forked = new (Constructor[TypeName])(...args);
23
+ }
24
+ else {
25
+ forked = new InstanceCreator_1.InstanceCreator(type, reflectPrimitiveWrappers(this), args);
26
+ }
27
+ const forkResult = forked;
28
+ return forkResult;
29
+ };
30
+ return result;
31
+ };
32
+ exports.fork = fork;
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9mb3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7Ozs7O0FBRWIsOENBRTRCO0FBQzVCLGtFQUErRDtBQUMvRCwrREFBNEM7QUFFNUMsTUFBTSxFQUFFLHdCQUF3QixFQUFFLEdBQUcsZUFBVSxDQUFDO0FBRXpDLE1BQU0sSUFBSSxHQUFHLENBQW1CLFFBQVcsRUFBK0MsRUFBRTtJQUVsRyxNQUFNLEtBQUssR0FBRyxJQUFBLGdCQUFRLEVBQUMsUUFBUSxDQUFVLENBQUM7SUFFMUMsTUFBTSxFQUNMLFFBQVEsRUFBRSxJQUFJLEVBQ2QsY0FBYyxFQUFFLFVBQVUsRUFDMUIsVUFBVSxFQUFFLGdCQUFnQixFQUM1QixRQUFRLEVBQ1IsUUFBUSxHQUNSLEdBQUcsS0FBSyxDQUFDO0lBRVYsTUFBTSxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsR0FBRyxJQUFJLENBQUM7SUFFVCxNQUFNLE1BQU0sR0FBRyxVQUF3QixHQUFHLFFBQW1CO1FBRTVELElBQUksTUFBTSxDQUFDO1FBQ1gsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFDOUIsZ0JBQWdCLENBQUMsQ0FBQztZQUNsQixVQUFVLENBQUM7UUFFWixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUduRCxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUd2QixNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBRSxRQUFRLENBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLENBQUM7WUFFUCxNQUFNLEdBQUcsSUFBSSxpQ0FBZSxDQUMzQixJQUFJLEVBQ0osd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQzlCLElBQUksQ0FDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLE1BQVcsQ0FBQztRQUMvQixPQUFPLFVBQVUsQ0FBQztJQUVuQixDQUFDLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUVmLENBQUMsQ0FBQztBQTlDVyxRQUFBLElBQUksUUE4Q2YiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7XG5cdGdldFByb3BzLCBQcm9wcyBcbn0gZnJvbSAnLi4vYXBpL3R5cGVzL1Byb3BzJztcbmltcG9ydCB7IEluc3RhbmNlQ3JlYXRvciB9IGZyb20gJy4uL2FwaS90eXBlcy9JbnN0YW5jZUNyZWF0b3InO1xuaW1wb3J0IFR5cGVzVXRpbHMgZnJvbSAnLi4vYXBpL3V0aWxzL2luZGV4JztcblxuY29uc3QgeyByZWZsZWN0UHJpbWl0aXZlV3JhcHBlcnMgfSA9IFR5cGVzVXRpbHM7XG5cbmV4cG9ydCBjb25zdCBmb3JrID0gPFQgZXh0ZW5kcyBvYmplY3Q+KGluc3RhbmNlOiBUKTogKHRoaXM6IG9iamVjdCwgLi4uZm9ya0FyZ3M6IHVua25vd25bXSkgPT4gVCA9PiB7XG5cblx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wcyhpbnN0YW5jZSkgYXMgUHJvcHM7XG5cblx0Y29uc3Qge1xuXHRcdF9fdHlwZV9fOiB0eXBlLFxuXHRcdF9fY29sbGVjdGlvbl9fOiBjb2xsZWN0aW9uLFxuXHRcdF9fcGFyZW50X186IGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0X19hcmdzX18sXG5cdFx0X19zZWxmX18sXG5cdH0gPSBwcm9wcztcblxuXHRjb25zdCB7XG5cdFx0aXNTdWJUeXBlLFxuXHRcdFR5cGVOYW1lXG5cdH0gPSB0eXBlO1xuXG5cdGNvbnN0IHJlc3VsdCA9IGZ1bmN0aW9uICh0aGlzOiBvYmplY3QsIC4uLmZvcmtBcmdzOiB1bmtub3duW10pIHtcblxuXHRcdGxldCBmb3JrZWQ7XG5cdFx0Y29uc3QgQ29uc3RydWN0b3IgPSBpc1N1YlR5cGUgP1xuXHRcdFx0ZXhpc3RlbnRJbnN0YW5jZSA6XG5cdFx0XHRjb2xsZWN0aW9uO1xuXG5cdFx0Y29uc3QgYXJncyA9IGZvcmtBcmdzLmxlbmd0aCA/IGZvcmtBcmdzIDogX19hcmdzX187XG5cblxuXHRcdGlmICh0aGlzID09PSBfX3NlbGZfXykge1xuXG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yICB0aGlzIGlzIGRlZmluaXRlbHkgYSBjb25zdHJ1Y3RvclxuXHRcdFx0Zm9ya2VkID0gbmV3IChDb25zdHJ1Y3RvclsgVHlwZU5hbWUgXSkoLi4uYXJncyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGZvcmsuY2FsbCA/IGxldCdzIGRvIGl0ICFcblx0XHRcdGZvcmtlZCA9IG5ldyBJbnN0YW5jZUNyZWF0b3IoXG5cdFx0XHRcdHR5cGUsXG5cdFx0XHRcdHJlZmxlY3RQcmltaXRpdmVXcmFwcGVycyh0aGlzKSxcblx0XHRcdFx0YXJnc1xuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBmb3JrUmVzdWx0ID0gZm9ya2VkIGFzIFQ7XG5cdFx0cmV0dXJuIGZvcmtSZXN1bHQ7XG5cblx0fTtcblx0cmV0dXJuIHJlc3VsdDtcblxufTtcbiJdfQ==
@@ -1,4 +1,3 @@
1
- export declare const utils: {
2
- [index: string]: CallableFunction;
3
- };
1
+ import type { UtilsCollection } from '../types';
2
+ export declare const utils: UtilsCollection;
4
3
  export { defineStackCleaner } from './defineStackCleaner';
@@ -5,6 +5,10 @@ const collectConstructors_1 = require("./collectConstructors");
5
5
  const extract_1 = require("./extract");
6
6
  const parent_1 = require("./parent");
7
7
  const pick_1 = require("./pick");
8
+ const sibling_1 = require("./sibling");
9
+ const exception_1 = require("./exception");
10
+ const fork_1 = require("./fork");
11
+ const clone_1 = require("./clone");
8
12
  const toJSON_1 = require("./toJSON");
9
13
  const parse_1 = require("./parse");
10
14
  const merge_1 = require("./merge");
@@ -12,18 +16,28 @@ const utilsUnWrapped = {
12
16
  extract: extract_1.extract,
13
17
  pick: pick_1.pick,
14
18
  parent: parent_1.parent,
19
+ sibling: sibling_1.sibling,
20
+ exception: exception_1.exception,
21
+ fork: fork_1.fork,
22
+ clone: clone_1.clone,
15
23
  toJSON: toJSON_1.toJSON,
16
24
  parse: parse_1.parse,
17
25
  merge: merge_1.merge,
18
- get collectConstructors() {
19
- return collectConstructors_1.collectConstructors;
20
- },
26
+ collectConstructors: collectConstructors_1.collectConstructors,
21
27
  };
22
28
  const wrapThis = (method) => {
23
- return function (instance, ...args) {
24
- const result = method(instance !== undefined ? instance : this, ...args);
25
- return result;
29
+ const result = function (instance, ...args) {
30
+ const instanceContext = instance !== undefined ? instance : this;
31
+ let wrapResult;
32
+ if (new.target) {
33
+ wrapResult = new method(instanceContext, ...args);
34
+ }
35
+ else {
36
+ wrapResult = method(instanceContext, ...args);
37
+ }
38
+ return wrapResult;
26
39
  };
40
+ return result;
27
41
  };
28
42
  exports.utils = Object.assign({}, Object.entries(utilsUnWrapped)
29
43
  .reduce((methods, util) => {
@@ -33,4 +47,4 @@ exports.utils = Object.assign({}, Object.entries(utilsUnWrapped)
33
47
  }, {}));
34
48
  var defineStackCleaner_1 = require("./defineStackCleaner");
35
49
  Object.defineProperty(exports, "defineStackCleaner", { enumerable: true, get: function () { return defineStackCleaner_1.defineStackCleaner; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFJYiwrREFBNEQ7QUFDNUQsdUNBQW9DO0FBQ3BDLHFDQUFrQztBQUNsQyxpQ0FBOEI7QUFDOUIscUNBQWtDO0FBQ2xDLG1DQUFnQztBQUNoQyxtQ0FBZ0M7QUFFaEMsTUFBTSxjQUFjLEdBQUc7SUFFdEIsT0FBTyxFQUFQLGlCQUFPO0lBQ1AsSUFBSSxFQUFKLFdBQUk7SUFFSixNQUFNLEVBQU4sZUFBTTtJQUVOLE1BQU0sRUFBTixlQUFNO0lBRU4sS0FBSyxFQUFMLGFBQUs7SUFDTCxLQUFLLEVBQUwsYUFBSztJQUVMLElBQUksbUJBQW1CO1FBQ3RCLE9BQU8seUNBQW1CLENBQUM7SUFDNUIsQ0FBQztDQUVELENBQUM7QUFFRixNQUFNLFFBQVEsR0FBRyxDQUFFLE1BQXVCLEVBQUcsRUFBRTtJQUM5QyxPQUFPLFVBQXlCLFFBQTRCLEVBQUUsR0FBRyxJQUFlO1FBQy9FLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FDcEIsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQ3hDLEdBQUcsSUFBSSxDQUNQLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVXLFFBQUEsS0FBSyxxQkFFZCxNQUFNLENBQUMsT0FBTyxDQUFFLGNBQWMsQ0FBRTtLQUNqQyxNQUFNLENBQ04sQ0FBRSxPQUFnRCxFQUFFLElBQUksRUFBRyxFQUFFO0lBQzVELE1BQU0sQ0FBRSxJQUFJLEVBQUUsRUFBRSxDQUFFLEdBQUcsSUFBSSxDQUFDO0lBQzFCLE9BQU8sQ0FBRSxJQUFJLENBQUUsR0FBRyxRQUFRLENBQUUsRUFBRSxDQUFFLENBQUM7SUFDakMsT0FBTyxPQUFPLENBQUM7QUFDaEIsQ0FBQyxFQUNELEVBQUUsQ0FDRixFQUVEO0FBRUYsMkRBQTBEO0FBQWpELHdIQUFBLGtCQUFrQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IFdyYXBwYWJsZU1ldGhvZCB9IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHsgY29sbGVjdENvbnN0cnVjdG9ycyB9IGZyb20gJy4vY29sbGVjdENvbnN0cnVjdG9ycyc7XG5pbXBvcnQgeyBleHRyYWN0IH0gZnJvbSAnLi9leHRyYWN0JztcbmltcG9ydCB7IHBhcmVudCB9IGZyb20gJy4vcGFyZW50JztcbmltcG9ydCB7IHBpY2sgfSBmcm9tICcuL3BpY2snO1xuaW1wb3J0IHsgdG9KU09OIH0gZnJvbSAnLi90b0pTT04nO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICcuL3BhcnNlJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnLi9tZXJnZSc7XG5cbmNvbnN0IHV0aWxzVW5XcmFwcGVkID0ge1xuXG5cdGV4dHJhY3QsXG5cdHBpY2ssXG5cblx0cGFyZW50LFxuXG5cdHRvSlNPTixcblxuXHRwYXJzZSxcblx0bWVyZ2UsXG5cblx0Z2V0IGNvbGxlY3RDb25zdHJ1Y3RvcnMgKCkge1xuXHRcdHJldHVybiBjb2xsZWN0Q29uc3RydWN0b3JzO1xuXHR9LFxuXG59O1xuXG5jb25zdCB3cmFwVGhpcyA9ICggbWV0aG9kOiBXcmFwcGFibGVNZXRob2QgKSA9PiB7XG5cdHJldHVybiBmdW5jdGlvbiAoIHRoaXM6IG9iamVjdCwgaW5zdGFuY2U6IG9iamVjdCB8IHVuZGVmaW5lZCwgLi4uYXJnczogdW5rbm93bltdICkge1xuXHRcdGNvbnN0IHJlc3VsdCA9IG1ldGhvZChcblx0XHRcdGluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBpbnN0YW5jZSA6IHRoaXMsXG5cdFx0XHQuLi5hcmdzIFxuXHRcdCk7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcbn07XG5cbmV4cG9ydCBjb25zdCB1dGlsczogeyBbIGluZGV4OiBzdHJpbmcgXTogQ2FsbGFibGVGdW5jdGlvbiB9ID0ge1xuXG5cdC4uLk9iamVjdC5lbnRyaWVzKCB1dGlsc1VuV3JhcHBlZCApXG5cdFx0LnJlZHVjZShcblx0XHRcdCggbWV0aG9kczogeyBbIGluZGV4OiBzdHJpbmcgXTogQ2FsbGFibGVGdW5jdGlvbiB9LCB1dGlsICkgPT4ge1xuXHRcdFx0XHRjb25zdCBbIG5hbWUsIGZuIF0gPSB1dGlsO1xuXHRcdFx0XHRtZXRob2RzWyBuYW1lIF0gPSB3cmFwVGhpcyggZm4gKTtcblx0XHRcdFx0cmV0dXJuIG1ldGhvZHM7XG5cdFx0XHR9LFxuXHRcdFx0e30gXG5cdFx0KSxcblxufTtcblxuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi9kZWZpbmVTdGFja0NsZWFuZXInO1xuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFPYiwrREFBNEQ7QUFDNUQsdUNBQW9DO0FBQ3BDLHFDQUFrQztBQUNsQyxpQ0FBOEI7QUFDOUIsdUNBQW9DO0FBQ3BDLDJDQUF3QztBQUN4QyxpQ0FBOEI7QUFDOUIsbUNBQWdDO0FBQ2hDLHFDQUFrQztBQUNsQyxtQ0FBZ0M7QUFDaEMsbUNBQWdDO0FBRWhDLE1BQU0sY0FBYyxHQUFHO0lBRXRCLE9BQU8sRUFBUCxpQkFBTztJQUNQLElBQUksRUFBSixXQUFJO0lBRUosTUFBTSxFQUFOLGVBQU07SUFDTixPQUFPLEVBQVAsaUJBQU87SUFDUCxTQUFTLEVBQVQscUJBQVM7SUFDVCxJQUFJLEVBQUosV0FBSTtJQUNKLEtBQUssRUFBTCxhQUFLO0lBRUwsTUFBTSxFQUFOLGVBQU07SUFFTixLQUFLLEVBQUwsYUFBSztJQUNMLEtBQUssRUFBTCxhQUFLO0lBRUwsbUJBQW1CLEVBQW5CLHlDQUFtQjtDQUVuQixDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBRSxNQUF1QixFQUFHLEVBQUU7SUFDOUMsTUFBTSxNQUFNLEdBQUcsVUFBeUIsUUFBNEIsRUFBRSxHQUFHLElBQWU7UUFDdkYsTUFBTSxlQUFlLEdBQUcsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDakUsSUFBSSxVQUFtQixDQUFDO1FBQ3hCLElBQUssR0FBRyxDQUFDLE1BQU0sRUFBRyxDQUFDO1lBQ2xCLFVBQVUsR0FBRyxJQUFLLE1BQXNELENBQ3ZFLGVBQWUsRUFDZixHQUFHLElBQUksQ0FDUCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDUCxVQUFVLEdBQUcsTUFBTSxDQUNsQixlQUFlLEVBQ2YsR0FBRyxJQUFJLENBQ1AsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVXLFFBQUEsS0FBSyxHQUFHLGtCQUVqQixNQUFNLENBQUMsT0FBTyxDQUFFLGNBQWMsQ0FBRTtLQUNqQyxNQUFNLENBQ04sQ0FBRSxPQUFnRCxFQUFFLElBQUksRUFBRyxFQUFFO0lBQzVELE1BQU0sQ0FBRSxJQUFJLEVBQUUsRUFBRSxDQUFFLEdBQUcsSUFBSSxDQUFDO0lBQzFCLE9BQU8sQ0FBRSxJQUFJLENBQUUsR0FBRyxRQUFRLENBQUUsRUFBRSxDQUFFLENBQUM7SUFDakMsT0FBTyxPQUFPLENBQUM7QUFDaEIsQ0FBQyxFQUNELEVBQUUsQ0FDRixDQUVpQixDQUFDO0FBRXJCLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRXcmFwcGFibGVNZXRob2QsXG5cdFV0aWxzQ29sbGVjdGlvblxufSBmcm9tICcuLi90eXBlcyc7XG5cbmltcG9ydCB7IGNvbGxlY3RDb25zdHJ1Y3RvcnMgfSBmcm9tICcuL2NvbGxlY3RDb25zdHJ1Y3RvcnMnO1xuaW1wb3J0IHsgZXh0cmFjdCB9IGZyb20gJy4vZXh0cmFjdCc7XG5pbXBvcnQgeyBwYXJlbnQgfSBmcm9tICcuL3BhcmVudCc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnLi9waWNrJztcbmltcG9ydCB7IHNpYmxpbmcgfSBmcm9tICcuL3NpYmxpbmcnO1xuaW1wb3J0IHsgZXhjZXB0aW9uIH0gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHsgZm9yayB9IGZyb20gJy4vZm9yayc7XG5pbXBvcnQgeyBjbG9uZSB9IGZyb20gJy4vY2xvbmUnO1xuaW1wb3J0IHsgdG9KU09OIH0gZnJvbSAnLi90b0pTT04nO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICcuL3BhcnNlJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnLi9tZXJnZSc7XG5cbmNvbnN0IHV0aWxzVW5XcmFwcGVkID0ge1xuXG5cdGV4dHJhY3QsXG5cdHBpY2ssXG5cblx0cGFyZW50LFxuXHRzaWJsaW5nLFxuXHRleGNlcHRpb24sXG5cdGZvcmssXG5cdGNsb25lLFxuXG5cdHRvSlNPTixcblxuXHRwYXJzZSxcblx0bWVyZ2UsXG5cblx0Y29sbGVjdENvbnN0cnVjdG9ycyxcblxufTtcblxuY29uc3Qgd3JhcFRoaXMgPSAoIG1ldGhvZDogV3JhcHBhYmxlTWV0aG9kICkgPT4ge1xuXHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoIHRoaXM6IG9iamVjdCwgaW5zdGFuY2U6IG9iamVjdCB8IHVuZGVmaW5lZCwgLi4uYXJnczogdW5rbm93bltdICkge1xuXHRcdGNvbnN0IGluc3RhbmNlQ29udGV4dCA9IGluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBpbnN0YW5jZSA6IHRoaXM7XG5cdFx0bGV0IHdyYXBSZXN1bHQ6IHVua25vd247XG5cdFx0aWYgKCBuZXcudGFyZ2V0ICkge1xuXHRcdFx0d3JhcFJlc3VsdCA9IG5ldyAobWV0aG9kIGFzIHVua25vd24gYXMgbmV3ICguLi5hOiB1bmtub3duW10pID0+IHVua25vd24pKFxuXHRcdFx0XHRpbnN0YW5jZUNvbnRleHQsXG5cdFx0XHRcdC4uLmFyZ3Ncblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdyYXBSZXN1bHQgPSBtZXRob2QoXG5cdFx0XHRcdGluc3RhbmNlQ29udGV4dCxcblx0XHRcdFx0Li4uYXJncyBcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB3cmFwUmVzdWx0O1xuXHR9O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHV0aWxzID0ge1xuXG5cdC4uLk9iamVjdC5lbnRyaWVzKCB1dGlsc1VuV3JhcHBlZCApXG5cdFx0LnJlZHVjZShcblx0XHRcdCggbWV0aG9kczogeyBbIGluZGV4OiBzdHJpbmcgXTogQ2FsbGFibGVGdW5jdGlvbiB9LCB1dGlsICkgPT4ge1xuXHRcdFx0XHRjb25zdCBbIG5hbWUsIGZuIF0gPSB1dGlsO1xuXHRcdFx0XHRtZXRob2RzWyBuYW1lIF0gPSB3cmFwVGhpcyggZm4gKTtcblx0XHRcdFx0cmV0dXJuIG1ldGhvZHM7XG5cdFx0XHR9LFxuXHRcdFx0e31cblx0XHQpLFxuXG59IGFzIFV0aWxzQ29sbGVjdGlvbjtcblxuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi9kZWZpbmVTdGFja0NsZWFuZXInO1xuIl19
@@ -1 +1,2 @@
1
- export declare const merge: (a: object, b: object, ...args: unknown[]) => object;
1
+ import type { Merge, InstanceResult } from '../types';
2
+ export declare const merge: <A extends object, B extends object>(a: A, b: B, ...args: unknown[]) => InstanceResult<Merge<B, A>>;
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.merge = void 0;
4
4
  const errors_1 = require("../descriptors/errors");
5
5
  const { WRONG_ARGUMENTS_USED } = errors_1.ErrorsTypes;
6
+ const fork_1 = require("./fork");
7
+ const Props_1 = require("../api/types/Props");
6
8
  const merge = (a, b, ...args) => {
7
9
  if (a !== Object(a)) {
8
10
  throw new WRONG_ARGUMENTS_USED('A should be an object');
@@ -10,12 +12,14 @@ const merge = (a, b, ...args) => {
10
12
  if (b !== Object(b)) {
11
13
  throw new WRONG_ARGUMENTS_USED('B should be an object');
12
14
  }
13
- const { fork } = a;
14
- if (typeof fork !== 'function') {
15
- throw new WRONG_ARGUMENTS_USED('A should have A.fork()');
15
+ const props = (0, Props_1.getProps)(a);
16
+ if (props === undefined) {
17
+ throw new WRONG_ARGUMENTS_USED('A should be a mnemonica instance');
16
18
  }
17
- const aa = fork.call(b, ...args);
18
- return aa;
19
+ const forked = (0, fork_1.fork)(a);
20
+ const aa = forked.call(b, ...args);
21
+ const result = aa;
22
+ return result;
19
23
  };
20
24
  exports.merge = merge;
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWVyZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixrREFBb0Q7QUFDcEQsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsb0JBQVcsQ0FBQztBQUV0QyxNQUFNLEtBQUssR0FBRyxDQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsR0FBRyxJQUFlLEVBQVcsRUFBRTtJQUczRSxJQUFLLENBQUMsS0FBSyxNQUFNLENBQUUsQ0FBQyxDQUFFLEVBQUcsQ0FBQztRQUN6QixNQUFNLElBQUksb0JBQW9CLENBQUUsdUJBQXVCLENBQUUsQ0FBQztJQUMzRCxDQUFDO0lBR0QsSUFBSyxDQUFDLEtBQUssTUFBTSxDQUFFLENBQUMsQ0FBRSxFQUFHLENBQUM7UUFDekIsTUFBTSxJQUFJLG9CQUFvQixDQUFFLHVCQUF1QixDQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFpRSxDQUFDO0lBQ25GLElBQUssT0FBTyxJQUFJLEtBQUssVUFBVSxFQUFHLENBQUM7UUFDbEMsTUFBTSxJQUFJLG9CQUFvQixDQUFFLHdCQUF3QixDQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ25CLENBQUMsRUFDRCxHQUFHLElBQUksQ0FDUCxDQUFDO0lBQ0YsT0FBTyxFQUFZLENBQUM7QUFFckIsQ0FBQyxDQUFDO0FBdkJXLFFBQUEsS0FBSyxTQXVCaEIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHsgV1JPTkdfQVJHVU1FTlRTX1VTRUQgfSA9IEVycm9yc1R5cGVzO1xuXG5leHBvcnQgY29uc3QgbWVyZ2UgPSAoIGE6IG9iamVjdCwgYjogb2JqZWN0LCAuLi5hcmdzOiB1bmtub3duW10gKTogb2JqZWN0ID0+IHtcblxuXHQvLyBhdCB0aGlzIHNpdHVhdGlvbiB0aGlzIGNoZWNrIGlzIGVub3VnaFxuXHRpZiAoIGEgIT09IE9iamVjdCggYSApICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19BUkdVTUVOVFNfVVNFRCggJ0Egc2hvdWxkIGJlIGFuIG9iamVjdCcgKTtcblx0fVxuXG5cdC8vIGF0IHRoaXMgc2l0dWF0aW9uIHRoaXMgY2hlY2sgaXMgZW5vdWdoXG5cdGlmICggYiAhPT0gT2JqZWN0KCBiICkgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCAnQiBzaG91bGQgYmUgYW4gb2JqZWN0JyApO1xuXHR9XG5cblx0Y29uc3QgeyBmb3JrIH0gPSBhIGFzIHsgZm9yaz86ICh0aGlzOiBvYmplY3QsIC4uLmZvcmtBcmdzOiB1bmtub3duW10pID0+IHVua25vd24gfTtcblx0aWYgKCB0eXBlb2YgZm9yayAhPT0gJ2Z1bmN0aW9uJyApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfQVJHVU1FTlRTX1VTRUQoICdBIHNob3VsZCBoYXZlIEEuZm9yaygpJyApO1xuXHR9XG5cblx0Y29uc3QgYWEgPSBmb3JrLmNhbGwoXG5cdFx0Yixcblx0XHQuLi5hcmdzIFxuXHQpO1xuXHRyZXR1cm4gYWEgYXMgb2JqZWN0O1xuXG59O1xuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWVyZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixrREFBb0Q7QUFDcEQsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsb0JBQVcsQ0FBQztBQUM3QyxpQ0FBOEI7QUFDOUIsOENBQThDO0FBTXZDLE1BQU0sS0FBSyxHQUFHLENBQ3BCLENBQUksRUFDSixDQUFJLEVBQ0osR0FBRyxJQUFlLEVBQ1ksRUFBRTtJQUdoQyxJQUFLLENBQUMsS0FBSyxNQUFNLENBQUUsQ0FBQyxDQUFFLEVBQUcsQ0FBQztRQUN6QixNQUFNLElBQUksb0JBQW9CLENBQUUsdUJBQXVCLENBQUUsQ0FBQztJQUMzRCxDQUFDO0lBR0QsSUFBSyxDQUFDLEtBQUssTUFBTSxDQUFFLENBQUMsQ0FBRSxFQUFHLENBQUM7UUFDekIsTUFBTSxJQUFJLG9CQUFvQixDQUFFLHVCQUF1QixDQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksb0JBQW9CLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBQSxXQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDckIsQ0FBQyxFQUNELEdBQUcsSUFBSSxDQUNQLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxFQUFpQyxDQUFDO0lBQ2pELE9BQU8sTUFBTSxDQUFDO0FBRWYsQ0FBQyxDQUFDO0FBN0JXLFFBQUEsS0FBSyxTQTZCaEIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHsgV1JPTkdfQVJHVU1FTlRTX1VTRUQgfSA9IEVycm9yc1R5cGVzO1xuaW1wb3J0IHsgZm9yayB9IGZyb20gJy4vZm9yayc7XG5pbXBvcnQgeyBnZXRQcm9wcyB9IGZyb20gJy4uL2FwaS90eXBlcy9Qcm9wcyc7XG5pbXBvcnQgdHlwZSB7XG5cdE1lcmdlLFxuXHRJbnN0YW5jZVJlc3VsdCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgbWVyZ2UgPSA8QSBleHRlbmRzIG9iamVjdCwgQiBleHRlbmRzIG9iamVjdD4oXG5cdGE6IEEsXG5cdGI6IEIsXG5cdC4uLmFyZ3M6IHVua25vd25bXVxuKTogSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8QiwgQT4+ID0+IHtcblxuXHQvLyBhdCB0aGlzIHNpdHVhdGlvbiB0aGlzIGNoZWNrIGlzIGVub3VnaFxuXHRpZiAoIGEgIT09IE9iamVjdCggYSApICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19BUkdVTUVOVFNfVVNFRCggJ0Egc2hvdWxkIGJlIGFuIG9iamVjdCcgKTtcblx0fVxuXG5cdC8vIGF0IHRoaXMgc2l0dWF0aW9uIHRoaXMgY2hlY2sgaXMgZW5vdWdoXG5cdGlmICggYiAhPT0gT2JqZWN0KCBiICkgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCAnQiBzaG91bGQgYmUgYW4gb2JqZWN0JyApO1xuXHR9XG5cblx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wcyhhKTtcblx0aWYgKHByb3BzID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfQVJHVU1FTlRTX1VTRUQoJ0Egc2hvdWxkIGJlIGEgbW5lbW9uaWNhIGluc3RhbmNlJyk7XG5cdH1cblxuXHRjb25zdCBmb3JrZWQgPSBmb3JrKGEpO1xuXHRjb25zdCBhYSA9IGZvcmtlZC5jYWxsKFxuXHRcdGIsXG5cdFx0Li4uYXJncyBcblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gYWEgYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8QiwgQT4+O1xuXHRyZXR1cm4gcmVzdWx0O1xuXG59O1xuIl19
@@ -1 +1 @@
1
- export declare const parent: (instance: object, path?: string) => unknown;
1
+ export declare const parent: <T extends object>(instance: T, path?: string) => object | undefined;
@@ -17,8 +17,9 @@ const parent = (instance, path) => {
17
17
  return p;
18
18
  }
19
19
  const { constructor: { name } } = p;
20
- return name === path ?
20
+ const result = name === path ?
21
21
  p : (0, exports.parent)(p, path);
22
+ return result;
22
23
  };
23
24
  exports.parent = parent;
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQUViLGtEQUFvRDtBQUNwRCxNQUFNLEVBQUUseUJBQXlCLEVBQUUsR0FBRyxvQkFBVyxDQUFDO0FBRWxELDhDQUU0QjtBQUtyQixNQUFNLE1BQU0sR0FBRyxDQUFFLFFBQWdCLEVBQUUsSUFBYSxFQUFZLEVBQUU7SUFHcEUsSUFBSyxRQUFRLEtBQUssTUFBTSxDQUFFLFFBQVEsQ0FBRSxFQUFHLENBQUM7UUFDdkMsTUFBTSxJQUFJLHlCQUF5QixDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxJQUFBLGlCQUFTLEVBQUMsUUFBUSxDQUFVLENBQUM7SUFFM0MsSUFBSyxDQUFDLEtBQUssRUFBRyxDQUFDO1FBQ2QsT0FBTztJQUNSLENBQUM7SUFFRCxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUVoQyxJQUFLLENBQUMsSUFBSSxFQUFHLENBQUM7UUFDYixPQUFPLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFJcEMsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGNBQU0sRUFDWCxDQUFXLEVBQ1gsSUFBSSxDQUNGLENBQUM7QUFFSixDQUFDLENBQUM7QUE3QlcsUUFBQSxNQUFNLFVBNkJqQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3QgeyBXUk9OR19JTlNUQU5DRV9JTlZPQ0FUSU9OIH0gPSBFcnJvcnNUeXBlcztcblxuaW1wb3J0IHtcblx0X2dldFByb3BzLCBQcm9wcyBcbn0gZnJvbSAnLi4vYXBpL3R5cGVzL1Byb3BzJztcblxuLy8gc2VlayBmb3IgZmlydHMgcGFyZW50IGluc3RhbmNlXG4vLyBvZiBpbnN0YW5jZSBwcm90b3R5cGUgY2hhaW5cbi8vIHdpdGggY29uc3RydWN0b3JzIG9mIHBhdGhcbmV4cG9ydCBjb25zdCBwYXJlbnQgPSAoIGluc3RhbmNlOiBvYmplY3QsIHBhdGg/OiBzdHJpbmcgKTogdW5rbm93biA9PiB7XG5cblx0Ly8gYXQgdGhpcyBzaXR1YXRpb24gdGhpcyBjaGVjayBpcyBlbm91Z2hcblx0aWYgKCBpbnN0YW5jZSAhPT0gT2JqZWN0KCBpbnN0YW5jZSApICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19JTlNUQU5DRV9JTlZPQ0FUSU9OO1xuXHR9XG5cblx0Y29uc3QgcHJvcHMgPSBfZ2V0UHJvcHMoaW5zdGFuY2UpIGFzIFByb3BzO1xuXG5cdGlmICggIXByb3BzICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHsgX19wYXJlbnRfXzogcCB9ID0gcHJvcHM7XG5cblx0aWYgKCAhcGF0aCApIHtcblx0XHRyZXR1cm4gcDtcblx0fVxuXG5cdGNvbnN0IHsgY29uc3RydWN0b3I6IHsgbmFtZSB9IH0gPSBwO1xuXG5cdC8vIHNlZWsgdGhyb3VoIHBhcmVudCBpbnN0YW5jZXNcblx0Ly8gYWJvdXQgdGhlIGZpc3QgY29uc3RydWN0b3Igd2l0aCB0aGlzIG5hbWVcblx0cmV0dXJuIG5hbWUgPT09IHBhdGggP1xuXHRcdHAgOiBwYXJlbnQoXG4gcCBhcyBvYmplY3QsXG4gcGF0aCBcblx0XHQpO1xuXG59O1xuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQUViLGtEQUFvRDtBQUNwRCxNQUFNLEVBQUUseUJBQXlCLEVBQUUsR0FBRyxvQkFBVyxDQUFDO0FBRWxELDhDQUU0QjtBQUtyQixNQUFNLE1BQU0sR0FBRyxDQUFvQixRQUFXLEVBQUUsSUFBYSxFQUF1QixFQUFFO0lBRzVGLElBQUssUUFBUSxLQUFLLE1BQU0sQ0FBRSxRQUFRLENBQUUsRUFBRyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBQSxpQkFBUyxFQUFDLFFBQVEsQ0FBVSxDQUFDO0lBRTNDLElBQUssQ0FBQyxLQUFLLEVBQUcsQ0FBQztRQUNkLE9BQU87SUFDUixDQUFDO0lBRUQsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFaEMsSUFBSyxDQUFDLElBQUksRUFBRyxDQUFDO1FBQ2IsT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBSXBDLE1BQU0sTUFBTSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsY0FBTSxFQUFFLENBQVcsRUFBRSxJQUFJLENBQUUsQ0FBQztJQUNqQyxPQUFPLE1BQU0sQ0FBQztBQUVmLENBQUMsQ0FBQztBQTNCVyxRQUFBLE1BQU0sVUEyQmpCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBFcnJvcnNUeXBlcyB9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL2Vycm9ycyc7XG5jb25zdCB7IFdST05HX0lOU1RBTkNFX0lOVk9DQVRJT04gfSA9IEVycm9yc1R5cGVzO1xuXG5pbXBvcnQge1xuXHRfZ2V0UHJvcHMsIFByb3BzIFxufSBmcm9tICcuLi9hcGkvdHlwZXMvUHJvcHMnO1xuXG4vLyBzZWVrIGZvciBmaXJ0cyBwYXJlbnQgaW5zdGFuY2Vcbi8vIG9mIGluc3RhbmNlIHByb3RvdHlwZSBjaGFpblxuLy8gd2l0aCBjb25zdHJ1Y3RvcnMgb2YgcGF0aFxuZXhwb3J0IGNvbnN0IHBhcmVudCA9IDxUIGV4dGVuZHMgb2JqZWN0PiggaW5zdGFuY2U6IFQsIHBhdGg/OiBzdHJpbmcgKTogb2JqZWN0IHwgdW5kZWZpbmVkID0+IHtcblxuXHQvLyBhdCB0aGlzIHNpdHVhdGlvbiB0aGlzIGNoZWNrIGlzIGVub3VnaFxuXHRpZiAoIGluc3RhbmNlICE9PSBPYmplY3QoIGluc3RhbmNlICkgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX0lOU1RBTkNFX0lOVk9DQVRJT047XG5cdH1cblxuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbnN0YW5jZSkgYXMgUHJvcHM7XG5cblx0aWYgKCAhcHJvcHMgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgeyBfX3BhcmVudF9fOiBwIH0gPSBwcm9wcztcblxuXHRpZiAoICFwYXRoICkge1xuXHRcdHJldHVybiBwO1xuXHR9XG5cblx0Y29uc3QgeyBjb25zdHJ1Y3RvcjogeyBuYW1lIH0gfSA9IHA7XG5cblx0Ly8gc2VlayB0aHJvdWggcGFyZW50IGluc3RhbmNlc1xuXHQvLyBhYm91dCB0aGUgZmlzdCBjb25zdHJ1Y3RvciB3aXRoIHRoaXMgbmFtZVxuXHRjb25zdCByZXN1bHQgPSBuYW1lID09PSBwYXRoID9cblx0XHRwIDogcGFyZW50KCBwIGFzIG9iamVjdCwgcGF0aCApO1xuXHRyZXR1cm4gcmVzdWx0O1xuXG59O1xuIl19
@@ -1,12 +1,2 @@
1
- export declare const parse: (self: object) => {
2
- name: string;
3
- props: {
4
- [index: string]: unknown;
5
- };
6
- self: object;
7
- proto: object;
8
- joint: {
9
- [index: string]: unknown;
10
- };
11
- parent: unknown;
12
- };
1
+ import type { Parsed } from '../types';
2
+ export declare const parse: <T extends object>(self: T) => Parsed<T>;