@lowlighter/is 1.4.0 → 1.4.1

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 (3) hide show
  1. package/is.d.ts +1 -0
  2. package/is.js +7 -2
  3. package/package.json +2 -1
package/is.d.ts CHANGED
@@ -11,6 +11,7 @@ export type * from "@zod/zod";
11
11
  /** Parses a regular expression back into a `RegExp`. */ export declare function regex<T extends is.ZodType>(schema: T): is.ZodPreprocess<T>;
12
12
  /** Parses a date string back into a `Date`. */ export declare function date<T extends is.ZodType>(schema: T): is.ZodPreprocess<T>;
13
13
  /** Parses a duration string into milliseconds. */ export declare function duration<T extends is.ZodType>(schema: T): is.ZodPreprocess<T>;
14
+ /** Schema-definition marker identifying Unix millisecond values. */ export declare const $timestamp: unique symbol;
14
15
  /** Type alias for timestamp. */ export declare function timestamp(options?: {
15
16
  default?: true;
16
17
  }): is.ZodDefault<is.ZodNumberFormat>;
package/is.js CHANGED
@@ -130,8 +130,13 @@ export * as is from "@zod/zod";
130
130
  return value;
131
131
  }, schema);
132
132
  }
133
+ /** Schema-definition marker identifying Unix millisecond values. */ export const $timestamp = Symbol.for("@lowlighter/is/timestamp");
133
134
  export function timestamp({ default: defaults = true } = {}) {
134
- return defaults ? is.int().min(0).default(()=>Date.now()) : is.int().min(0);
135
+ const schema = is.int().min(0);
136
+ Object.assign(schema._zod.def, {
137
+ [$timestamp]: true
138
+ });
139
+ return defaults ? schema.default(()=>Date.now()) : schema;
135
140
  }
136
141
  /** Type alias for primitive values. */ export const primitive = is.union([
137
142
  is.string(),
@@ -338,4 +343,4 @@ export function parse(schema, values, { async = false, zodError } = {}) {
338
343
  throw new TypeError(`Validation failed: \n${prettifyIssue(error.issues)}`);
339
344
  }
340
345
  }
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvaXMvaXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuLy8gZGVuby1saW50LWlnbm9yZS1maWxlIG5vLWV4cGxpY2l0LWFueSBiYW4tdHlwZXNcbmltcG9ydCB0eXBlIHsgUGFyc2VPcHRpb25zIGFzIFBhcnNlQXJnc09wdGlvbnMgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiXG5pbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiXG5pbXBvcnQgKiBhcyBpcyBmcm9tIFwiQHpvZC96b2RcIlxuZXhwb3J0ICogYXMgaXMgZnJvbSBcIkB6b2Qvem9kXCJcbmV4cG9ydCB0eXBlICogZnJvbSBcIkB6b2Qvem9kXCJcblxuLyoqIENvYWxlc2NlcyBhIHBhcnNlZCB2YWx1ZSB0byBgdW5kZWZpbmVkYCBzbyBzY2hlbWEgZGVmYXVsdHMgY2FuIGJlIGFwcGxpZWQuICovXG5leHBvcnQgZnVuY3Rpb24gY29hbGVzY2U8VCBleHRlbmRzIGlzLlpvZFR5cGU+KHNjaGVtYTogVCk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUpID0+IHtcbiAgICByZXR1cm4gdmFsdWUgPz8gdW5kZWZpbmVkXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIENvZXJjZXMgYSBwYXJzZWQgdmFsdWUgaW50byBgbnVtYmVyYCB0eXBlIHdoZW4gcG9zc2libGUuICovXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlPFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2RQcmVwcm9jZXNzPFQ+IHtcbiAgcmV0dXJuIGlzLnByZXByb2Nlc3MoKHZhbHVlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgY29lcmNlZCA9IE51bWJlcih2YWx1ZSlcbiAgICAgIGlmICgoIU51bWJlci5pc05hTihjb2VyY2VkKSkgfHwgKHZhbHVlID09PSBcIk5hTlwiKSlcbiAgICAgICAgcmV0dXJuIGNvZXJjZWRcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIEFsbG93cyB0aGUgYG51bGxgIHZhbHVlIGFuZCBtYWtlcyBpdCB0aGUgZGVmYXVsdCB2YWx1ZSBpbiBzY2hlbWFzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG51bGxhYmxlPFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2REZWZhdWx0PGlzLlpvZE51bGxhYmxlPFQ+PiB7XG4gIHJldHVybiBzY2hlbWEubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpXG59XG5cbi8qKiBFbnN1cmVzIGEgcGFyc2VkIHZhbHVlIGlzIGNvbXBhdGlibGUgd2l0aCBgc3RydWN0dXJlZENsb25lYCBhbGdvcml0aG0uICovXG5leHBvcnQgZnVuY3Rpb24gY2xvbmFibGU8VCBleHRlbmRzIGlzLlpvZFR5cGU+KHNjaGVtYTogVCk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUsIGNvbnRleHQpID0+IHtcbiAgICB0cnkge1xuICAgICAgc3RydWN0dXJlZENsb25lKHZhbHVlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb250ZXh0LmFkZElzc3VlKGBJbnZhbGlkIGlucHV0OiBWYWx1ZSBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCBzdHJ1Y3R1cmVkQ2xvbmUgYWxnb3JpdGhtOiAke2Vycm9yfWApXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBUcmFuc2Zvcm1zIGEgcGFyc2VkIHZhbHVlIGludG8gYW4gYXJyYXkgaWYgaXQgaXMgbm90IGFscmVhZHkgb25lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5YWJsZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICByZXR1cm4gW3ZhbHVlXVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBUcmFuc2Zvcm1zIGEgQ0xJIGFyZ3VtZW50cyBzdHJpbmcgaW50byBhbiBvYmplY3Qgb3IgYXJyYXkuICovXG5leHBvcnQgZnVuY3Rpb24gY2xpYWJsZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCBvcHRpb25zPzogUGFyc2VBcmdzT3B0aW9ucyk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUsIGNvbnRleHQpID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCBhcmdzID0gW11cbiAgICAgIGxldCBjdXJyZW50ID0gXCJcIlxuICAgICAgbGV0IHF1b3RlZCA9IFwiXCJcbiAgICAgIGxldCBlc2NhcGUgPSBmYWxzZVxuICAgICAgbGV0IHF1b3RlcyA9IGZhbHNlXG4gICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgdmFsdWUpIHtcbiAgICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICAgIGN1cnJlbnQgKz0gY2hhclxuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHF1b3RlZCA9PT0gJ1wiJykgJiYgKGNoYXIgPT09IFwiXFxcXFwiKSkge1xuICAgICAgICAgIGVzY2FwZSA9IHRydWVcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGlmICgoIXF1b3RlZCkgJiYgKChjaGFyID09PSAnXCInKSB8fCAoY2hhciA9PT0gXCInXCIpKSkge1xuICAgICAgICAgIHF1b3RlZCA9IGNoYXJcbiAgICAgICAgICBxdW90ZXMgPSB0cnVlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBpZiAocXVvdGVkID09PSBjaGFyKSB7XG4gICAgICAgICAgcXVvdGVkID0gXCJcIlxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCghcXVvdGVkKSAmJiAoY2hhciA9PT0gXCIgXCIpKSB7XG4gICAgICAgICAgaWYgKGN1cnJlbnQgfHwgcXVvdGVzKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goY3VycmVudClcbiAgICAgICAgICAgIGN1cnJlbnQgPSBcIlwiXG4gICAgICAgICAgICBxdW90ZXMgPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgKz0gY2hhclxuICAgICAgfVxuICAgICAgaWYgKHF1b3RlZCkge1xuICAgICAgICBjb250ZXh0LmFkZElzc3VlKGBVbmNsb3NlZCBxdW90ZTogJHtxdW90ZWR9JHtjdXJyZW50fWApXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnQgfHwgcXVvdGVzKVxuICAgICAgICBhcmdzLnB1c2goY3VycmVudClcbiAgICAgIHJldHVybiBvcHRpb25zID8gcGFyc2VBcmdzKGFyZ3MsIG9wdGlvbnMpIDogYXJnc1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSwgc2NoZW1hKVxufVxuXG4vKiogUGFyc2VzIGEgcmVndWxhciBleHByZXNzaW9uIGJhY2sgaW50byBhIGBSZWdFeHBgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2V4PFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2RQcmVwcm9jZXNzPFQ+IHtcbiAgY29uc3QgZGVmaW5pdGlvbiA9IC9eXFwvKD88cGF0dGVybj4uKj8pXFwvKD88ZmxhZ3M+W2RnaW1zdXZ5XSopJC9zXG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGdyb3VwcyA9IHZhbHVlLm1hdGNoKGRlZmluaXRpb24pPy5ncm91cHNcbiAgICAgIGlmIChncm91cHMpIHtcbiAgICAgICAgY29uc3QgeyBwYXR0ZXJuLCBmbGFncyB9ID0gZ3JvdXBzXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgZmxhZ3MpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBQYXJzZXMgYSBkYXRlIHN0cmluZyBiYWNrIGludG8gYSBgRGF0ZWAuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSlcbiAgICAgIGlmICghTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSlcbiAgICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIFBhcnNlcyBhIGR1cmF0aW9uIHN0cmluZyBpbnRvIG1pbGxpc2Vjb25kcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkdXJhdGlvbjxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGdyb3VwcyA9IHZhbHVlLm1hdGNoKC9eXFxzKig/Oig/PGRheXM+XFxkKylkKD86YXlzPyk/KT9cXHMqKD86KD88aG91cnM+XFxkKyloKD86KD86b3UpP3JzPyk/KT9cXHMqKD86KD88bWludXRlcz5cXGQrKW0oPzppbig/OnV0ZSk/cz8pPyk/XFxzKig/Oig/PHNlY29uZHM+XFxkKylzKD86ZWMoPzpvbmQpP3M/KT8pP1xccyooPzooPzxtaWxsaXNlY29uZHM+XFxkKykoPzptKD86aWxsaSk/cyg/OmVjKD86b25kKT9zPyk/KT8pP1xccyokLyk/Lmdyb3Vwc1xuICAgICAgaWYgKGdyb3Vwcykge1xuICAgICAgICBsZXQgeyBkYXlzID0gMCwgaG91cnMgPSAwLCBtaW51dGVzID0gMCwgc2Vjb25kcyA9IDAsIG1pbGxpc2Vjb25kcyA9IDAgfSA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhncm91cHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCBOdW1iZXIodmFsdWUpXSkuZmlsdGVyKChbXywgdmFsdWVdKSA9PiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSlcbiAgICAgICAgaG91cnMgKz0gZGF5cyAqIDI0XG4gICAgICAgIG1pbnV0ZXMgKz0gaG91cnMgKiA2MFxuICAgICAgICBzZWNvbmRzICs9IG1pbnV0ZXMgKiA2MFxuICAgICAgICBtaWxsaXNlY29uZHMgKz0gc2Vjb25kcyAqIDEwMDBcbiAgICAgICAgcmV0dXJuIG1pbGxpc2Vjb25kc1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSwgc2NoZW1hKVxufVxuXG4vKiogVHlwZSBhbGlhcyBmb3IgdGltZXN0YW1wLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbWVzdGFtcChvcHRpb25zPzogeyBkZWZhdWx0PzogdHJ1ZSB9KTogaXMuWm9kRGVmYXVsdDxpcy5ab2ROdW1iZXJGb3JtYXQ+XG4vKiogVHlwZSBhbGlhcyBmb3IgdGltZXN0YW1wICh3aXRob3V0IGEgZGVmYXVsdCkuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZXN0YW1wKG9wdGlvbnM6IHsgZGVmYXVsdDogZmFsc2UgfSk6IGlzLlpvZE51bWJlckZvcm1hdFxuLyoqIFR5cGUgYWxpYXMgZm9yIHRpbWVzdGFtcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1lc3RhbXAob3B0aW9ucz86IHsgZGVmYXVsdD86IHRydWUgfSB8IHsgZGVmYXVsdDogZmFsc2UgfSk6IGlzLlpvZE51bWJlckZvcm1hdCB8IGlzLlpvZERlZmF1bHQ8aXMuWm9kTnVtYmVyRm9ybWF0PlxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVzdGFtcCh7IGRlZmF1bHQ6IGRlZmF1bHRzID0gdHJ1ZSB9ID0ge30pOiBpcy5ab2ROdW1iZXJGb3JtYXQgfCBpcy5ab2REZWZhdWx0PGlzLlpvZE51bWJlckZvcm1hdD4ge1xuICByZXR1cm4gZGVmYXVsdHMgPyBpcy5pbnQoKS5taW4oMCkuZGVmYXVsdCgoKSA9PiBEYXRlLm5vdygpKSA6IGlzLmludCgpLm1pbigwKVxufVxuXG4vKiogVHlwZSBhbGlhcyBmb3IgcHJpbWl0aXZlIHZhbHVlcy4gKi9cbmV4cG9ydCBjb25zdCBwcmltaXRpdmUgPSBpcy51bmlvbihbaXMuc3RyaW5nKCksIGlzLm51bWJlcigpLCBpcy5iaWdpbnQoKSwgaXMuYm9vbGVhbigpLCBpcy51bmRlZmluZWQoKSwgaXMubnVsbCgpLCBpcy5kYXRlKCksIGlzLmluc3RhbmNlb2YoRXJyb3IpXSkgYXMgaXMuWm9kVW5pb248XG4gIHJlYWRvbmx5IFtpcy5ab2RTdHJpbmcsIGlzLlpvZE51bWJlciwgaXMuWm9kQmlnSW50LCBpcy5ab2RCb29sZWFuLCBpcy5ab2RVbmRlZmluZWQsIGlzLlpvZE51bGwsIGlzLlpvZERhdGUsIGlzLlpvZEN1c3RvbTxFcnJvciwgRXJyb3I+XVxuPlxuXG4vKiogVHlwZSBhbGlhcyBmb3IgdHlwZWQgYXJyYXlzLiAqL1xuZXhwb3J0IGNvbnN0IHR5cGVkQXJyYXkgPSBpcy51bmlvbihbXG4gIGlzLmluc3RhbmNlb2YoSW50OEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihVaW50OEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihVaW50OENsYW1wZWRBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoSW50MTZBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoVWludDE2QXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKEludDMyQXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKFVpbnQzMkFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihGbG9hdDE2QXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKEZsb2F0MzJBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoRmxvYXQ2NEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihCaWdJbnQ2NEFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihCaWdVaW50NjRBcnJheSksXG5dKSBhcyBpcy5ab2RVbmlvbjxcbiAgcmVhZG9ubHkgW1xuICAgIGlzLlpvZEN1c3RvbTxJbnQ4QXJyYXksIEludDhBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPFVpbnQ4QXJyYXksIFVpbnQ4QXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxVaW50OENsYW1wZWRBcnJheSwgVWludDhDbGFtcGVkQXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxJbnQxNkFycmF5LCBJbnQxNkFycmF5PixcbiAgICBpcy5ab2RDdXN0b208VWludDE2QXJyYXksIFVpbnQxNkFycmF5PixcbiAgICBpcy5ab2RDdXN0b208SW50MzJBcnJheSwgSW50MzJBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPFVpbnQzMkFycmF5LCBVaW50MzJBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPEZsb2F0MTZBcnJheSwgRmxvYXQxNkFycmF5PixcbiAgICBpcy5ab2RDdXN0b208RmxvYXQzMkFycmF5LCBGbG9hdDMyQXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxGbG9hdDY0QXJyYXksIEZsb2F0NjRBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPEJpZ0ludDY0QXJyYXksIEJpZ0ludDY0QXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxCaWdVaW50NjRBcnJheSwgQmlnVWludDY0QXJyYXk+LFxuICBdXG4+XG5cbi8qKiBTdXBwb3J0ZWQgcHJvdG9jb2xzIGZvciB7QGxpbmtjb2RlIHVybH0gdHlwZSBhbGlhcy4gKi9cbmNvbnN0IHByb3RvY29scyA9IFtcImh0dHBzP1wiLCBcImZpbGVcIiwgXCJ3YXNtXCIsIFwiZGF0YVwiLCBcImJsb2JcIiwgXCJqc3JcIiwgXCJucG1cIl1cblxuLyoqIFR5cGUgYWxpYXMgZm9yIFVSTHMgd2l0aCBzdXBwb3J0ZWQgcHJvdG9jb2xzLiAqL1xuZXhwb3J0IGNvbnN0IHVybCA9IE9iamVjdC5hc3NpZ24oaXMudXJsKHsgcHJvdG9jb2w6IG5ldyBSZWdFeHAoYF4oPzoke3Byb3RvY29scy5qb2luKFwifFwiKX0pJGApLCBob3N0bmFtZTogLy4qLyB9KSwge1xuICB3aXRoKGFkZGl0aW9uYWw6IHN0cmluZ1tdLCB7IGhvc3RuYW1lID0gLy4qLywgLi4ub3B0aW9ucyB9OiBPbWl0PGlzLnouY29yZS4kWm9kVVJMUGFyYW1zLCBcInByb3RvY29sXCI+ID0ge30pIHtcbiAgICBjb25zdCBlc2NhcGVkID0gYWRkaXRpb25hbC5tYXAoKHByb3RvY29sKSA9PiBwcm90b2NvbC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIikpXG4gICAgcmV0dXJuIGlzLnVybCh7IC4uLm9wdGlvbnMsIHByb3RvY29sOiBuZXcgUmVnRXhwKGBeKD86JHtbLi4ucHJvdG9jb2xzLCAuLi5lc2NhcGVkXS5qb2luKFwifFwiKX0pJGApLCBob3N0bmFtZSB9KVxuICB9LFxufSkgYXMgaXMuWm9kVVJMICYge1xuICAvKiogQ3JlYXRlIGEgbmV3IHR5cGUgYWxpYXMgZm9yIFVSTHMgd2l0aCBhZGRpdGlvbmFsIGN1c3RvbSBzdXBwb3J0ZWQgcHJvdG9jb2xzLiAqL1xuICB3aXRoKGFkZGl0aW9uYWw6IHN0cmluZ1tdLCBwYXJhbXM/OiBPbWl0PGlzLnouY29yZS4kWm9kVVJMUGFyYW1zLCBcInByb3RvY29sXCI+KTogaXMuWm9kVVJMXG59XG5cbi8qKiBUeXBlIGFsaWFzIGZvciBib2R5IGluaXQuICovXG5leHBvcnQgY29uc3QgYm9keUluaXQgPSBpcy51bmlvbihbXG4gIGlzLnN0cmluZygpLFxuICBpcy5pbnN0YW5jZW9mKFN0cmluZyksXG4gIGlzLmluc3RhbmNlb2YoQmxvYiksXG4gIGlzLmluc3RhbmNlb2YoQXJyYXlCdWZmZXIpLFxuICBpcy5pbnN0YW5jZW9mKERhdGFWaWV3KSxcbiAgaXMuaW5zdGFuY2VvZihGb3JtRGF0YSksXG4gIGlzLmluc3RhbmNlb2YoUmVhZGFibGVTdHJlYW0pLFxuICBpcy5pbnN0YW5jZW9mKFVSTFNlYXJjaFBhcmFtcyksXG4gIHR5cGVkQXJyYXksXG5dKS5udWxsYWJsZSgpIGFzIGlzLlpvZE51bGxhYmxlPFxuICBpcy5ab2RVbmlvbjxcbiAgICByZWFkb25seSBbXG4gICAgICBpcy5ab2RTdHJpbmcsXG4gICAgICBpcy5ab2RDdXN0b208U3RyaW5nLCBTdHJpbmc+LFxuICAgICAgaXMuWm9kQ3VzdG9tPEJsb2IsIEJsb2I+LFxuICAgICAgaXMuWm9kQ3VzdG9tPEFycmF5QnVmZmVyLCBBcnJheUJ1ZmZlcj4sXG4gICAgICBpcy5ab2RDdXN0b208RGF0YVZpZXcsIERhdGFWaWV3PixcbiAgICAgIGlzLlpvZEN1c3RvbTxGb3JtRGF0YSwgRm9ybURhdGE+LFxuICAgICAgaXMuWm9kQ3VzdG9tPFJlYWRhYmxlU3RyZWFtLCBSZWFkYWJsZVN0cmVhbT4sXG4gICAgICBpcy5ab2RDdXN0b208VVJMU2VhcmNoUGFyYW1zLCBVUkxTZWFyY2hQYXJhbXM+LFxuICAgICAgdHlwZW9mIHR5cGVkQXJyYXksXG4gICAgXVxuICA+XG4+XG5cbi8qKlxuICogU3lzdGVtIHBlcm1pc3Npb25zIGZsYWdzLlxuICpcbiAqIFNlZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmRlbm8uY29tL3J1bnRpbWUvZnVuZGFtZW50YWxzL3NlY3VyaXR5LyNzeXN0ZW0taW5mb3JtYXRpb259LlxuICovXG5jb25zdCBzeXNmbGFncyA9IFtcImhvc3RuYW1lXCIsIFwib3NSZWxlYXNlXCIsIFwib3NVcHRpbWVcIiwgXCJsb2FkYXZnXCIsIFwibmV0d29ya0ludGVyZmFjZXNcIiwgXCJzeXN0ZW1NZW1vcnlJbmZvXCIsIFwidWlkXCIsIFwiZ2lkXCJdIGFzIGNvbnN0XG5cbi8qKiBUeXBlIGFsaWFzIGZhY3RvcnkgZm9yIHBlcm1pc3Npb24gZGVzY3JpcHRvcnMuICovXG5mdW5jdGlvbiBwZXJtaXNzaW9uKHsgZXhwYW5kID0gZmFsc2UsIHVybHMgPSBmYWxzZSwgc3lzID0gZmFsc2UgfSA9IHt9KSB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gXCJpbmhlcml0XCIpXG4gICAgICByZXR1cm4gdmFsdWVcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKVxuICAgICAgdmFsdWUgPSBbdmFsdWVdXG4gICAgaWYgKGV4cGFuZCkge1xuICAgICAgaWYgKCh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB8fCAodmFsdWUgPT09IGZhbHNlKSlcbiAgICAgICAgdmFsdWUgPSBbXVxuICAgIH1cbiAgICBpZiAodXJscyAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh2YWx1ZSkgPT4gdmFsdWUgaW5zdGFuY2VvZiBVUkwgPyB2YWx1ZS5ocmVmIDogdmFsdWUpXG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIGlzLnVuaW9uKFtpcy5saXRlcmFsKFwiaW5oZXJpdFwiKSwgaXMuYm9vbGVhbigpLCBpcy5hcnJheShzeXMgPyBpcy5lbnVtKHN5c2ZsYWdzKSA6IGlzLnN0cmluZygpKV0pKVxufVxuXG4vKiogVHlwZSBhbGlhcyBmYWN0b3J5IGZvciBwZXJtaXNzaW9ucyBvYmplY3QuICovXG5leHBvcnQgZnVuY3Rpb24gcGVybWlzc2lvbnM8VCBleHRlbmRzIGtleW9mIERlbm8uUGVybWlzc2lvbk9wdGlvbnNPYmplY3Q+KFxuICBvcHRpb25zPzogeyBzZXQ/OiBUW107IGV4cGFuZD86IGZhbHNlIH0sXG4pOiBpcy5ab2RVbmlvbjxyZWFkb25seSBbaXMuWm9kT2JqZWN0PFJlY29yZDxULCBpcy5ab2RPcHRpb25hbDxpcy5ab2RQcmVwcm9jZXNzPGlzLlpvZFVuaW9uPFtpcy5ab2RMaXRlcmFsPFwiaW5oZXJpdFwiPiwgaXMuWm9kQm9vbGVhbiwgaXMuWm9kQXJyYXk8aXMuWm9kU3RyaW5nPl0+Pj4+PiwgaXMuWm9kVW5pb248cmVhZG9ubHkgW2lzLlpvZExpdGVyYWw8XCJpbmhlcml0XCI+LCBpcy5ab2RMaXRlcmFsPFwibm9uZVwiPl0+XT5cbi8qKiBUeXBlIGFsaWFzIGZhY3RvcnkgZm9yIHBlcm1pc3Npb25zIG9iamVjdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNzaW9uczxUIGV4dGVuZHMga2V5b2YgRGVuby5QZXJtaXNzaW9uT3B0aW9uc09iamVjdD4oXG4gIG9wdGlvbnM6IHsgc2V0PzogVFtdOyBleHBhbmQ6IHRydWUgfSxcbik6IGlzLlpvZFByZXByb2Nlc3M8aXMuWm9kT2JqZWN0PFJlY29yZDxULCBpcy5ab2RQcmVwcm9jZXNzPGlzLlpvZFVuaW9uPFtpcy5ab2RMaXRlcmFsPFwiaW5oZXJpdFwiPiwgaXMuWm9kTGl0ZXJhbDx0cnVlPiwgaXMuWm9kQXJyYXk8aXMuWm9kU3RyaW5nPl0+Pj4+PlxuZXhwb3J0IGZ1bmN0aW9uIHBlcm1pc3Npb25zPFQgZXh0ZW5kcyBrZXlvZiBEZW5vLlBlcm1pc3Npb25PcHRpb25zT2JqZWN0Pih7IHNldCA9IFtcInJlYWRcIiwgXCJ3cml0ZVwiLCBcIm5ldFwiLCBcImVudlwiLCBcInJ1blwiLCBcInN5c1wiLCBcImZmaVwiLCBcImltcG9ydFwiXSBhcyBUW10sIGV4cGFuZCA9IGZhbHNlIH06IHsgc2V0PzogVFtdOyBleHBhbmQ/OiBib29sZWFuIH0gPSB7fSkge1xuICBjb25zdCB2YWxpZGF0b3IgPSBpcy5vYmplY3Qoe1xuICAgIHJlYWQ6IHBlcm1pc3Npb24oeyBleHBhbmQsIHVybHM6IHRydWUgfSksXG4gICAgd3JpdGU6IHBlcm1pc3Npb24oeyBleHBhbmQsIHVybHM6IHRydWUgfSksXG4gICAgbmV0OiBwZXJtaXNzaW9uKHsgZXhwYW5kIH0pLFxuICAgIGVudjogcGVybWlzc2lvbih7IGV4cGFuZCB9KSxcbiAgICBzeXM6IHBlcm1pc3Npb24oeyBleHBhbmQsIHN5czogdHJ1ZSB9KSxcbiAgICBydW46IHBlcm1pc3Npb24oeyBleHBhbmQsIHVybHM6IHRydWUgfSksXG4gICAgZmZpOiBwZXJtaXNzaW9uKHsgZXhwYW5kLCB1cmxzOiB0cnVlIH0pLFxuICAgIGltcG9ydDogcGVybWlzc2lvbih7IGV4cGFuZCB9KSxcbiAgfSkucGljazxhbnk+KE9iamVjdC5mcm9tRW50cmllcyhzZXQubWFwKChrZXkpID0+IFtrZXksIHRydWVdKSkpLnN0cmljdCgpXG5cbiAgLy8gUmV0dXJuIGVpdGhlciB0aGUgY29tcGFjdCBvciBleHBhbmRlZCB2ZXJzaW9uXG4gIGlmICghZXhwYW5kKVxuICAgIHJldHVybiB2YWxpZGF0b3IucGFydGlhbCgpLm9yKGlzLnVuaW9uKFtpcy5saXRlcmFsKFwiaW5oZXJpdFwiKSwgaXMubGl0ZXJhbChcIm5vbmVcIildKSlcbiAgcmV0dXJuIGlzLnByZXByb2Nlc3MoKHZhbHVlKSA9PiB7XG4gICAgaWYgKCh2YWx1ZSA9PT0gXCJpbmhlcml0XCIpIHx8ICh2YWx1ZSA9PT0gXCJub25lXCIpKVxuICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhzZXQubWFwKChrZXkpID0+IFtrZXksIHZhbHVlID09PSBcIm5vbmVcIiA/IFtdIDogdmFsdWVdKSlcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKVxuICAgICAgdmFsdWUgPSBbdmFsdWVdXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgcmV0dXJuIHsgLi4uT2JqZWN0LmZyb21FbnRyaWVzKHNldC5tYXAoKHBlcm1pc3Npb24pID0+IFtwZXJtaXNzaW9uLCBmYWxzZV0pKSwgLi4uT2JqZWN0LmZyb21FbnRyaWVzKHZhbHVlLm1hcCgocGVybWlzc2lvbikgPT4gW3Blcm1pc3Npb24sIFwiaW5oZXJpdFwiXSkpIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSwgdmFsaWRhdG9yKSBhcyB1bmtub3duXG59XG5cbi8qKiBUeXBlIGFsaWFzIGZvciBleHByZXNzaW9uIHN0cmluZ3MuICovXG5leHBvcnQgY29uc3QgZXhwcmVzc2lvbiA9IGlzLnN0cmluZygpLnJlZ2V4KC9cXCRcXHsuKlxcfS8pIGFzIGlzLlpvZFN0cmluZ1xuXG4vKiogVHlwZSBhbGlhcyBmb3IgY2FsbGFibGUgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0IGNhbGxhYmxlID0gaXMudW5rbm93bigpLnJlZmluZSgodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiLCB7IG1lc3NhZ2U6IFwiSW52YWxpZCBpbnB1dDogVmFsdWUgbXVzdCBiZSBjYWxsYWJsZVwiIH0pIGFzIHVua25vd24gYXMgaXMuWm9kQ3VzdG9tPEZ1bmN0aW9uLCB1bmtub3duPlxuXG4vKiogVHlwZSBhbGlhcyBmb3IgWm9kIHNjaGVtYXMuICovXG5leHBvcnQgY29uc3QgcGFyc2VyID0gaXMuY3VzdG9tKCh2YWx1ZSkgPT4gKHZhbHVlIGluc3RhbmNlb2YgaXMuWm9kVHlwZSkgfHwgKHZhbHVlICYmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpICYmICh0eXBlb2YgKHZhbHVlIGFzIFJlY29yZDxQcm9wZXJ0eUtleSwgdW5rbm93bj4pLnBhcnNlID09PSBcImZ1bmN0aW9uXCIpKSwgeyBtZXNzYWdlOiBcIkludmFsaWQgaW5wdXQ6IFZhbHVlIG11c3QgYmUgYSBab2Qgc2NoZW1hXCIgfSkgYXMgaXMuWm9kQ3VzdG9tPFxuICBpcy5ab2RUeXBlLFxuICB1bmtub3duXG4+XG5cbi8qKiBPYmplY3QgdGhhdCByZXNzZW1ibGUgYSBab2RFcnJvci4gKi9cbnR5cGUgWm9kRXJyb3JMaWtlID0geyBwYXRoPzogUHJvcGVydHlLZXlbXTsgbWVzc2FnZTogc3RyaW5nOyBlcnJvcnM/OiBab2RFcnJvckxpa2VbXVtdIH1cblxuLyoqIENvbnZlcnQgYSBwcm9wZXJ0eSBrZXkgcGF0aCB0byBhIHN0cmluZy4gKi9cbmZ1bmN0aW9uIHRvUGF0aChwYXRoOiBQcm9wZXJ0eUtleVtdID0gW10pOiBzdHJpbmcge1xuICBjb25zdCBzZWdtZW50cyA9IFtdXG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBwYXRoKSB7XG4gICAgaWYgKHR5cGVvZiBzZWdtZW50ID09PSBcIm51bWJlclwiKVxuICAgICAgc2VnbWVudHMucHVzaChgWyR7c2VnbWVudH1dYClcbiAgICBlbHNlIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gXCJzeW1ib2xcIiB8fCAvW15cXHckXS8udGVzdChTdHJpbmcoc2VnbWVudCkpKVxuICAgICAgc2VnbWVudHMucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkoU3RyaW5nKHNlZ21lbnQpKX1dYClcbiAgICBlbHNlXG4gICAgICBzZWdtZW50cy5wdXNoKGAuJHtzZWdtZW50fWApXG4gIH1cbiAgcmV0dXJuIHNlZ21lbnRzLmpvaW4oXCJcIilcbn1cblxuLyoqIFByZXR0aWZ5IHZhbGlkYXRpb24gaXNzdWVzIGluIGEgbW9yZSBkZXRhaWxlZCB3YXkuICovXG5mdW5jdGlvbiBwcmV0dGlmeUlzc3VlKGVycm9yczogWm9kRXJyb3JMaWtlW10sIHsgaW5kZW50ID0gXCJcIiB9ID0ge30pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lcyA9IFtdXG4gIGVycm9ycyA9IFsuLi5lcnJvcnNdLnNvcnQoKGEsIGIpID0+IChhLnBhdGggPz8gW10pLmxlbmd0aCAtIChiLnBhdGggPz8gW10pLmxlbmd0aClcbiAgZm9yIChjb25zdCBlcnJvciBvZiBlcnJvcnMpIHtcbiAgICBsaW5lcy5wdXNoKGAke2luZGVudH3inJggJHtlcnJvci5tZXNzYWdlfWApXG4gICAgaWYgKGVycm9yLnBhdGg/Lmxlbmd0aClcbiAgICAgIGxpbmVzLnB1c2goYCR7aW5kZW50fSAg4oaSIGF0ICR7dG9QYXRoKGVycm9yLnBhdGgpfWApXG4gICAgaWYgKGVycm9yLmVycm9ycz8ubGVuZ3RoKSB7XG4gICAgICBsaW5lcy5wdXNoKGAke2luZGVudH0gIOKGkiB0cmllZCB0byBmaXQgaW50byBvbmUgb2YgdGhlIGFsbG93ZWQgdHlwZXM6YClcbiAgICAgIGZvciAoY29uc3Qgc3ViZXJyb3Igb2YgZXJyb3IuZXJyb3JzKVxuICAgICAgICBsaW5lcy5wdXNoKHByZXR0aWZ5SXNzdWUoc3ViZXJyb3IsIHsgaW5kZW50OiBgJHtpbmRlbnR9ICAgICAgYCB9KS5yZXBsYWNlKFwiICDinJhcIiwgXCItIOKcmFwiKSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIilcbn1cblxuLyoqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgcGFyc2UoKX0uICovXG5leHBvcnQgdHlwZSBQYXJzZU9wdGlvbnMgPSB7XG4gIC8qKiBXaGV0aGVyIHRvIHBhcnNlIGFzeW5jaHJvbm91c2x5LiAqL1xuICBhc3luYz86IGJvb2xlYW5cbiAgLyoqIFdoZXRoZXIgdG8gdGhyb3cgYSBgWm9kRXJyb3JgIHJhdGhlciB0aGFuIGEgYFR5cGVFcnJvcmAgaW4gY2FzZSBvZiBmYWlsdXJlICovXG4gIHpvZEVycm9yPzogYm9vbGVhblxufVxuXG4vKiogUGFyc2UgYSBzY2hlbWEgc3luY2hyb25vdXNseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCB2YWx1ZXM6IHVua25vd24sIG9wdGlvbnM/OiBPbWl0PFBhcnNlT3B0aW9ucywgXCJhc3luY1wiPiAmIHsgYXN5bmM/OiBmYWxzZSB9KTogaXMuaW5mZXI8VD5cbi8qKiBQYXJzZSBhIHNjaGVtYSBhc3luY2hyb25vdXNseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCB2YWx1ZXM6IHVua25vd24sIG9wdGlvbnM6IE9taXQ8UGFyc2VPcHRpb25zLCBcImFzeW5jXCI+ICYgeyBhc3luYzogdHJ1ZSB9KTogUHJvbWlzZTxpcy5pbmZlcjxUPj5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCB2YWx1ZXM6IHVua25vd24sIHsgYXN5bmMgPSBmYWxzZSwgem9kRXJyb3IgfTogUGFyc2VPcHRpb25zID0ge30pIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXN5bmNcbiAgICAgID8gc2NoZW1hLnBhcnNlQXN5bmModmFsdWVzKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKCghKGVycm9yIGluc3RhbmNlb2YgaXMuWm9kRXJyb3IpKSB8fCB6b2RFcnJvcilcbiAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBWYWxpZGF0aW9uIGZhaWxlZDogXFxuJHtwcmV0dGlmeUlzc3VlKGVycm9yLmlzc3Vlcyl9YClcbiAgICAgIH0pXG4gICAgICA6IHNjaGVtYS5wYXJzZSh2YWx1ZXMpXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCghKGVycm9yIGluc3RhbmNlb2YgaXMuWm9kRXJyb3IpKSB8fCB6b2RFcnJvcilcbiAgICAgIHRocm93IGVycm9yXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVmFsaWRhdGlvbiBmYWlsZWQ6IFxcbiR7cHJldHRpZnlJc3N1ZShlcnJvci5pc3N1ZXMpfWApXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1Ysa0RBQWtEO0FBRWxELFNBQVMsU0FBUyxRQUFRLHNCQUFxQjtBQUMvQyxZQUFZLFFBQVEsV0FBVTtBQUM5QixPQUFPLEtBQUssRUFBRSxNQUFNLFdBQVU7QUFHOUIsK0VBQStFLEdBQy9FLE9BQU8sU0FBUyxTQUErQixNQUFTO0VBQ3RELE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQztJQUNwQixPQUFPLFNB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
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvaXMvaXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuLy8gZGVuby1saW50LWlnbm9yZS1maWxlIG5vLWV4cGxpY2l0LWFueSBiYW4tdHlwZXNcbmltcG9ydCB0eXBlIHsgUGFyc2VPcHRpb25zIGFzIFBhcnNlQXJnc09wdGlvbnMgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiXG5pbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiXG5pbXBvcnQgKiBhcyBpcyBmcm9tIFwiQHpvZC96b2RcIlxuZXhwb3J0ICogYXMgaXMgZnJvbSBcIkB6b2Qvem9kXCJcbmV4cG9ydCB0eXBlICogZnJvbSBcIkB6b2Qvem9kXCJcblxuLyoqIENvYWxlc2NlcyBhIHBhcnNlZCB2YWx1ZSB0byBgdW5kZWZpbmVkYCBzbyBzY2hlbWEgZGVmYXVsdHMgY2FuIGJlIGFwcGxpZWQuICovXG5leHBvcnQgZnVuY3Rpb24gY29hbGVzY2U8VCBleHRlbmRzIGlzLlpvZFR5cGU+KHNjaGVtYTogVCk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUpID0+IHtcbiAgICByZXR1cm4gdmFsdWUgPz8gdW5kZWZpbmVkXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIENvZXJjZXMgYSBwYXJzZWQgdmFsdWUgaW50byBgbnVtYmVyYCB0eXBlIHdoZW4gcG9zc2libGUuICovXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlPFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2RQcmVwcm9jZXNzPFQ+IHtcbiAgcmV0dXJuIGlzLnByZXByb2Nlc3MoKHZhbHVlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgY29lcmNlZCA9IE51bWJlcih2YWx1ZSlcbiAgICAgIGlmICgoIU51bWJlci5pc05hTihjb2VyY2VkKSkgfHwgKHZhbHVlID09PSBcIk5hTlwiKSlcbiAgICAgICAgcmV0dXJuIGNvZXJjZWRcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIEFsbG93cyB0aGUgYG51bGxgIHZhbHVlIGFuZCBtYWtlcyBpdCB0aGUgZGVmYXVsdCB2YWx1ZSBpbiBzY2hlbWFzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG51bGxhYmxlPFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2REZWZhdWx0PGlzLlpvZE51bGxhYmxlPFQ+PiB7XG4gIHJldHVybiBzY2hlbWEubnVsbGFibGUoKS5kZWZhdWx0KG51bGwpXG59XG5cbi8qKiBFbnN1cmVzIGEgcGFyc2VkIHZhbHVlIGlzIGNvbXBhdGlibGUgd2l0aCBgc3RydWN0dXJlZENsb25lYCBhbGdvcml0aG0uICovXG5leHBvcnQgZnVuY3Rpb24gY2xvbmFibGU8VCBleHRlbmRzIGlzLlpvZFR5cGU+KHNjaGVtYTogVCk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUsIGNvbnRleHQpID0+IHtcbiAgICB0cnkge1xuICAgICAgc3RydWN0dXJlZENsb25lKHZhbHVlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb250ZXh0LmFkZElzc3VlKGBJbnZhbGlkIGlucHV0OiBWYWx1ZSBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCBzdHJ1Y3R1cmVkQ2xvbmUgYWxnb3JpdGhtOiAke2Vycm9yfWApXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBUcmFuc2Zvcm1zIGEgcGFyc2VkIHZhbHVlIGludG8gYW4gYXJyYXkgaWYgaXQgaXMgbm90IGFscmVhZHkgb25lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5YWJsZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICByZXR1cm4gW3ZhbHVlXVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBUcmFuc2Zvcm1zIGEgQ0xJIGFyZ3VtZW50cyBzdHJpbmcgaW50byBhbiBvYmplY3Qgb3IgYXJyYXkuICovXG5leHBvcnQgZnVuY3Rpb24gY2xpYWJsZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBULCBvcHRpb25zPzogUGFyc2VBcmdzT3B0aW9ucyk6IGlzLlpvZFByZXByb2Nlc3M8VD4ge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUsIGNvbnRleHQpID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCBhcmdzID0gW11cbiAgICAgIGxldCBjdXJyZW50ID0gXCJcIlxuICAgICAgbGV0IHF1b3RlZCA9IFwiXCJcbiAgICAgIGxldCBlc2NhcGUgPSBmYWxzZVxuICAgICAgbGV0IHF1b3RlcyA9IGZhbHNlXG4gICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgdmFsdWUpIHtcbiAgICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICAgIGN1cnJlbnQgKz0gY2hhclxuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHF1b3RlZCA9PT0gJ1wiJykgJiYgKGNoYXIgPT09IFwiXFxcXFwiKSkge1xuICAgICAgICAgIGVzY2FwZSA9IHRydWVcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGlmICgoIXF1b3RlZCkgJiYgKChjaGFyID09PSAnXCInKSB8fCAoY2hhciA9PT0gXCInXCIpKSkge1xuICAgICAgICAgIHF1b3RlZCA9IGNoYXJcbiAgICAgICAgICBxdW90ZXMgPSB0cnVlXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBpZiAocXVvdGVkID09PSBjaGFyKSB7XG4gICAgICAgICAgcXVvdGVkID0gXCJcIlxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCghcXVvdGVkKSAmJiAoY2hhciA9PT0gXCIgXCIpKSB7XG4gICAgICAgICAgaWYgKGN1cnJlbnQgfHwgcXVvdGVzKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goY3VycmVudClcbiAgICAgICAgICAgIGN1cnJlbnQgPSBcIlwiXG4gICAgICAgICAgICBxdW90ZXMgPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgKz0gY2hhclxuICAgICAgfVxuICAgICAgaWYgKHF1b3RlZCkge1xuICAgICAgICBjb250ZXh0LmFkZElzc3VlKGBVbmNsb3NlZCBxdW90ZTogJHtxdW90ZWR9JHtjdXJyZW50fWApXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnQgfHwgcXVvdGVzKVxuICAgICAgICBhcmdzLnB1c2goY3VycmVudClcbiAgICAgIHJldHVybiBvcHRpb25zID8gcGFyc2VBcmdzKGFyZ3MsIG9wdGlvbnMpIDogYXJnc1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSwgc2NoZW1hKVxufVxuXG4vKiogUGFyc2VzIGEgcmVndWxhciBleHByZXNzaW9uIGJhY2sgaW50byBhIGBSZWdFeHBgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2V4PFQgZXh0ZW5kcyBpcy5ab2RUeXBlPihzY2hlbWE6IFQpOiBpcy5ab2RQcmVwcm9jZXNzPFQ+IHtcbiAgY29uc3QgZGVmaW5pdGlvbiA9IC9eXFwvKD88cGF0dGVybj4uKj8pXFwvKD88ZmxhZ3M+W2RnaW1zdXZ5XSopJC9zXG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGdyb3VwcyA9IHZhbHVlLm1hdGNoKGRlZmluaXRpb24pPy5ncm91cHNcbiAgICAgIGlmIChncm91cHMpIHtcbiAgICAgICAgY29uc3QgeyBwYXR0ZXJuLCBmbGFncyB9ID0gZ3JvdXBzXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgZmxhZ3MpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBzY2hlbWEpXG59XG5cbi8qKiBQYXJzZXMgYSBkYXRlIHN0cmluZyBiYWNrIGludG8gYSBgRGF0ZWAuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZTxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSlcbiAgICAgIGlmICghTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSlcbiAgICAgICAgcmV0dXJuIGRhdGVcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIHNjaGVtYSlcbn1cblxuLyoqIFBhcnNlcyBhIGR1cmF0aW9uIHN0cmluZyBpbnRvIG1pbGxpc2Vjb25kcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkdXJhdGlvbjxUIGV4dGVuZHMgaXMuWm9kVHlwZT4oc2NoZW1hOiBUKTogaXMuWm9kUHJlcHJvY2VzczxUPiB7XG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGdyb3VwcyA9IHZhbHVlLm1hdGNoKC9eXFxzKig/Oig/PGRheXM+XFxkKylkKD86YXlzPyk/KT9cXHMqKD86KD88aG91cnM+XFxkKyloKD86KD86b3UpP3JzPyk/KT9cXHMqKD86KD88bWludXRlcz5cXGQrKW0oPzppbig/OnV0ZSk/cz8pPyk/XFxzKig/Oig/PHNlY29uZHM+XFxkKylzKD86ZWMoPzpvbmQpP3M/KT8pP1xccyooPzooPzxtaWxsaXNlY29uZHM+XFxkKykoPzptKD86aWxsaSk/cyg/OmVjKD86b25kKT9zPyk/KT8pP1xccyokLyk/Lmdyb3Vwc1xuICAgICAgaWYgKGdyb3Vwcykge1xuICAgICAgICBsZXQgeyBkYXlzID0gMCwgaG91cnMgPSAwLCBtaW51dGVzID0gMCwgc2Vjb25kcyA9IDAsIG1pbGxpc2Vjb25kcyA9IDAgfSA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhncm91cHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCBOdW1iZXIodmFsdWUpXSkuZmlsdGVyKChbXywgdmFsdWVdKSA9PiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSlcbiAgICAgICAgaG91cnMgKz0gZGF5cyAqIDI0XG4gICAgICAgIG1pbnV0ZXMgKz0gaG91cnMgKiA2MFxuICAgICAgICBzZWNvbmRzICs9IG1pbnV0ZXMgKiA2MFxuICAgICAgICBtaWxsaXNlY29uZHMgKz0gc2Vjb25kcyAqIDEwMDBcbiAgICAgICAgcmV0dXJuIG1pbGxpc2Vjb25kc1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfSwgc2NoZW1hKVxufVxuXG4vKiogU2NoZW1hLWRlZmluaXRpb24gbWFya2VyIGlkZW50aWZ5aW5nIFVuaXggbWlsbGlzZWNvbmQgdmFsdWVzLiAqL1xuZXhwb3J0IGNvbnN0ICR0aW1lc3RhbXAgPSBTeW1ib2wuZm9yKFwiQGxpYnMvaXMvdGltZXN0YW1wXCIpXG5cbi8qKiBUeXBlIGFsaWFzIGZvciB0aW1lc3RhbXAuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZXN0YW1wKG9wdGlvbnM/OiB7IGRlZmF1bHQ/OiB0cnVlIH0pOiBpcy5ab2REZWZhdWx0PGlzLlpvZE51bWJlckZvcm1hdD5cbi8qKiBUeXBlIGFsaWFzIGZvciB0aW1lc3RhbXAgKHdpdGhvdXQgYSBkZWZhdWx0KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1lc3RhbXAob3B0aW9uczogeyBkZWZhdWx0OiBmYWxzZSB9KTogaXMuWm9kTnVtYmVyRm9ybWF0XG4vKiogVHlwZSBhbGlhcyBmb3IgdGltZXN0YW1wLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbWVzdGFtcChvcHRpb25zPzogeyBkZWZhdWx0PzogdHJ1ZSB9IHwgeyBkZWZhdWx0OiBmYWxzZSB9KTogaXMuWm9kTnVtYmVyRm9ybWF0IHwgaXMuWm9kRGVmYXVsdDxpcy5ab2ROdW1iZXJGb3JtYXQ+XG5leHBvcnQgZnVuY3Rpb24gdGltZXN0YW1wKHsgZGVmYXVsdDogZGVmYXVsdHMgPSB0cnVlIH0gPSB7fSk6IGlzLlpvZE51bWJlckZvcm1hdCB8IGlzLlpvZERlZmF1bHQ8aXMuWm9kTnVtYmVyRm9ybWF0PiB7XG4gIGNvbnN0IHNjaGVtYSA9IGlzLmludCgpLm1pbigwKVxuICBPYmplY3QuYXNzaWduKHNjaGVtYS5fem9kLmRlZiwgeyBbJHRpbWVzdGFtcF06IHRydWUgfSlcbiAgcmV0dXJuIGRlZmF1bHRzID8gc2NoZW1hLmRlZmF1bHQoKCkgPT4gRGF0ZS5ub3coKSkgOiBzY2hlbWFcbn1cblxuLyoqIFR5cGUgYWxpYXMgZm9yIHByaW1pdGl2ZSB2YWx1ZXMuICovXG5leHBvcnQgY29uc3QgcHJpbWl0aXZlID0gaXMudW5pb24oW2lzLnN0cmluZygpLCBpcy5udW1iZXIoKSwgaXMuYmlnaW50KCksIGlzLmJvb2xlYW4oKSwgaXMudW5kZWZpbmVkKCksIGlzLm51bGwoKSwgaXMuZGF0ZSgpLCBpcy5pbnN0YW5jZW9mKEVycm9yKV0pIGFzIGlzLlpvZFVuaW9uPFxuICByZWFkb25seSBbaXMuWm9kU3RyaW5nLCBpcy5ab2ROdW1iZXIsIGlzLlpvZEJpZ0ludCwgaXMuWm9kQm9vbGVhbiwgaXMuWm9kVW5kZWZpbmVkLCBpcy5ab2ROdWxsLCBpcy5ab2REYXRlLCBpcy5ab2RDdXN0b208RXJyb3IsIEVycm9yPl1cbj5cblxuLyoqIFR5cGUgYWxpYXMgZm9yIHR5cGVkIGFycmF5cy4gKi9cbmV4cG9ydCBjb25zdCB0eXBlZEFycmF5ID0gaXMudW5pb24oW1xuICBpcy5pbnN0YW5jZW9mKEludDhBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoVWludDhBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoVWludDhDbGFtcGVkQXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKEludDE2QXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKFVpbnQxNkFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihJbnQzMkFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihVaW50MzJBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoRmxvYXQxNkFycmF5KSxcbiAgaXMuaW5zdGFuY2VvZihGbG9hdDMyQXJyYXkpLFxuICBpcy5pbnN0YW5jZW9mKEZsb2F0NjRBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoQmlnSW50NjRBcnJheSksXG4gIGlzLmluc3RhbmNlb2YoQmlnVWludDY0QXJyYXkpLFxuXSkgYXMgaXMuWm9kVW5pb248XG4gIHJlYWRvbmx5IFtcbiAgICBpcy5ab2RDdXN0b208SW50OEFycmF5LCBJbnQ4QXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxVaW50OEFycmF5LCBVaW50OEFycmF5PixcbiAgICBpcy5ab2RDdXN0b208VWludDhDbGFtcGVkQXJyYXksIFVpbnQ4Q2xhbXBlZEFycmF5PixcbiAgICBpcy5ab2RDdXN0b208SW50MTZBcnJheSwgSW50MTZBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPFVpbnQxNkFycmF5LCBVaW50MTZBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPEludDMyQXJyYXksIEludDMyQXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxVaW50MzJBcnJheSwgVWludDMyQXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxGbG9hdDE2QXJyYXksIEZsb2F0MTZBcnJheT4sXG4gICAgaXMuWm9kQ3VzdG9tPEZsb2F0MzJBcnJheSwgRmxvYXQzMkFycmF5PixcbiAgICBpcy5ab2RDdXN0b208RmxvYXQ2NEFycmF5LCBGbG9hdDY0QXJyYXk+LFxuICAgIGlzLlpvZEN1c3RvbTxCaWdJbnQ2NEFycmF5LCBCaWdJbnQ2NEFycmF5PixcbiAgICBpcy5ab2RDdXN0b208QmlnVWludDY0QXJyYXksIEJpZ1VpbnQ2NEFycmF5PixcbiAgXVxuPlxuXG4vKiogU3VwcG9ydGVkIHByb3RvY29scyBmb3Ige0BsaW5rY29kZSB1cmx9IHR5cGUgYWxpYXMuICovXG5jb25zdCBwcm90b2NvbHMgPSBbXCJodHRwcz9cIiwgXCJmaWxlXCIsIFwid2FzbVwiLCBcImRhdGFcIiwgXCJibG9iXCIsIFwianNyXCIsIFwibnBtXCJdXG5cbi8qKiBUeXBlIGFsaWFzIGZvciBVUkxzIHdpdGggc3VwcG9ydGVkIHByb3RvY29scy4gKi9cbmV4cG9ydCBjb25zdCB1cmwgPSBPYmplY3QuYXNzaWduKGlzLnVybCh7IHByb3RvY29sOiBuZXcgUmVnRXhwKGBeKD86JHtwcm90b2NvbHMuam9pbihcInxcIil9KSRgKSwgaG9zdG5hbWU6IC8uKi8gfSksIHtcbiAgd2l0aChhZGRpdGlvbmFsOiBzdHJpbmdbXSwgeyBob3N0bmFtZSA9IC8uKi8sIC4uLm9wdGlvbnMgfTogT21pdDxpcy56LmNvcmUuJFpvZFVSTFBhcmFtcywgXCJwcm90b2NvbFwiPiA9IHt9KSB7XG4gICAgY29uc3QgZXNjYXBlZCA9IGFkZGl0aW9uYWwubWFwKChwcm90b2NvbCkgPT4gcHJvdG9jb2wucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpKVxuICAgIHJldHVybiBpcy51cmwoeyAuLi5vcHRpb25zLCBwcm90b2NvbDogbmV3IFJlZ0V4cChgXig/OiR7Wy4uLnByb3RvY29scywgLi4uZXNjYXBlZF0uam9pbihcInxcIil9KSRgKSwgaG9zdG5hbWUgfSlcbiAgfSxcbn0pIGFzIGlzLlpvZFVSTCAmIHtcbiAgLyoqIENyZWF0ZSBhIG5ldyB0eXBlIGFsaWFzIGZvciBVUkxzIHdpdGggYWRkaXRpb25hbCBjdXN0b20gc3VwcG9ydGVkIHByb3RvY29scy4gKi9cbiAgd2l0aChhZGRpdGlvbmFsOiBzdHJpbmdbXSwgcGFyYW1zPzogT21pdDxpcy56LmNvcmUuJFpvZFVSTFBhcmFtcywgXCJwcm90b2NvbFwiPik6IGlzLlpvZFVSTFxufVxuXG4vKiogVHlwZSBhbGlhcyBmb3IgYm9keSBpbml0LiAqL1xuZXhwb3J0IGNvbnN0IGJvZHlJbml0ID0gaXMudW5pb24oW1xuICBpcy5zdHJpbmcoKSxcbiAgaXMuaW5zdGFuY2VvZihTdHJpbmcpLFxuICBpcy5pbnN0YW5jZW9mKEJsb2IpLFxuICBpcy5pbnN0YW5jZW9mKEFycmF5QnVmZmVyKSxcbiAgaXMuaW5zdGFuY2VvZihEYXRhVmlldyksXG4gIGlzLmluc3RhbmNlb2YoRm9ybURhdGEpLFxuICBpcy5pbnN0YW5jZW9mKFJlYWRhYmxlU3RyZWFtKSxcbiAgaXMuaW5zdGFuY2VvZihVUkxTZWFyY2hQYXJhbXMpLFxuICB0eXBlZEFycmF5LFxuXSkubnVsbGFibGUoKSBhcyBpcy5ab2ROdWxsYWJsZTxcbiAgaXMuWm9kVW5pb248XG4gICAgcmVhZG9ubHkgW1xuICAgICAgaXMuWm9kU3RyaW5nLFxuICAgICAgaXMuWm9kQ3VzdG9tPFN0cmluZywgU3RyaW5nPixcbiAgICAgIGlzLlpvZEN1c3RvbTxCbG9iLCBCbG9iPixcbiAgICAgIGlzLlpvZEN1c3RvbTxBcnJheUJ1ZmZlciwgQXJyYXlCdWZmZXI+LFxuICAgICAgaXMuWm9kQ3VzdG9tPERhdGFWaWV3LCBEYXRhVmlldz4sXG4gICAgICBpcy5ab2RDdXN0b208Rm9ybURhdGEsIEZvcm1EYXRhPixcbiAgICAgIGlzLlpvZEN1c3RvbTxSZWFkYWJsZVN0cmVhbSwgUmVhZGFibGVTdHJlYW0+LFxuICAgICAgaXMuWm9kQ3VzdG9tPFVSTFNlYXJjaFBhcmFtcywgVVJMU2VhcmNoUGFyYW1zPixcbiAgICAgIHR5cGVvZiB0eXBlZEFycmF5LFxuICAgIF1cbiAgPlxuPlxuXG4vKipcbiAqIFN5c3RlbSBwZXJtaXNzaW9ucyBmbGFncy5cbiAqXG4gKiBTZWUge0BsaW5rIGh0dHBzOi8vZG9jcy5kZW5vLmNvbS9ydW50aW1lL2Z1bmRhbWVudGFscy9zZWN1cml0eS8jc3lzdGVtLWluZm9ybWF0aW9ufS5cbiAqL1xuY29uc3Qgc3lzZmxhZ3MgPSBbXCJob3N0bmFtZVwiLCBcIm9zUmVsZWFzZVwiLCBcIm9zVXB0aW1lXCIsIFwibG9hZGF2Z1wiLCBcIm5ldHdvcmtJbnRlcmZhY2VzXCIsIFwic3lzdGVtTWVtb3J5SW5mb1wiLCBcInVpZFwiLCBcImdpZFwiXSBhcyBjb25zdFxuXG4vKiogVHlwZSBhbGlhcyBmYWN0b3J5IGZvciBwZXJtaXNzaW9uIGRlc2NyaXB0b3JzLiAqL1xuZnVuY3Rpb24gcGVybWlzc2lvbih7IGV4cGFuZCA9IGZhbHNlLCB1cmxzID0gZmFsc2UsIHN5cyA9IGZhbHNlIH0gPSB7fSkge1xuICByZXR1cm4gaXMucHJlcHJvY2VzcygodmFsdWUpID0+IHtcbiAgICBpZiAodmFsdWUgPT09IFwiaW5oZXJpdFwiKVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgIHZhbHVlID0gW3ZhbHVlXVxuICAgIGlmIChleHBhbmQpIHtcbiAgICAgIGlmICgodmFsdWUgPT09IHVuZGVmaW5lZCkgfHwgKHZhbHVlID09PSBmYWxzZSkpXG4gICAgICAgIHZhbHVlID0gW11cbiAgICB9XG4gICAgaWYgKHVybHMgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICB2YWx1ZSA9IHZhbHVlLm1hcCgodmFsdWUpID0+IHZhbHVlIGluc3RhbmNlb2YgVVJMID8gdmFsdWUuaHJlZiA6IHZhbHVlKVxuICAgIHJldHVybiB2YWx1ZVxuICB9LCBpcy51bmlvbihbaXMubGl0ZXJhbChcImluaGVyaXRcIiksIGlzLmJvb2xlYW4oKSwgaXMuYXJyYXkoc3lzID8gaXMuZW51bShzeXNmbGFncykgOiBpcy5zdHJpbmcoKSldKSlcbn1cblxuLyoqIFR5cGUgYWxpYXMgZmFjdG9yeSBmb3IgcGVybWlzc2lvbnMgb2JqZWN0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlcm1pc3Npb25zPFQgZXh0ZW5kcyBrZXlvZiBEZW5vLlBlcm1pc3Npb25PcHRpb25zT2JqZWN0PihcbiAgb3B0aW9ucz86IHsgc2V0PzogVFtdOyBleHBhbmQ/OiBmYWxzZSB9LFxuKTogaXMuWm9kVW5pb248cmVhZG9ubHkgW2lzLlpvZE9iamVjdDxSZWNvcmQ8VCwgaXMuWm9kT3B0aW9uYWw8aXMuWm9kUHJlcHJvY2Vzczxpcy5ab2RVbmlvbjxbaXMuWm9kTGl0ZXJhbDxcImluaGVyaXRcIj4sIGlzLlpvZEJvb2xlYW4sIGlzLlpvZEFycmF5PGlzLlpvZFN0cmluZz5dPj4+Pj4sIGlzLlpvZFVuaW9uPHJlYWRvbmx5IFtpcy5ab2RMaXRlcmFsPFwiaW5oZXJpdFwiPiwgaXMuWm9kTGl0ZXJhbDxcIm5vbmVcIj5dPl0+XG4vKiogVHlwZSBhbGlhcyBmYWN0b3J5IGZvciBwZXJtaXNzaW9ucyBvYmplY3QuICovXG5leHBvcnQgZnVuY3Rpb24gcGVybWlzc2lvbnM8VCBleHRlbmRzIGtleW9mIERlbm8uUGVybWlzc2lvbk9wdGlvbnNPYmplY3Q+KFxuICBvcHRpb25zOiB7IHNldD86IFRbXTsgZXhwYW5kOiB0cnVlIH0sXG4pOiBpcy5ab2RQcmVwcm9jZXNzPGlzLlpvZE9iamVjdDxSZWNvcmQ8VCwgaXMuWm9kUHJlcHJvY2Vzczxpcy5ab2RVbmlvbjxbaXMuWm9kTGl0ZXJhbDxcImluaGVyaXRcIj4sIGlzLlpvZExpdGVyYWw8dHJ1ZT4sIGlzLlpvZEFycmF5PGlzLlpvZFN0cmluZz5dPj4+Pj5cbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNzaW9uczxUIGV4dGVuZHMga2V5b2YgRGVuby5QZXJtaXNzaW9uT3B0aW9uc09iamVjdD4oeyBzZXQgPSBbXCJyZWFkXCIsIFwid3JpdGVcIiwgXCJuZXRcIiwgXCJlbnZcIiwgXCJydW5cIiwgXCJzeXNcIiwgXCJmZmlcIiwgXCJpbXBvcnRcIl0gYXMgVFtdLCBleHBhbmQgPSBmYWxzZSB9OiB7IHNldD86IFRbXTsgZXhwYW5kPzogYm9vbGVhbiB9ID0ge30pIHtcbiAgY29uc3QgdmFsaWRhdG9yID0gaXMub2JqZWN0KHtcbiAgICByZWFkOiBwZXJtaXNzaW9uKHsgZXhwYW5kLCB1cmxzOiB0cnVlIH0pLFxuICAgIHdyaXRlOiBwZXJtaXNzaW9uKHsgZXhwYW5kLCB1cmxzOiB0cnVlIH0pLFxuICAgIG5ldDogcGVybWlzc2lvbih7IGV4cGFuZCB9KSxcbiAgICBlbnY6IHBlcm1pc3Npb24oeyBleHBhbmQgfSksXG4gICAgc3lzOiBwZXJtaXNzaW9uKHsgZXhwYW5kLCBzeXM6IHRydWUgfSksXG4gICAgcnVuOiBwZXJtaXNzaW9uKHsgZXhwYW5kLCB1cmxzOiB0cnVlIH0pLFxuICAgIGZmaTogcGVybWlzc2lvbih7IGV4cGFuZCwgdXJsczogdHJ1ZSB9KSxcbiAgICBpbXBvcnQ6IHBlcm1pc3Npb24oeyBleHBhbmQgfSksXG4gIH0pLnBpY2s8YW55PihPYmplY3QuZnJvbUVudHJpZXMoc2V0Lm1hcCgoa2V5KSA9PiBba2V5LCB0cnVlXSkpKS5zdHJpY3QoKVxuXG4gIC8vIFJldHVybiBlaXRoZXIgdGhlIGNvbXBhY3Qgb3IgZXhwYW5kZWQgdmVyc2lvblxuICBpZiAoIWV4cGFuZClcbiAgICByZXR1cm4gdmFsaWRhdG9yLnBhcnRpYWwoKS5vcihpcy51bmlvbihbaXMubGl0ZXJhbChcImluaGVyaXRcIiksIGlzLmxpdGVyYWwoXCJub25lXCIpXSkpXG4gIHJldHVybiBpcy5wcmVwcm9jZXNzKCh2YWx1ZSkgPT4ge1xuICAgIGlmICgodmFsdWUgPT09IFwiaW5oZXJpdFwiKSB8fCAodmFsdWUgPT09IFwibm9uZVwiKSlcbiAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoc2V0Lm1hcCgoa2V5KSA9PiBba2V5LCB2YWx1ZSA9PT0gXCJub25lXCIgPyBbXSA6IHZhbHVlXSkpXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgIHZhbHVlID0gW3ZhbHVlXVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgIHJldHVybiB7IC4uLk9iamVjdC5mcm9tRW50cmllcyhzZXQubWFwKChwZXJtaXNzaW9uKSA9PiBbcGVybWlzc2lvbiwgZmFsc2VdKSksIC4uLk9iamVjdC5mcm9tRW50cmllcyh2YWx1ZS5tYXAoKHBlcm1pc3Npb24pID0+IFtwZXJtaXNzaW9uLCBcImluaGVyaXRcIl0pKSB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH0sIHZhbGlkYXRvcikgYXMgdW5rbm93blxufVxuXG4vKiogVHlwZSBhbGlhcyBmb3IgZXhwcmVzc2lvbiBzdHJpbmdzLiAqL1xuZXhwb3J0IGNvbnN0IGV4cHJlc3Npb24gPSBpcy5zdHJpbmcoKS5yZWdleCgvXFwkXFx7LipcXH0vKSBhcyBpcy5ab2RTdHJpbmdcblxuLyoqIFR5cGUgYWxpYXMgZm9yIGNhbGxhYmxlIHZhbHVlcy4gKi9cbmV4cG9ydCBjb25zdCBjYWxsYWJsZSA9IGlzLnVua25vd24oKS5yZWZpbmUoKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiwgeyBtZXNzYWdlOiBcIkludmFsaWQgaW5wdXQ6IFZhbHVlIG11c3QgYmUgY2FsbGFibGVcIiB9KSBhcyB1bmtub3duIGFzIGlzLlpvZEN1c3RvbTxGdW5jdGlvbiwgdW5rbm93bj5cblxuLyoqIFR5cGUgYWxpYXMgZm9yIFpvZCBzY2hlbWFzLiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlciA9IGlzLmN1c3RvbSgodmFsdWUpID0+ICh2YWx1ZSBpbnN0YW5jZW9mIGlzLlpvZFR5cGUpIHx8ICh2YWx1ZSAmJiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSAmJiAodHlwZW9mICh2YWx1ZSBhcyBSZWNvcmQ8UHJvcGVydHlLZXksIHVua25vd24+KS5wYXJzZSA9PT0gXCJmdW5jdGlvblwiKSksIHsgbWVzc2FnZTogXCJJbnZhbGlkIGlucHV0OiBWYWx1ZSBtdXN0IGJlIGEgWm9kIHNjaGVtYVwiIH0pIGFzIGlzLlpvZEN1c3RvbTxcbiAgaXMuWm9kVHlwZSxcbiAgdW5rbm93blxuPlxuXG4vKiogT2JqZWN0IHRoYXQgcmVzc2VtYmxlIGEgWm9kRXJyb3IuICovXG50eXBlIFpvZEVycm9yTGlrZSA9IHsgcGF0aD86IFByb3BlcnR5S2V5W107IG1lc3NhZ2U6IHN0cmluZzsgZXJyb3JzPzogWm9kRXJyb3JMaWtlW11bXSB9XG5cbi8qKiBDb252ZXJ0IGEgcHJvcGVydHkga2V5IHBhdGggdG8gYSBzdHJpbmcuICovXG5mdW5jdGlvbiB0b1BhdGgocGF0aDogUHJvcGVydHlLZXlbXSA9IFtdKTogc3RyaW5nIHtcbiAgY29uc3Qgc2VnbWVudHMgPSBbXVxuICBmb3IgKGNvbnN0IHNlZ21lbnQgb2YgcGF0aCkge1xuICAgIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gXCJudW1iZXJcIilcbiAgICAgIHNlZ21lbnRzLnB1c2goYFske3NlZ21lbnR9XWApXG4gICAgZWxzZSBpZiAodHlwZW9mIHNlZ21lbnQgPT09IFwic3ltYm9sXCIgfHwgL1teXFx3JF0vLnRlc3QoU3RyaW5nKHNlZ21lbnQpKSlcbiAgICAgIHNlZ21lbnRzLnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhzZWdtZW50KSl9XWApXG4gICAgZWxzZVxuICAgICAgc2VnbWVudHMucHVzaChgLiR7c2VnbWVudH1gKVxuICB9XG4gIHJldHVybiBzZWdtZW50cy5qb2luKFwiXCIpXG59XG5cbi8qKiBQcmV0dGlmeSB2YWxpZGF0aW9uIGlzc3VlcyBpbiBhIG1vcmUgZGV0YWlsZWQgd2F5LiAqL1xuZnVuY3Rpb24gcHJldHRpZnlJc3N1ZShlcnJvcnM6IFpvZEVycm9yTGlrZVtdLCB7IGluZGVudCA9IFwiXCIgfSA9IHt9KTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBbXVxuICBlcnJvcnMgPSBbLi4uZXJyb3JzXS5zb3J0KChhLCBiKSA9PiAoYS5wYXRoID8/IFtdKS5sZW5ndGggLSAoYi5wYXRoID8/IFtdKS5sZW5ndGgpXG4gIGZvciAoY29uc3QgZXJyb3Igb2YgZXJyb3JzKSB7XG4gICAgbGluZXMucHVzaChgJHtpbmRlbnR94pyYICR7ZXJyb3IubWVzc2FnZX1gKVxuICAgIGlmIChlcnJvci5wYXRoPy5sZW5ndGgpXG4gICAgICBsaW5lcy5wdXNoKGAke2luZGVudH0gIOKGkiBhdCAke3RvUGF0aChlcnJvci5wYXRoKX1gKVxuICAgIGlmIChlcnJvci5lcnJvcnM/Lmxlbmd0aCkge1xuICAgICAgbGluZXMucHVzaChgJHtpbmRlbnR9ICDihpIgdHJpZWQgdG8gZml0IGludG8gb25lIG9mIHRoZSBhbGxvd2VkIHR5cGVzOmApXG4gICAgICBmb3IgKGNvbnN0IHN1YmVycm9yIG9mIGVycm9yLmVycm9ycylcbiAgICAgICAgbGluZXMucHVzaChwcmV0dGlmeUlzc3VlKHN1YmVycm9yLCB7IGluZGVudDogYCR7aW5kZW50fSAgICAgIGAgfSkucmVwbGFjZShcIiAg4pyYXCIsIFwiLSDinJhcIikpXG4gICAgfVxuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpXG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIHBhcnNlKCl9LiAqL1xuZXhwb3J0IHR5cGUgUGFyc2VPcHRpb25zID0ge1xuICAvKiogV2hldGhlciB0byBwYXJzZSBhc3luY2hyb25vdXNseS4gKi9cbiAgYXN5bmM/OiBib29sZWFuXG4gIC8qKiBXaGV0aGVyIHRvIHRocm93IGEgYFpvZEVycm9yYCByYXRoZXIgdGhhbiBhIGBUeXBlRXJyb3JgIGluIGNhc2Ugb2YgZmFpbHVyZSAqL1xuICB6b2RFcnJvcj86IGJvb2xlYW5cbn1cblxuLyoqIFBhcnNlIGEgc2NoZW1hIHN5bmNocm9ub3VzbHkuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2U8VCBleHRlbmRzIGlzLlpvZFR5cGU+KHNjaGVtYTogVCwgdmFsdWVzOiB1bmtub3duLCBvcHRpb25zPzogT21pdDxQYXJzZU9wdGlvbnMsIFwiYXN5bmNcIj4gJiB7IGFzeW5jPzogZmFsc2UgfSk6IGlzLmluZmVyPFQ+XG4vKiogUGFyc2UgYSBzY2hlbWEgYXN5bmNocm9ub3VzbHkuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2U8VCBleHRlbmRzIGlzLlpvZFR5cGU+KHNjaGVtYTogVCwgdmFsdWVzOiB1bmtub3duLCBvcHRpb25zOiBPbWl0PFBhcnNlT3B0aW9ucywgXCJhc3luY1wiPiAmIHsgYXN5bmM6IHRydWUgfSk6IFByb21pc2U8aXMuaW5mZXI8VD4+XG5leHBvcnQgZnVuY3Rpb24gcGFyc2U8VCBleHRlbmRzIGlzLlpvZFR5cGU+KHNjaGVtYTogVCwgdmFsdWVzOiB1bmtub3duLCB7IGFzeW5jID0gZmFsc2UsIHpvZEVycm9yIH06IFBhcnNlT3B0aW9ucyA9IHt9KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGFzeW5jXG4gICAgICA/IHNjaGVtYS5wYXJzZUFzeW5jKHZhbHVlcykuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGlmICgoIShlcnJvciBpbnN0YW5jZW9mIGlzLlpvZEVycm9yKSkgfHwgem9kRXJyb3IpXG4gICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVmFsaWRhdGlvbiBmYWlsZWQ6IFxcbiR7cHJldHRpZnlJc3N1ZShlcnJvci5pc3N1ZXMpfWApXG4gICAgICB9KVxuICAgICAgOiBzY2hlbWEucGFyc2UodmFsdWVzKVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICgoIShlcnJvciBpbnN0YW5jZW9mIGlzLlpvZEVycm9yKSkgfHwgem9kRXJyb3IpXG4gICAgICB0aHJvdyBlcnJvclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFZhbGlkYXRpb24gZmFpbGVkOiBcXG4ke3ByZXR0aWZ5SXNzdWUoZXJyb3IuaXNzdWVzKX1gKVxuICB9XG59XG4iXSwi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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lowlighter/is",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "type": "module",
5
5
  "main": "./mod.js",
6
6
  "types": "./mod.d.ts",
@@ -20,6 +20,7 @@
20
20
  "@std/cli": "npm:@jsr/std__cli@^1.0.32",
21
21
  "@std/collections": "npm:@jsr/std__collections@^1.3.0",
22
22
  "@zod/zod": "npm:@jsr/zod__zod@^4.6.5",
23
+ "@lowlighter/is": "^1.4.1",
23
24
  "@lowlighter/testing": "^6.0.0"
24
25
  },
25
26
  "repository": {