ts-case-convert 2.3.0 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RELEASE.md +9 -2
- package/lib/caseConvert.d.ts +9 -2
- package/lib/caseConvert.js +9 -11
- package/package.json +2 -1
- package/version.json +0 -3
package/RELEASE.md
CHANGED
|
@@ -49,7 +49,7 @@ dist/js/ts-case-convert-$(cat dist/version.txt).tgz
|
|
|
49
49
|
## Publish
|
|
50
50
|
|
|
51
51
|
```sh
|
|
52
|
-
pnpm run publish --
|
|
52
|
+
pnpm run publish --otp 123_456
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
## Confirm
|
|
@@ -68,6 +68,12 @@ pnpm run tag
|
|
|
68
68
|
git push origin main --follow-tags
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
+
## GitHub Release
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
pnpm run github-release
|
|
75
|
+
```
|
|
76
|
+
|
|
71
77
|
## Useful Commands
|
|
72
78
|
|
|
73
79
|
```sh
|
|
@@ -77,7 +83,8 @@ pnpm run test
|
|
|
77
83
|
pnpm run check
|
|
78
84
|
pnpm run build
|
|
79
85
|
pnpm run release
|
|
80
|
-
pnpm run publish --
|
|
86
|
+
pnpm run publish --otp 123_456
|
|
81
87
|
pnpm run tag
|
|
88
|
+
pnpm run github-release
|
|
82
89
|
pnpm run upgrade
|
|
83
90
|
```
|
package/lib/caseConvert.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export type ToPascal<S extends string | number | symbol> = S extends string ? S
|
|
|
18
18
|
export type ObjectToPascal<T extends object | undefined | null> = T extends undefined ? undefined : T extends null ? null : T extends Array<infer ArrayType> ? Array<ConvertArrayItem<ArrayType, 'pascal'>> : T extends Uint8Array ? Uint8Array : T extends Date ? Date : {
|
|
19
19
|
[K in keyof T as ToPascal<K>]: ConvertObjectValue<T[K], 'pascal'>;
|
|
20
20
|
};
|
|
21
|
-
export type ToSnake<S extends string | number | symbol, SplitNumbers extends boolean = true> = S extends string ?
|
|
21
|
+
export type ToSnake<S extends string | number | symbol, SplitNumbers extends boolean = true> = S extends string ? string extends S ? string : S extends NumericKey ? S : SnakeScan<S, '', 'start', SplitNumbers> : never;
|
|
22
22
|
export type ObjectToSnake<T extends object | undefined | null, SplitNumbers extends boolean = true> = T extends undefined ? undefined : T extends null ? null : T extends Array<infer ArrayType> ? Array<ConvertArrayItem<ArrayType, 'snake', SplitNumbers>> : T extends Uint8Array ? Uint8Array : T extends Date ? Date : {
|
|
23
23
|
[K in keyof T as ToSnake<K, SplitNumbers>]: ConvertObjectValue<T[K], 'snake', SplitNumbers>;
|
|
24
24
|
};
|
|
@@ -28,11 +28,18 @@ export type ObjectToScreamingSnake<T extends object | undefined | null, SplitNum
|
|
|
28
28
|
};
|
|
29
29
|
type CaseMode = 'camel' | 'pascal' | 'snake' | 'screamingSnake';
|
|
30
30
|
type NumericKey = `${number}`;
|
|
31
|
+
type SnakeScan<S extends string, Acc extends string, Previous extends CharacterKind, SplitNumbers extends boolean> = S extends `${infer Head}${infer Tail}` ? Head extends Numbers ? TakeNumberRun<S> extends [
|
|
32
|
+
infer NumberRun extends string,
|
|
33
|
+
infer AfterNumber extends string
|
|
34
|
+
] ? SnakeScan<AfterNumber, `${Acc}${NumberSeparator<Previous, AfterNumber, SplitNumbers>}${NumberRun}`, 'number', SplitNumbers> : never : Head extends CapitalLetters ? SnakeScan<Tail, `${Acc}${WordSeparator<Acc>}${Lowercase<Head>}`, 'upper', SplitNumbers> : Head extends LowercaseLetters ? SnakeScan<Tail, `${Acc}${Head}`, 'lower', SplitNumbers> : SnakeScan<Tail, `${Acc}${Head}`, 'other', SplitNumbers> : Acc;
|
|
35
|
+
type TakeNumberRun<S extends string, Acc extends string = ''> = S extends `${infer Head}${infer Tail}` ? Head extends Numbers ? TakeNumberRun<Tail, `${Acc}${Head}`> : [Acc, S] : [Acc, ''];
|
|
36
|
+
type NumberSeparator<Previous extends CharacterKind, AfterNumber extends string, SplitNumbers extends boolean> = SplitNumbers extends false ? '' : Previous extends 'lower' ? AfterNumber extends `${CapitalLetters}${LowercaseLetters}${string}` ? '' : '_' : '';
|
|
37
|
+
type WordSeparator<Acc extends string> = Acc extends '' ? '' : Acc extends `${string}_` ? '' : '_';
|
|
38
|
+
type CharacterKind = 'start' | 'lower' | 'upper' | 'number' | 'other';
|
|
31
39
|
type Convert<T extends object | undefined | null, Mode extends CaseMode, SplitNumbers extends boolean> = Mode extends 'camel' ? ObjectToCamel<T> : Mode extends 'pascal' ? ObjectToPascal<T> : Mode extends 'snake' ? ObjectToSnake<T, SplitNumbers> : ObjectToScreamingSnake<T, SplitNumbers>;
|
|
32
40
|
type ConvertArrayItem<T, Mode extends CaseMode, SplitNumbers extends boolean = true> = T extends object ? Convert<T, Mode, SplitNumbers> : T;
|
|
33
41
|
type ConvertObjectValue<T, Mode extends CaseMode, SplitNumbers extends boolean = true> = T extends Array<infer ArrayType> ? Array<ConvertArrayItem<ArrayType, Mode, SplitNumbers>> : T extends object | undefined | null ? Convert<T, Mode, SplitNumbers> : T;
|
|
34
42
|
type CapitalLetters = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z';
|
|
35
43
|
type LowercaseLetters = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z';
|
|
36
44
|
type Numbers = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
|
|
37
|
-
type CapitalChars = CapitalLetters | Numbers;
|
|
38
45
|
export {};
|
package/lib/caseConvert.js
CHANGED
|
@@ -47,24 +47,22 @@ function objectToCamel(obj) {
|
|
|
47
47
|
return convertObject(obj, toCamel);
|
|
48
48
|
}
|
|
49
49
|
function toSnakeWithSplitNumbers(term, splitNumbers) {
|
|
50
|
-
var _a
|
|
50
|
+
var _a;
|
|
51
51
|
if (isNumericKey(term)) {
|
|
52
52
|
return term;
|
|
53
53
|
}
|
|
54
54
|
let result = term;
|
|
55
55
|
let circuitBreaker = 0;
|
|
56
56
|
if (splitNumbers) {
|
|
57
|
-
while ((((_a = /([a-z])([0-9])(?![A-Z][a-z])/.exec(result)) === null || _a === void 0 ? void 0 : _a.length) || 0) >
|
|
57
|
+
while ((((_a = /([a-z])([0-9]+)(?![0-9]*[A-Z][a-z])/.exec(result)) === null || _a === void 0 ? void 0 : _a.length) || 0) >
|
|
58
|
+
2 &&
|
|
58
59
|
circuitBreaker < 10) {
|
|
59
|
-
result = result.replace(/([a-z])([0-9])(?![A-Z][a-z])/, (_all,
|
|
60
|
+
result = result.replace(/([a-z])([0-9]+)(?![0-9]*[A-Z][a-z])/, (_all, head, numbers) => `${head.toLowerCase()}_${numbers.toLowerCase()}`);
|
|
60
61
|
circuitBreaker += 1;
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
result = result.replace(/(.+?)([A-Z])/, (_all, $1, $2) => `${$1.toLowerCase()}_${$2.toLowerCase()}`);
|
|
66
|
-
circuitBreaker += 1;
|
|
67
|
-
}
|
|
64
|
+
// Match only the character before a capital to avoid rescanning long prefixes.
|
|
65
|
+
result = result.replace(/(.)(?=[A-Z])/g, (head) => circuitBreaker++ < 10 ? `${head}_` : head);
|
|
68
66
|
return result.toLowerCase();
|
|
69
67
|
}
|
|
70
68
|
function toSnake(term) {
|
|
@@ -74,10 +72,10 @@ function toSnakeNoSplitNumbers(term) {
|
|
|
74
72
|
return toSnakeWithSplitNumbers(term, false);
|
|
75
73
|
}
|
|
76
74
|
function objectToSnake(obj) {
|
|
77
|
-
return convertObject(obj,
|
|
75
|
+
return convertObject(obj, (key) => toSnakeWithSplitNumbers(key, true));
|
|
78
76
|
}
|
|
79
77
|
function objectToSnakeNoSplitNumbers(obj) {
|
|
80
|
-
return convertObject(obj,
|
|
78
|
+
return convertObject(obj, (key) => toSnakeWithSplitNumbers(key, false));
|
|
81
79
|
}
|
|
82
80
|
function toScreamingSnake(term) {
|
|
83
81
|
return toSnake(term).toUpperCase();
|
|
@@ -103,4 +101,4 @@ function objectToPascal(obj) {
|
|
|
103
101
|
function isNumericKey(term) {
|
|
104
102
|
return /^-?\d+(?:\.\d+)?$/.test(term);
|
|
105
103
|
}
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZUNvbnZlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2FzZUNvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnREEsMEJBWUM7QUFFRCxzQ0FFQztBQTJDRCwwQkFFQztBQUVELHNEQUlDO0FBRUQsc0NBRUM7QUFFRCxrRUFJQztBQUVELDRDQUlDO0FBRUQsd0VBSUM7QUFFRCx3REFJQztBQUVELG9GQUlDO0FBRUQsNEJBUUM7QUFFRCx3Q0FFQztBQW5LRCxTQUFTLGFBQWEsQ0FDcEIsR0FBVyxFQUNYLFlBQXFDO0lBRXJDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxXQUFXLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUUsT0FBTyxHQUF5QixDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFZLENBQUM7SUFDdEQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUV6QyxhQUFhO1FBRWIsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQTJCLElBQWUsRUFBRSxFQUFFLENBQ25ELE9BQU8sSUFBSSxLQUFLLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxJQUFJLFlBQVksVUFBVSxDQUFDO2dCQUM3QixDQUFDLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQztnQkFDckIsQ0FBQyxDQUFDLGFBQWEsQ0FTWCxJQUFJLEVBQUUsWUFBWSxDQUFDO2dCQUN2QixDQUFDLENB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QUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBjb252ZXJ0T2JqZWN0PFRJbnB1dCBleHRlbmRzIG9iamVjdCwgVFJlc3VsdD4oXG4gIG9iajogVElucHV0LFxuICBrZXlDb252ZXJ0ZXI6IChhcmc6IHN0cmluZykgPT4gc3RyaW5nLFxuKTogVFJlc3VsdCB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gb2JqIGFzIHVua25vd24gYXMgVFJlc3VsdDtcbiAgfVxuXG4gIGNvbnN0IG91dCA9IChBcnJheS5pc0FycmF5KG9iaikgPyBbXSA6IHt9KSBhcyBUUmVzdWx0O1xuICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG5cbiAgICAvLyBAdHMtaWdub3JlXG5cbiAgICBvdXRba2V5Q29udmVydGVyKGspXSA9IEFycmF5LmlzQXJyYXkodilcbiAgICAgID8gKHYubWFwKDxBcnJheUl0ZW0gZXh0ZW5kcyBvYmplY3Q+KGl0ZW06IEFycmF5SXRlbSkgPT5cbiAgICAgICAgICB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAhKGl0ZW0gaW5zdGFuY2VvZiBVaW50OEFycmF5KSAmJlxuICAgICAgICAgICEoaXRlbSBpbnN0YW5jZW9mIERhdGUpXG4gICAgICAgICAgICA/IGNvbnZlcnRPYmplY3Q8XG4gICAgICAgICAgICAgICAgQXJyYXlJdGVtLFxuICAgICAgICAgICAgICAgIFRSZXN1bHQgZXh0ZW5kcyBPYmplY3RUb0NhbWVsPFRJbnB1dD5cbiAgICAgICAgICAgICAgICAgID8gT2JqZWN0VG9DYW1lbDxBcnJheUl0ZW0+XG4gICAgICAgICAgICAgICAgICA6IFRSZXN1bHQgZXh0ZW5kcyBPYmplY3RUb1Bhc2NhbDxUSW5wdXQ+XG4gICAgICAgICAgICAgICAgICA/IE9iamVjdFRvUGFzY2FsPEFycmF5SXRlbT5cbiAgICAgICAgICAgICAgICAgIDogVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvU2NyZWFtaW5nU25ha2U8VElucHV0PlxuICAgICAgICAgICAgICAgICAgPyBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPEFycmF5SXRlbT5cbiAgICAgICAgICAgICAgICAgIDogT2JqZWN0VG9TbmFrZTxBcnJheUl0ZW0+XG4gICAgICAgICAgICAgID4oaXRlbSwga2V5Q29udmVydGVyKVxuICAgICAgICAgICAgOiBpdGVtLFxuICAgICAgICApIGFzIHVua25vd25bXSlcbiAgICAgIDogdiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgfHwgdiBpbnN0YW5jZW9mIERhdGVcbiAgICAgID8gdlxuICAgICAgOiB0eXBlb2YgdiA9PT0gJ29iamVjdCdcbiAgICAgID8gY29udmVydE9iamVjdDxcbiAgICAgICAgICB0eXBlb2YgdixcbiAgICAgICAgICBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9DYW1lbDxUSW5wdXQ+XG4gICAgICAgICAgICA/IE9iamVjdFRvQ2FtZWw8dHlwZW9mIHY+XG4gICAgICAgICAgICA6IFRSZXN1bHQgZXh0ZW5kcyBPYmplY3RUb1Bhc2NhbDxUSW5wdXQ+XG4gICAgICAgICAgICA/IE9iamVjdFRvUGFzY2FsPHR5cGVvZiB2PlxuICAgICAgICAgICAgOiBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUSW5wdXQ+XG4gICAgICAgICAgICA/IE9iamVjdFRvU2NyZWFtaW5nU25ha2U8dHlwZW9mIHY+XG4gICAgICAgICAgICA6IE9iamVjdFRvU25ha2U8dHlwZW9mIHY+XG4gICAgICAgID4odiwga2V5Q29udmVydGVyKVxuICAgICAgOiAodiBhcyB1bmtub3duKTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9DYW1lbDxUIGV4dGVuZHMgc3RyaW5nPih0ZXJtOiBUKTogVG9DYW1lbDxUPiB7XG4gIGlmIChpc051bWVyaWNLZXkodGVybSkpIHtcbiAgICByZXR1cm4gdGVybSBhcyBUb0NhbWVsPFQ+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICB0ZXJtLmxlbmd0aCA9PT0gMVxuICAgICAgPyB0ZXJtLnRvTG93ZXJDYXNlKClcbiAgICAgIDogdGVybVxuICAgICAgICAgIC5yZXBsYWNlKC9eKFtBLVpdKS8sIChtKSA9PiBtWzBdLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgLnJlcGxhY2UoL1tfLV0oW2EtejAtOV0pL2csIChtKSA9PiBtWzFdLnRvVXBwZXJDYXNlKCkpXG4gICkgYXMgVG9DYW1lbDxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdFRvQ2FtZWw8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogT2JqZWN0VG9DYW1lbDxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9DYW1lbCk7XG59XG5cbmZ1bmN0aW9uIHRvU25ha2VXaXRoU3BsaXROdW1iZXJzPFxuICBUIGV4dGVuZHMgc3RyaW5nLFxuICBTcGxpdE51bWJlcnMgZXh0ZW5kcyBib29sZWFuLFxuPih0ZXJtOiBULCBzcGxpdE51bWJlcnM6IFNwbGl0TnVtYmVycyk6IFRvU25ha2U8VCwgU3BsaXROdW1iZXJzPiB7XG4gIGlmIChpc051bWVyaWNLZXkodGVybSkpIHtcbiAgICByZXR1cm4gdGVybSBhcyBUb1NuYWtlPFQsIFNwbGl0TnVtYmVycz47XG4gIH1cblxuICBsZXQgcmVzdWx0OiBzdHJpbmcgPSB0ZXJtO1xuICBsZXQgY2lyY3VpdEJyZWFrZXIgPSAwO1xuXG4gIGlmIChzcGxpdE51bWJlcnMpIHtcbiAgICB3aGlsZSAoXG4gICAgICAoLyhbYS16XSkoWzAtOV0pKD8hW0EtWl1bYS16XSkvLmV4ZWMocmVzdWx0KT8ubGVuZ3RoIHx8IDApID4gMiAmJlxuICAgICAgY2lyY3VpdEJyZWFrZXIgPCAxMFxuICAgICkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoXG4gICAgICAgIC8oW2Etel0pKFswLTldKSg/IVtBLVpdW2Etel0pLyxcbiAgICAgICAgKF9hbGwsICQxOiBzdHJpbmcsICQyOiBzdHJpbmcpID0+XG4gICAgICAgICAgYCR7JDEudG9Mb3dlckNhc2UoKX1fJHskMi50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICApO1xuXG4gICAgICBjaXJjdWl0QnJlYWtlciArPSAxO1xuICAgIH1cbiAgfVxuXG4gIHdoaWxlIChcbiAgICAoLyguKz8pKFtBLVpdKS8uZXhlYyhyZXN1bHQpPy5sZW5ndGggfHwgMCkgPiAyICYmXG4gICAgY2lyY3VpdEJyZWFrZXIgPCAxMFxuICApIHtcbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShcbiAgICAgIC8oLis/KShbQS1aXSkvLFxuICAgICAgKF9hbGwsICQxOiBzdHJpbmcsICQyOiBzdHJpbmcpID0+XG4gICAgICAgIGAkeyQxLnRvTG93ZXJDYXNlKCl9XyR7JDIudG9Mb3dlckNhc2UoKX1gLFxuICAgICk7XG4gICAgY2lyY3VpdEJyZWFrZXIgKz0gMTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKSBhcyBUb1NuYWtlPFQsIFNwbGl0TnVtYmVycz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1NuYWtlPFQgZXh0ZW5kcyBzdHJpbmc+KHRlcm06IFQpOiBUb1NuYWtlPFQ+IHtcbiAgcmV0dXJuIHRvU25ha2VXaXRoU3BsaXROdW1iZXJzKHRlcm0sIHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9TbmFrZU5vU3BsaXROdW1iZXJzPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICB0ZXJtOiBULFxuKTogVG9TbmFrZTxULCBmYWxzZT4ge1xuICByZXR1cm4gdG9TbmFrZVdpdGhTcGxpdE51bWJlcnModGVybSwgZmFsc2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9TbmFrZTxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBPYmplY3RUb1NuYWtlPFQ+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCB0b1NuYWtlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdFRvU25ha2VOb1NwbGl0TnVtYmVyczxUIGV4dGVuZHMgb2JqZWN0PihcbiAgb2JqOiBULFxuKTogT2JqZWN0VG9TbmFrZTxULCBmYWxzZT4ge1xuICByZXR1cm4gY29udmVydE9iamVjdChvYmosIHRvU25ha2VOb1NwbGl0TnVtYmVycyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1NjcmVhbWluZ1NuYWtlPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICB0ZXJtOiBULFxuKTogVG9TY3JlYW1pbmdTbmFrZTxUPiB7XG4gIHJldHVybiB0b1NuYWtlKHRlcm0pLnRvVXBwZXJDYXNlKCkgYXMgVG9TY3JlYW1pbmdTbmFrZTxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU2NyZWFtaW5nU25ha2VOb1NwbGl0TnVtYmVyczxUIGV4dGVuZHMgc3RyaW5nPihcbiAgdGVybTogVCxcbik6IFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIHRvU25ha2VOb1NwbGl0TnVtYmVycyh0ZXJtKS50b1VwcGVyQ2FzZSgpIGFzIFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUIGV4dGVuZHMgb2JqZWN0PihcbiAgb2JqOiBULFxuKTogT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9TY3JlYW1pbmdTbmFrZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1NjcmVhbWluZ1NuYWtlTm9TcGxpdE51bWJlcnM8VCBleHRlbmRzIG9iamVjdD4oXG4gIG9iajogVCxcbik6IE9iamVjdFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCB0b1NjcmVhbWluZ1NuYWtlTm9TcGxpdE51bWJlcnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9QYXNjYWw8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvUGFzY2FsPFQ+IHtcbiAgaWYgKGlzTnVtZXJpY0tleSh0ZXJtKSkge1xuICAgIHJldHVybiB0ZXJtIGFzIFRvUGFzY2FsPFQ+O1xuICB9XG5cbiAgcmV0dXJuIHRvQ2FtZWwodGVybSkucmVwbGFjZSgvXihbYS16XSkvLCAobSkgPT5cbiAgICBtWzBdLnRvVXBwZXJDYXNlKCksXG4gICkgYXMgVG9QYXNjYWw8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1Bhc2NhbDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBPYmplY3RUb1Bhc2NhbDxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9QYXNjYWwpO1xufVxuXG5leHBvcnQgdHlwZSBUb0NhbWVsPFMgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+ID0gUyBleHRlbmRzIHN0cmluZ1xuICA/IFMgZXh0ZW5kcyBOdW1lcmljS2V5XG4gICAgPyBTXG4gICAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgSGVhZH1fJHtpbmZlciBUYWlsfWBcbiAgICA/IGAke1RvQ2FtZWw8VW5jYXBpdGFsaXplPEhlYWQ+Pn0ke0NhcGl0YWxpemU8VG9DYW1lbDxUYWlsPj59YFxuICAgIDogUyBleHRlbmRzIGAke2luZmVyIEhlYWR9LSR7aW5mZXIgVGFpbH1gXG4gICAgPyBgJHtUb0NhbWVsPFVuY2FwaXRhbGl6ZTxIZWFkPj59JHtDYXBpdGFsaXplPFRvQ2FtZWw8VGFpbD4+fWBcbiAgICA6IFVuY2FwaXRhbGl6ZTxTPlxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb0NhbWVsPFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsPiA9XG4gIFQgZXh0ZW5kcyB1bmRlZmluZWRcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogVCBleHRlbmRzIG51bGxcbiAgICA/IG51bGxcbiAgICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gICAgPyBBcnJheTxDb252ZXJ0QXJyYXlJdGVtPEFycmF5VHlwZSwgJ2NhbWVsJz4+XG4gICAgOiBUIGV4dGVuZHMgVWludDhBcnJheVxuICAgID8gVWludDhBcnJheVxuICAgIDogVCBleHRlbmRzIERhdGVcbiAgICA/IERhdGVcbiAgICA6IHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVCBhcyBUb0NhbWVsPEs+XTogQ29udmVydE9iamVjdFZhbHVlPFRbS10sICdjYW1lbCc+O1xuICAgICAgfTtcblxuZXhwb3J0IHR5cGUgVG9QYXNjYWw8UyBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IHN5bWJvbD4gPSBTIGV4dGVuZHMgc3RyaW5nXG4gID8gUyBleHRlbmRzIE51bWVyaWNLZXlcbiAgICA/IFNcbiAgICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBIZWFkfV8ke2luZmVyIFRhaWx9YFxuICAgID8gYCR7Q2FwaXRhbGl6ZTxUb0NhbWVsPEhlYWQ+Pn0ke0NhcGl0YWxpemU8VG9DYW1lbDxUYWlsPj59YFxuICAgIDogUyBleHRlbmRzIGAke2luZmVyIEhlYWR9LSR7aW5mZXIgVGFpbH1gXG4gICAgPyBgJHtDYXBpdGFsaXplPFRvQ2FtZWw8SGVhZD4+fSR7Q2FwaXRhbGl6ZTxUb0NhbWVsPFRhaWw+Pn1gXG4gICAgOiBDYXBpdGFsaXplPFM+XG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIE9iamVjdFRvUGFzY2FsPFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsPiA9XG4gIFQgZXh0ZW5kcyB1bmRlZmluZWRcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogVCBleHRlbmRzIG51bGxcbiAgICA/IG51bGxcbiAgICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gICAgPyBBcnJheTxDb252ZXJ0QXJyYXlJdGVtPEFycmF5VHlwZSwgJ3Bhc2NhbCc+PlxuICAgIDogVCBleHRlbmRzIFVpbnQ4QXJyYXlcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgPyBEYXRlXG4gICAgOiB7XG4gICAgICAgIFtLIGluIGtleW9mIFQgYXMgVG9QYXNjYWw8Sz5dOiBDb252ZXJ0T2JqZWN0VmFsdWU8VFtLXSwgJ3Bhc2NhbCc+O1xuICAgICAgfTtcblxuZXhwb3J0IHR5cGUgVG9TbmFrZTxcbiAgUyBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID0gUyBleHRlbmRzIHN0cmluZ1xuICA/IFMgZXh0ZW5kcyBOdW1lcmljS2V5XG4gICAgPyBTXG4gICAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgSGVhZH0ke0NhcGl0YWxDaGFyc30ke2luZmVyIFRhaWx9YCAvLyBzdHJpbmcgaGFzIGEgY2FwaXRhbCBjaGFyIHNvbWV3aGVyZVxuICAgID8gSGVhZCBleHRlbmRzICcnIC8vIHRoZXJlIGlzIGEgY2FwaXRhbCBjaGFyIGluIHRoZSBmaXJzdCBwb3NpdGlvblxuICAgICAgPyBUYWlsIGV4dGVuZHMgJydcbiAgICAgICAgPyBMb3dlcmNhc2U8Uz4gLyogICdBJyAqL1xuICAgICAgICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBDYXBzfSR7VGFpbH1gIC8vIHRhaWwgZXhpc3RzLCBoYXMgY2FwaXRhbCBjaGFyYWN0ZXJzXG4gICAgICAgID8gQ2FwcyBleHRlbmRzIENhcGl0YWxDaGFyc1xuICAgICAgICAgID8gVGFpbCBleHRlbmRzIENhcGl0YWxMZXR0ZXJzXG4gICAgICAgICAgICA/IGAke0xvd2VyY2FzZTxDYXBzPn1fJHtMb3dlcmNhc2U8VGFpbD59YCAvKiAnQUInICovXG4gICAgICAgICAgICA6IFRhaWwgZXh0ZW5kcyBgJHtDYXBpdGFsTGV0dGVyc30ke3N0cmluZ31gXG4gICAgICAgICAgICA/IGAke1RvU25ha2U8Q2Fwcz59XyR7VG9TbmFrZTxUYWlsPn1gIC8qIGZpcnN0IHRhaWwgY2hhciBpcyB1cHBlcj8gJ0FCY2QnICovXG4gICAgICAgICAgICA6IGAke1RvU25ha2U8Q2Fwcz59JHtUb1NuYWtlPFRhaWw+fWAgLyogJ0FiQ0QnLCdBYmNEJywgICovIC8qIFRPRE86IGlmIHRhaWwgaXMgb25seSBudW1iZXJzLCBhcHBlbmQgd2l0aG91dCB1bmRlcnNjb3JlICovXG4gICAgICAgICAgOiBuZXZlciAvKiBuZXZlciByZWFjaGVkLCB1c2VkIGZvciBpbmZlcmVuY2Ugb2YgY2FwcyAqL1xuICAgICAgICA6IG5ldmVyXG4gICAgICA6IFRhaWwgZXh0ZW5kcyAnJyAvKiAnYUInICdhYkNEJyAnQUJDRCcgJ0FCJyAqL1xuICAgICAgPyBTIGV4dGVuZHMgYCR7SGVhZH0ke2luZmVyIENhcHN9YFxuICAgICAgICA/IENhcHMgZXh0ZW5kcyBDYXBpdGFsQ2hhcnNcbiAgICAgICAgICA/IEhlYWQgZXh0ZW5kcyBMb3dlcmNhc2U8SGVhZD4gLyogJ2FiY0QnICovXG4gICAgICAgICAgICA/IENhcHMgZXh0ZW5kcyBOdW1iZXJzXG4gICAgICAgICAgICAgID8gLy8gSGVhZCBleGlzdHMgYW5kIGlzIGxvd2VyY2FzZSwgdGFpbCBkb2VzIG5vdCwgQ2FwcyBpcyBhIG51bWJlciwgd2UgbWF5IGJlIGluIGEgc3ViLXNlbGVjdFxuICAgICAgICAgICAgICAgIC8vIGlmIGhlYWQgZW5kcyB3aXRoIG51bWJlciwgZG9uJ3Qgc3BsaXQgaGVhZCBhbiBDYXBzLCBrZWVwIGNvbnRpZ3VvdXMgbnVtYmVycyB0b2dldGhlclxuICAgICAgICAgICAgICAgIFNwbGl0TnVtYmVycyBleHRlbmRzIGZhbHNlXG4gICAgICAgICAgICAgICAgPyBgJHtUb1NuYWtlPEhlYWQsIFNwbGl0TnVtYmVycz59JHtDYXBzfWBcbiAgICAgICAgICAgICAgICA6IEhlYWQgZXh0ZW5kcyBgJHtzdHJpbmd9JHtOdW1iZXJzfWBcbiAgICAgICAgICAgICAgICA/IG5ldmVyXG4gICAgICAgICAgICAgICAgOiAvLyBoZWFkIGRvZXMgbm90IGVuZCBpbiBudW1iZXIsIHNhZmUgdG8gc3BsaXQuICdhYmMyJyAtPiAnYWJjXzInXG4gICAgICAgICAgICAgICAgICBgJHtUb1NuYWtlPEhlYWQsIFNwbGl0TnVtYmVycz59XyR7Q2Fwc31gXG4gICAgICAgICAgICAgIDogYCR7VG9TbmFrZTxIZWFkLCBTcGxpdE51bWJlcnM+fV8ke1RvU25ha2U8XG4gICAgICAgICAgICAgICAgICBDYXBzLFxuICAgICAgICAgICAgICAgICAgU3BsaXROdW1iZXJzXG4gICAgICAgICAgICAgICAgPn1gIC8qICdhYmNEJyAnYWJjMjUnICovXG4gICAgICAgICAgICA6IG5ldmVyIC8qIHN0b3AgdW5pb24gdHlwZSBmb3JtaW5nICovXG4gICAgICAgICAgOiBuZXZlclxuICAgICAgICA6IG5ldmVyIC8qIG5ldmVyIHJlYWNoZWQsIHVzZWQgZm9yIGluZmVyZW5jZSBvZiBjYXBzICovXG4gICAgICA6IFMgZXh0ZW5kcyBgJHtIZWFkfSR7aW5mZXIgQ2Fwc30ke1RhaWx9YCAvKiAnYWJDZCcgJ0FCQ0QnICdBYkNkJyAnQUJjRCcgKi9cbiAgICAgID8gQ2FwcyBleHRlbmRzIENhcGl0YWxDaGFyc1xuICAgICAgICA/IEhlYWQgZXh0ZW5kcyBMb3dlcmNhc2U8SGVhZD4gLyogaXMgJ2FiQ2QnICdhYkNEJyA/ICovXG4gICAgICAgICAgPyBUYWlsIGV4dGVuZHMgQ2FwaXRhbExldHRlcnMgLyogaXMgJ2FiQ0QnIHdoZXJlIENhcHMgPSAnQycgKi9cbiAgICAgICAgICAgID8gYCR7VG9TbmFrZTxIZWFkLCBTcGxpdE51bWJlcnM+fV8ke1RvU25ha2U8XG4gICAgICAgICAgICAgICAgQ2FwcyxcbiAgICAgICAgICAgICAgICBTcGxpdE51bWJlcnNcbiAgICAgICAgICAgICAgPn1fJHtMb3dlcmNhc2U8VGFpbD59YCAvKiBhQkNEIFRhaWwgPSAnRCcsIEhlYWQgPSAnYUInICovXG4gICAgICAgICAgICA6IFRhaWwgZXh0ZW5kcyBgJHtDYXBpdGFsTGV0dGVyc30ke3N0cmluZ31gIC8qIGlzICdhQkNkJyB3aGVyZSBDYXBzID0gJ0InICovXG4gICAgICAgICAgICA/IENhcHMgZXh0ZW5kcyBOdW1iZXJzXG4gICAgICAgICAgICAgID8gYCR7VG9TbmFrZTxIZWFkLCBTcGxpdE51bWJlcnM+fSR7Q2Fwc31fJHtUb1NuYWtlPFxuICAgICAgICAgICAgICAgICAgVGFpbCxcbiAgICAgICAgICAgICAgICAgIFNwbGl0TnVtYmVyc1xuICAgICAgICAgICAgICAgID59YCAvKiAnczNJZCcgPT4gJ3MzX2lkJyAqL1xuICAgICAgICAgICAgICA6IEhlYWQgZXh0ZW5kcyBOdW1iZXJzXG4gICAgICAgICAgICAgID8gbmV2ZXIgLyogc3RvcCB1bmlvbiB0eXBlIGZvcm1pbmcgKi9cbiAgICAgICAgICAgICAgOiBIZWFkIGV4dGVuZHMgYCR7c3RyaW5nfSR7TnVtYmVyc31gXG4gICAgICAgICAgICAgID8gbmV2ZXIgLyogc3RvcCB1bmlvbiB0eXBlIGZvcm1pbmcgKi9cbiAgICAgICAgICAgICAgOiBgJHtIZWFkfV8ke1RvU25ha2U8Q2FwcywgU3BsaXROdW1iZXJzPn1fJHtUb1NuYWtlPFxuICAgICAgICAgICAgICAgICAgVGFpbCxcbiAgICAgICAgICAgICAgICAgIFNwbGl0TnVtYmVyc1xuICAgICAgICAgICAgICAgID59YCAvKiAnYUJDZCcgPT4gYCR7J2EnfV8ke0xvd2VyY2FzZTwnQic+fV8ke1RvU25ha2U8J0NkJz59YCAqL1xuICAgICAgICAgICAgOiBUYWlsIGV4dGVuZHMgYCR7TG93ZXJjYXNlTGV0dGVyc30ke3N0cmluZ31gXG4gICAgICAgICAgICA/IEhlYWQgZXh0ZW5kcyBgJHtzdHJpbmd9JHtOdW1iZXJzfWBcbiAgICAgICAgICAgICAgPyBgJHtIZWFkfV8ke0xvd2VyY2FzZTxDYXBzPn0ke1RvU25ha2U8XG4gICAgICAgICAgICAgICAgICBUYWlsLFxuICAgICAgICAgICAgICAgICAgU3BsaXROdW1iZXJzXG4gICAgICAgICAgICAgICAgPn1gIC8qICdzM0lkJyA9PiAnczNfaWQnICovXG4gICAgICAgICAgICAgIDogYCR7VG9TbmFrZTxIZWFkLCBTcGxpdE51bWJlcnM+fV8ke0xvd2VyY2FzZTxDYXBzPn0ke1RvU25ha2U8XG4gICAgICAgICAgICAgICAgICBUYWlsLFxuICAgICAgICAgICAgICAgICAgU3BsaXROdW1iZXJzXG4gICAgICAgICAgICAgICAgPn1gIC8qICdhQmNEJyB3aGVyZSBDYXBzID0gJ0InIHRhaWwgc3RhcnRzIGFzIGxvd2VyY2FzZSAqL1xuICAgICAgICAgICAgOiBgJHtUb1NuYWtlPEhlYWQsIFNwbGl0TnVtYmVycz59XyR7TG93ZXJjYXNlPENhcHM+fSR7VG9TbmFrZTxcbiAgICAgICAgICAgICAgICBUYWlsLFxuICAgICAgICAgICAgICAgIFNwbGl0TnVtYmVyc1xuICAgICAgICAgICAgICA+fWAgLyogJ2FCY0QnIHdoZXJlIENhcHMgPSAnQicgdGFpbCBzdGFydHMgYXMgbG93ZXJjYXNlICovXG4gICAgICAgICAgOiBuZXZlclxuICAgICAgICA6IG5ldmVyXG4gICAgICA6IG5ldmVyXG4gICAgOiBTIC8qICdhYmMnICAqL1xuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb1NuYWtlPFxuICBUIGV4dGVuZHMgb2JqZWN0IHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID1cbiAgVCBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBUIGV4dGVuZHMgbnVsbFxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIEFycmF5PGluZmVyIEFycmF5VHlwZT5cbiAgICA/IEFycmF5PENvbnZlcnRBcnJheUl0ZW08QXJyYXlUeXBlLCAnc25ha2UnLCBTcGxpdE51bWJlcnM+PlxuICAgIDogVCBleHRlbmRzIFVpbnQ4QXJyYXlcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgPyBEYXRlXG4gICAgOiB7XG4gICAgICAgIFtLIGluIGtleW9mIFQgYXMgVG9TbmFrZTxLLCBTcGxpdE51bWJlcnM+XTogQ29udmVydE9iamVjdFZhbHVlPFxuICAgICAgICAgIFRbS10sXG4gICAgICAgICAgJ3NuYWtlJyxcbiAgICAgICAgICBTcGxpdE51bWJlcnNcbiAgICAgICAgPjtcbiAgICAgIH07XG5cbmV4cG9ydCB0eXBlIFRvU2NyZWFtaW5nU25ha2U8XG4gIFMgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsXG4gIFNwbGl0TnVtYmVycyBleHRlbmRzIGJvb2xlYW4gPSB0cnVlLFxuPiA9IFVwcGVyY2FzZTxUb1NuYWtlPFMsIFNwbGl0TnVtYmVycz4+O1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFxuICBUIGV4dGVuZHMgb2JqZWN0IHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID1cbiAgVCBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBUIGV4dGVuZHMgbnVsbFxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIEFycmF5PGluZmVyIEFycmF5VHlwZT5cbiAgICA/IEFycmF5PENvbnZlcnRBcnJheUl0ZW08QXJyYXlUeXBlLCAnc2NyZWFtaW5nU25ha2UnLCBTcGxpdE51bWJlcnM+PlxuICAgIDogVCBleHRlbmRzIFVpbnQ4QXJyYXlcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgPyBEYXRlXG4gICAgOiB7XG4gICAgICAgIFtLIGluIGtleW9mIFQgYXMgVG9TY3JlYW1pbmdTbmFrZTxLLCBTcGxpdE51bWJlcnM+XTogQ29udmVydE9iamVjdFZhbHVlPFxuICAgICAgICAgIFRbS10sXG4gICAgICAgICAgJ3NjcmVhbWluZ1NuYWtlJyxcbiAgICAgICAgICBTcGxpdE51bWJlcnNcbiAgICAgICAgPjtcbiAgICAgIH07XG5cbnR5cGUgQ2FzZU1vZGUgPSAnY2FtZWwnIHwgJ3Bhc2NhbCcgfCAnc25ha2UnIHwgJ3NjcmVhbWluZ1NuYWtlJztcblxudHlwZSBOdW1lcmljS2V5ID0gYCR7bnVtYmVyfWA7XG5cbnR5cGUgQ29udmVydDxcbiAgVCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIE1vZGUgZXh0ZW5kcyBDYXNlTW9kZSxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbixcbj4gPVxuICBNb2RlIGV4dGVuZHMgJ2NhbWVsJ1xuICAgID8gT2JqZWN0VG9DYW1lbDxUPlxuICAgIDogTW9kZSBleHRlbmRzICdwYXNjYWwnXG4gICAgPyBPYmplY3RUb1Bhc2NhbDxUPlxuICAgIDogTW9kZSBleHRlbmRzICdzbmFrZSdcbiAgICA/IE9iamVjdFRvU25ha2U8VCwgU3BsaXROdW1iZXJzPlxuICAgIDogT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxULCBTcGxpdE51bWJlcnM+O1xuXG50eXBlIENvbnZlcnRBcnJheUl0ZW08XG4gIFQsXG4gIE1vZGUgZXh0ZW5kcyBDYXNlTW9kZSxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID0gVCBleHRlbmRzIG9iamVjdFxuICA/IENvbnZlcnQ8VCwgTW9kZSwgU3BsaXROdW1iZXJzPlxuICA6IFQ7XG5cbnR5cGUgQ29udmVydE9iamVjdFZhbHVlPFxuICBULFxuICBNb2RlIGV4dGVuZHMgQ2FzZU1vZGUsXG4gIFNwbGl0TnVtYmVycyBleHRlbmRzIGJvb2xlYW4gPSB0cnVlLFxuPiA9IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gID8gQXJyYXk8Q29udmVydEFycmF5SXRlbTxBcnJheVR5cGUsIE1vZGUsIFNwbGl0TnVtYmVycz4+XG4gIDogVCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGxcbiAgPyBDb252ZXJ0PFQsIE1vZGUsIFNwbGl0TnVtYmVycz5cbiAgOiBUO1xuXG5mdW5jdGlvbiBpc051bWVyaWNLZXkodGVybTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXi0/XFxkKyg/OlxcLlxcZCspPyQvLnRlc3QodGVybSk7XG59XG5cbnR5cGUgQ2FwaXRhbExldHRlcnMgPVxuICB8ICdBJ1xuICB8ICdCJ1xuICB8ICdDJ1xuICB8ICdEJ1xuICB8ICdFJ1xuICB8ICdGJ1xuICB8ICdHJ1xuICB8ICdIJ1xuICB8ICdJJ1xuICB8ICdKJ1xuICB8ICdLJ1xuICB8ICdMJ1xuICB8ICdNJ1xuICB8ICdOJ1xuICB8ICdPJ1xuICB8ICdQJ1xuICB8ICdRJ1xuICB8ICdSJ1xuICB8ICdTJ1xuICB8ICdUJ1xuICB8ICdVJ1xuICB8ICdWJ1xuICB8ICdXJ1xuICB8ICdYJ1xuICB8ICdZJ1xuICB8ICdaJztcblxudHlwZSBMb3dlcmNhc2VMZXR0ZXJzID1cbiAgfCAnYSdcbiAgfCAnYidcbiAgfCAnYydcbiAgfCAnZCdcbiAgfCAnZSdcbiAgfCAnZidcbiAgfCAnZydcbiAgfCAnaCdcbiAgfCAnaSdcbiAgfCAnaidcbiAgfCAnaydcbiAgfCAnbCdcbiAgfCAnbSdcbiAgfCAnbidcbiAgfCAnbydcbiAgfCAncCdcbiAgfCAncSdcbiAgfCAncidcbiAgfCAncydcbiAgfCAndCdcbiAgfCAndSdcbiAgfCAndidcbiAgfCAndydcbiAgfCAneCdcbiAgfCAneSdcbiAgfCAneic7XG5cbnR5cGUgTnVtYmVycyA9ICcwJyB8ICcxJyB8ICcyJyB8ICczJyB8ICc0JyB8ICc1JyB8ICc2JyB8ICc3JyB8ICc4JyB8ICc5JztcblxudHlwZSBDYXBpdGFsQ2hhcnMgPSBDYXBpdGFsTGV0dGVycyB8IE51bWJlcnM7XG4iXX0=
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZUNvbnZlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2FzZUNvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnREEsMEJBWUM7QUFFRCxzQ0FFQztBQWtDRCwwQkFFQztBQUVELHNEQUlDO0FBRUQsc0NBRUM7QUFFRCxrRUFJQztBQUVELDRDQUlDO0FBRUQsd0VBSUM7QUFFRCx3REFJQztBQUVELG9GQUlDO0FBRUQsNEJBUUM7QUFFRCx3Q0FFQztBQTFKRCxTQUFTLGFBQWEsQ0FDcEIsR0FBVyxFQUNYLFlBQXFDO0lBRXJDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxXQUFXLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUUsT0FBTyxHQUF5QixDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFZLENBQUM7SUFDdEQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUV6QyxhQUFhO1FBRWIsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQTJCLElBQWUsRUFBRSxFQUFFLENBQ25ELE9BQU8sSUFBSSxLQUFLLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxJQUFJLFlBQVksVUFBVSxDQUFDO2dCQUM3QixDQUFDLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQztnQkFDckIsQ0FBQyxDQUFDLGFBQWEsQ0FTWCxJQUFJLEVBQUUsWUFBWSxDQUFDO2dCQUN2QixDQUFDLENB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Y3Rpb24gY29udmVydE9iamVjdDxUSW5wdXQgZXh0ZW5kcyBvYmplY3QsIFRSZXN1bHQ+KFxuICBvYmo6IFRJbnB1dCxcbiAga2V5Q29udmVydGVyOiAoYXJnOiBzdHJpbmcpID0+IHN0cmluZyxcbik6IFRSZXN1bHQge1xuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iaiBhcyB1bmtub3duIGFzIFRSZXN1bHQ7XG4gIH1cblxuICBjb25zdCBvdXQgPSAoQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fSkgYXMgVFJlc3VsdDtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuXG4gICAgb3V0W2tleUNvbnZlcnRlcihrKV0gPSBBcnJheS5pc0FycmF5KHYpXG4gICAgICA/ICh2Lm1hcCg8QXJyYXlJdGVtIGV4dGVuZHMgb2JqZWN0PihpdGVtOiBBcnJheUl0ZW0pID0+XG4gICAgICAgICAgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgIShpdGVtIGluc3RhbmNlb2YgVWludDhBcnJheSkgJiZcbiAgICAgICAgICAhKGl0ZW0gaW5zdGFuY2VvZiBEYXRlKVxuICAgICAgICAgICAgPyBjb252ZXJ0T2JqZWN0PFxuICAgICAgICAgICAgICAgIEFycmF5SXRlbSxcbiAgICAgICAgICAgICAgICBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9DYW1lbDxUSW5wdXQ+XG4gICAgICAgICAgICAgICAgICA/IE9iamVjdFRvQ2FtZWw8QXJyYXlJdGVtPlxuICAgICAgICAgICAgICAgICAgOiBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9QYXNjYWw8VElucHV0PlxuICAgICAgICAgICAgICAgICAgPyBPYmplY3RUb1Bhc2NhbDxBcnJheUl0ZW0+XG4gICAgICAgICAgICAgICAgICA6IFRSZXN1bHQgZXh0ZW5kcyBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFRJbnB1dD5cbiAgICAgICAgICAgICAgICAgID8gT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxBcnJheUl0ZW0+XG4gICAgICAgICAgICAgICAgICA6IE9iamVjdFRvU25ha2U8QXJyYXlJdGVtPlxuICAgICAgICAgICAgICA+KGl0ZW0sIGtleUNvbnZlcnRlcilcbiAgICAgICAgICAgIDogaXRlbSxcbiAgICAgICAgKSBhcyB1bmtub3duW10pXG4gICAgICA6IHYgaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8IHYgaW5zdGFuY2VvZiBEYXRlXG4gICAgICA/IHZcbiAgICAgIDogdHlwZW9mIHYgPT09ICdvYmplY3QnXG4gICAgICA/IGNvbnZlcnRPYmplY3Q8XG4gICAgICAgICAgdHlwZW9mIHYsXG4gICAgICAgICAgVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvQ2FtZWw8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb0NhbWVsPHR5cGVvZiB2PlxuICAgICAgICAgICAgOiBUUmVzdWx0IGV4dGVuZHMgT2JqZWN0VG9QYXNjYWw8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb1Bhc2NhbDx0eXBlb2Ygdj5cbiAgICAgICAgICAgIDogVFJlc3VsdCBleHRlbmRzIE9iamVjdFRvU2NyZWFtaW5nU25ha2U8VElucHV0PlxuICAgICAgICAgICAgPyBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPHR5cGVvZiB2PlxuICAgICAgICAgICAgOiBPYmplY3RUb1NuYWtlPHR5cGVvZiB2PlxuICAgICAgICA+KHYsIGtleUNvbnZlcnRlcilcbiAgICAgIDogKHYgYXMgdW5rbm93bik7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQ2FtZWw8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvQ2FtZWw8VD4ge1xuICBpZiAoaXNOdW1lcmljS2V5KHRlcm0pKSB7XG4gICAgcmV0dXJuIHRlcm0gYXMgVG9DYW1lbDxUPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgdGVybS5sZW5ndGggPT09IDFcbiAgICAgID8gdGVybS50b0xvd2VyQ2FzZSgpXG4gICAgICA6IHRlcm1cbiAgICAgICAgICAucmVwbGFjZSgvXihbQS1aXSkvLCAobSkgPT4gbVswXS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgIC5yZXBsYWNlKC9bXy1dKFthLXowLTldKS9nLCAobSkgPT4gbVsxXS50b1VwcGVyQ2FzZSgpKVxuICApIGFzIFRvQ2FtZWw8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb0NhbWVsPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IE9iamVjdFRvQ2FtZWw8VD4ge1xuICByZXR1cm4gY29udmVydE9iamVjdChvYmosIHRvQ2FtZWwpO1xufVxuXG5mdW5jdGlvbiB0b1NuYWtlV2l0aFNwbGl0TnVtYmVycyh0ZXJtOiBzdHJpbmcsIHNwbGl0TnVtYmVyczogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChpc051bWVyaWNLZXkodGVybSkpIHtcbiAgICByZXR1cm4gdGVybTtcbiAgfVxuXG4gIGxldCByZXN1bHQ6IHN0cmluZyA9IHRlcm07XG4gIGxldCBjaXJjdWl0QnJlYWtlciA9IDA7XG5cbiAgaWYgKHNwbGl0TnVtYmVycykge1xuICAgIHdoaWxlIChcbiAgICAgICgvKFthLXpdKShbMC05XSspKD8hWzAtOV0qW0EtWl1bYS16XSkvLmV4ZWMocmVzdWx0KT8ubGVuZ3RoIHx8IDApID5cbiAgICAgICAgMiAmJlxuICAgICAgY2lyY3VpdEJyZWFrZXIgPCAxMFxuICAgICkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoXG4gICAgICAgIC8oW2Etel0pKFswLTldKykoPyFbMC05XSpbQS1aXVthLXpdKS8sXG4gICAgICAgIChfYWxsLCBoZWFkOiBzdHJpbmcsIG51bWJlcnM6IHN0cmluZykgPT5cbiAgICAgICAgICBgJHtoZWFkLnRvTG93ZXJDYXNlKCl9XyR7bnVtYmVycy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICApO1xuXG4gICAgICBjaXJjdWl0QnJlYWtlciArPSAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1hdGNoIG9ubHkgdGhlIGNoYXJhY3RlciBiZWZvcmUgYSBjYXBpdGFsIHRvIGF2b2lkIHJlc2Nhbm5pbmcgbG9uZyBwcmVmaXhlcy5cbiAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoLyguKSg/PVtBLVpdKS9nLCAoaGVhZDogc3RyaW5nKSA9PlxuICAgIGNpcmN1aXRCcmVha2VyKysgPCAxMCA/IGAke2hlYWR9X2AgOiBoZWFkLFxuICApO1xuXG4gIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2U8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvU25ha2U8VD4ge1xuICByZXR1cm4gdG9TbmFrZVdpdGhTcGxpdE51bWJlcnModGVybSwgdHJ1ZSkgYXMgVG9TbmFrZTxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2VOb1NwbGl0TnVtYmVyczxUIGV4dGVuZHMgc3RyaW5nPihcbiAgdGVybTogVCxcbik6IFRvU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIHRvU25ha2VXaXRoU3BsaXROdW1iZXJzKHRlcm0sIGZhbHNlKSBhcyBUb1NuYWtlPFQsIGZhbHNlPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdFRvU25ha2U8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogT2JqZWN0VG9TbmFrZTxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgKGtleSkgPT4gdG9TbmFrZVdpdGhTcGxpdE51bWJlcnMoa2V5LCB0cnVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1NuYWtlTm9TcGxpdE51bWJlcnM8VCBleHRlbmRzIG9iamVjdD4oXG4gIG9iajogVCxcbik6IE9iamVjdFRvU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCAoa2V5KSA9PiB0b1NuYWtlV2l0aFNwbGl0TnVtYmVycyhrZXksIGZhbHNlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1NjcmVhbWluZ1NuYWtlPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICB0ZXJtOiBULFxuKTogVG9TY3JlYW1pbmdTbmFrZTxUPiB7XG4gIHJldHVybiB0b1NuYWtlKHRlcm0pLnRvVXBwZXJDYXNlKCkgYXMgVG9TY3JlYW1pbmdTbmFrZTxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU2NyZWFtaW5nU25ha2VOb1NwbGl0TnVtYmVyczxUIGV4dGVuZHMgc3RyaW5nPihcbiAgdGVybTogVCxcbik6IFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIHRvU25ha2VOb1NwbGl0TnVtYmVycyh0ZXJtKS50b1VwcGVyQ2FzZSgpIGFzIFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUIGV4dGVuZHMgb2JqZWN0PihcbiAgb2JqOiBULFxuKTogT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9TY3JlYW1pbmdTbmFrZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1NjcmVhbWluZ1NuYWtlTm9TcGxpdE51bWJlcnM8VCBleHRlbmRzIG9iamVjdD4oXG4gIG9iajogVCxcbik6IE9iamVjdFRvU2NyZWFtaW5nU25ha2U8VCwgZmFsc2U+IHtcbiAgcmV0dXJuIGNvbnZlcnRPYmplY3Qob2JqLCB0b1NjcmVhbWluZ1NuYWtlTm9TcGxpdE51bWJlcnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9QYXNjYWw8VCBleHRlbmRzIHN0cmluZz4odGVybTogVCk6IFRvUGFzY2FsPFQ+IHtcbiAgaWYgKGlzTnVtZXJpY0tleSh0ZXJtKSkge1xuICAgIHJldHVybiB0ZXJtIGFzIFRvUGFzY2FsPFQ+O1xuICB9XG5cbiAgcmV0dXJuIHRvQ2FtZWwodGVybSkucmVwbGFjZSgvXihbYS16XSkvLCAobSkgPT5cbiAgICBtWzBdLnRvVXBwZXJDYXNlKCksXG4gICkgYXMgVG9QYXNjYWw8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUb1Bhc2NhbDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBPYmplY3RUb1Bhc2NhbDxUPiB7XG4gIHJldHVybiBjb252ZXJ0T2JqZWN0KG9iaiwgdG9QYXNjYWwpO1xufVxuXG5leHBvcnQgdHlwZSBUb0NhbWVsPFMgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2w+ID0gUyBleHRlbmRzIHN0cmluZ1xuICA/IFMgZXh0ZW5kcyBOdW1lcmljS2V5XG4gICAgPyBTXG4gICAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgSGVhZH1fJHtpbmZlciBUYWlsfWBcbiAgICA/IGAke1RvQ2FtZWw8VW5jYXBpdGFsaXplPEhlYWQ+Pn0ke0NhcGl0YWxpemU8VG9DYW1lbDxUYWlsPj59YFxuICAgIDogUyBleHRlbmRzIGAke2luZmVyIEhlYWR9LSR7aW5mZXIgVGFpbH1gXG4gICAgPyBgJHtUb0NhbWVsPFVuY2FwaXRhbGl6ZTxIZWFkPj59JHtDYXBpdGFsaXplPFRvQ2FtZWw8VGFpbD4+fWBcbiAgICA6IFVuY2FwaXRhbGl6ZTxTPlxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb0NhbWVsPFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsPiA9XG4gIFQgZXh0ZW5kcyB1bmRlZmluZWRcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogVCBleHRlbmRzIG51bGxcbiAgICA/IG51bGxcbiAgICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gICAgPyBBcnJheTxDb252ZXJ0QXJyYXlJdGVtPEFycmF5VHlwZSwgJ2NhbWVsJz4+XG4gICAgOiBUIGV4dGVuZHMgVWludDhBcnJheVxuICAgID8gVWludDhBcnJheVxuICAgIDogVCBleHRlbmRzIERhdGVcbiAgICA/IERhdGVcbiAgICA6IHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVCBhcyBUb0NhbWVsPEs+XTogQ29udmVydE9iamVjdFZhbHVlPFRbS10sICdjYW1lbCc+O1xuICAgICAgfTtcblxuZXhwb3J0IHR5cGUgVG9QYXNjYWw8UyBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IHN5bWJvbD4gPSBTIGV4dGVuZHMgc3RyaW5nXG4gID8gUyBleHRlbmRzIE51bWVyaWNLZXlcbiAgICA/IFNcbiAgICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBIZWFkfV8ke2luZmVyIFRhaWx9YFxuICAgID8gYCR7Q2FwaXRhbGl6ZTxUb0NhbWVsPEhlYWQ+Pn0ke0NhcGl0YWxpemU8VG9DYW1lbDxUYWlsPj59YFxuICAgIDogUyBleHRlbmRzIGAke2luZmVyIEhlYWR9LSR7aW5mZXIgVGFpbH1gXG4gICAgPyBgJHtDYXBpdGFsaXplPFRvQ2FtZWw8SGVhZD4+fSR7Q2FwaXRhbGl6ZTxUb0NhbWVsPFRhaWw+Pn1gXG4gICAgOiBDYXBpdGFsaXplPFM+XG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIE9iamVjdFRvUGFzY2FsPFQgZXh0ZW5kcyBvYmplY3QgfCB1bmRlZmluZWQgfCBudWxsPiA9XG4gIFQgZXh0ZW5kcyB1bmRlZmluZWRcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogVCBleHRlbmRzIG51bGxcbiAgICA/IG51bGxcbiAgICA6IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gICAgPyBBcnJheTxDb252ZXJ0QXJyYXlJdGVtPEFycmF5VHlwZSwgJ3Bhc2NhbCc+PlxuICAgIDogVCBleHRlbmRzIFVpbnQ4QXJyYXlcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgPyBEYXRlXG4gICAgOiB7XG4gICAgICAgIFtLIGluIGtleW9mIFQgYXMgVG9QYXNjYWw8Sz5dOiBDb252ZXJ0T2JqZWN0VmFsdWU8VFtLXSwgJ3Bhc2NhbCc+O1xuICAgICAgfTtcblxuZXhwb3J0IHR5cGUgVG9TbmFrZTxcbiAgUyBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID0gUyBleHRlbmRzIHN0cmluZ1xuICA/IHN0cmluZyBleHRlbmRzIFNcbiAgICA/IHN0cmluZ1xuICAgIDogUyBleHRlbmRzIE51bWVyaWNLZXlcbiAgICA/IFNcbiAgICA6IFNuYWtlU2NhbjxTLCAnJywgJ3N0YXJ0JywgU3BsaXROdW1iZXJzPlxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb1NuYWtlPFxuICBUIGV4dGVuZHMgb2JqZWN0IHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID1cbiAgVCBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBUIGV4dGVuZHMgbnVsbFxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIEFycmF5PGluZmVyIEFycmF5VHlwZT5cbiAgICA/IEFycmF5PENvbnZlcnRBcnJheUl0ZW08QXJyYXlUeXBlLCAnc25ha2UnLCBTcGxpdE51bWJlcnM+PlxuICAgIDogVCBleHRlbmRzIFVpbnQ4QXJyYXlcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgPyBEYXRlXG4gICAgOiB7XG4gICAgICAgIFtLIGluIGtleW9mIFQgYXMgVG9TbmFrZTxLLCBTcGxpdE51bWJlcnM+XTogQ29udmVydE9iamVjdFZhbHVlPFxuICAgICAgICAgIFRbS10sXG4gICAgICAgICAgJ3NuYWtlJyxcbiAgICAgICAgICBTcGxpdE51bWJlcnNcbiAgICAgICAgPjtcbiAgICAgIH07XG5cbmV4cG9ydCB0eXBlIFRvU2NyZWFtaW5nU25ha2U8XG4gIFMgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsXG4gIFNwbGl0TnVtYmVycyBleHRlbmRzIGJvb2xlYW4gPSB0cnVlLFxuPiA9IFVwcGVyY2FzZTxUb1NuYWtlPFMsIFNwbGl0TnVtYmVycz4+O1xuXG5leHBvcnQgdHlwZSBPYmplY3RUb1NjcmVhbWluZ1NuYWtlPFxuICBUIGV4dGVuZHMgb2JqZWN0IHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID1cbiAgVCBleHRlbmRzIHVuZGVmaW5lZFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBUIGV4dGVuZHMgbnVsbFxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIEFycmF5PGluZmVyIEFycmF5VHlwZT5cbiAgICA/IEFycmF5PENvbnZlcnRBcnJheUl0ZW08QXJyYXlUeXBlLCAnc2NyZWFtaW5nU25ha2UnLCBTcGxpdE51bWJlcnM+PlxuICAgIDogVCBleHRlbmRzIFVpbnQ4QXJyYXlcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IFQgZXh0ZW5kcyBEYXRlXG4gICAgPyBEYXRlXG4gICAgOiB7XG4gICAgICAgIFtLIGluIGtleW9mIFQgYXMgVG9TY3JlYW1pbmdTbmFrZTxLLCBTcGxpdE51bWJlcnM+XTogQ29udmVydE9iamVjdFZhbHVlPFxuICAgICAgICAgIFRbS10sXG4gICAgICAgICAgJ3NjcmVhbWluZ1NuYWtlJyxcbiAgICAgICAgICBTcGxpdE51bWJlcnNcbiAgICAgICAgPjtcbiAgICAgIH07XG5cbnR5cGUgQ2FzZU1vZGUgPSAnY2FtZWwnIHwgJ3Bhc2NhbCcgfCAnc25ha2UnIHwgJ3NjcmVhbWluZ1NuYWtlJztcblxudHlwZSBOdW1lcmljS2V5ID0gYCR7bnVtYmVyfWA7XG5cbnR5cGUgU25ha2VTY2FuPFxuICBTIGV4dGVuZHMgc3RyaW5nLFxuICBBY2MgZXh0ZW5kcyBzdHJpbmcsXG4gIFByZXZpb3VzIGV4dGVuZHMgQ2hhcmFjdGVyS2luZCxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbixcbj4gPSBTIGV4dGVuZHMgYCR7aW5mZXIgSGVhZH0ke2luZmVyIFRhaWx9YFxuICA/IEhlYWQgZXh0ZW5kcyBOdW1iZXJzXG4gICAgPyBUYWtlTnVtYmVyUnVuPFM+IGV4dGVuZHMgW1xuICAgICAgICBpbmZlciBOdW1iZXJSdW4gZXh0ZW5kcyBzdHJpbmcsXG4gICAgICAgIGluZmVyIEFmdGVyTnVtYmVyIGV4dGVuZHMgc3RyaW5nLFxuICAgICAgXVxuICAgICAgPyBTbmFrZVNjYW48XG4gICAgICAgICAgQWZ0ZXJOdW1iZXIsXG4gICAgICAgICAgYCR7QWNjfSR7TnVtYmVyU2VwYXJhdG9yPFxuICAgICAgICAgICAgUHJldmlvdXMsXG4gICAgICAgICAgICBBZnRlck51bWJlcixcbiAgICAgICAgICAgIFNwbGl0TnVtYmVyc1xuICAgICAgICAgID59JHtOdW1iZXJSdW59YCxcbiAgICAgICAgICAnbnVtYmVyJyxcbiAgICAgICAgICBTcGxpdE51bWJlcnNcbiAgICAgICAgPlxuICAgICAgOiBuZXZlclxuICAgIDogSGVhZCBleHRlbmRzIENhcGl0YWxMZXR0ZXJzXG4gICAgPyBTbmFrZVNjYW48XG4gICAgICAgIFRhaWwsXG4gICAgICAgIGAke0FjY30ke1dvcmRTZXBhcmF0b3I8QWNjPn0ke0xvd2VyY2FzZTxIZWFkPn1gLFxuICAgICAgICAndXBwZXInLFxuICAgICAgICBTcGxpdE51bWJlcnNcbiAgICAgID5cbiAgICA6IEhlYWQgZXh0ZW5kcyBMb3dlcmNhc2VMZXR0ZXJzXG4gICAgPyBTbmFrZVNjYW48VGFpbCwgYCR7QWNjfSR7SGVhZH1gLCAnbG93ZXInLCBTcGxpdE51bWJlcnM+XG4gICAgOiBTbmFrZVNjYW48VGFpbCwgYCR7QWNjfSR7SGVhZH1gLCAnb3RoZXInLCBTcGxpdE51bWJlcnM+XG4gIDogQWNjO1xuXG50eXBlIFRha2VOdW1iZXJSdW48XG4gIFMgZXh0ZW5kcyBzdHJpbmcsXG4gIEFjYyBleHRlbmRzIHN0cmluZyA9ICcnLFxuPiA9IFMgZXh0ZW5kcyBgJHtpbmZlciBIZWFkfSR7aW5mZXIgVGFpbH1gXG4gID8gSGVhZCBleHRlbmRzIE51bWJlcnNcbiAgICA/IFRha2VOdW1iZXJSdW48VGFpbCwgYCR7QWNjfSR7SGVhZH1gPlxuICAgIDogW0FjYywgU11cbiAgOiBbQWNjLCAnJ107XG5cbnR5cGUgTnVtYmVyU2VwYXJhdG9yPFxuICBQcmV2aW91cyBleHRlbmRzIENoYXJhY3RlcktpbmQsXG4gIEFmdGVyTnVtYmVyIGV4dGVuZHMgc3RyaW5nLFxuICBTcGxpdE51bWJlcnMgZXh0ZW5kcyBib29sZWFuLFxuPiA9IFNwbGl0TnVtYmVycyBleHRlbmRzIGZhbHNlXG4gID8gJydcbiAgOiBQcmV2aW91cyBleHRlbmRzICdsb3dlcidcbiAgPyBBZnRlck51bWJlciBleHRlbmRzIGAke0NhcGl0YWxMZXR0ZXJzfSR7TG93ZXJjYXNlTGV0dGVyc30ke3N0cmluZ31gXG4gICAgPyAnJ1xuICAgIDogJ18nXG4gIDogJyc7XG5cbnR5cGUgV29yZFNlcGFyYXRvcjxBY2MgZXh0ZW5kcyBzdHJpbmc+ID0gQWNjIGV4dGVuZHMgJydcbiAgPyAnJ1xuICA6IEFjYyBleHRlbmRzIGAke3N0cmluZ31fYFxuICA/ICcnXG4gIDogJ18nO1xuXG50eXBlIENoYXJhY3RlcktpbmQgPSAnc3RhcnQnIHwgJ2xvd2VyJyB8ICd1cHBlcicgfCAnbnVtYmVyJyB8ICdvdGhlcic7XG5cbnR5cGUgQ29udmVydDxcbiAgVCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIE1vZGUgZXh0ZW5kcyBDYXNlTW9kZSxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbixcbj4gPVxuICBNb2RlIGV4dGVuZHMgJ2NhbWVsJ1xuICAgID8gT2JqZWN0VG9DYW1lbDxUPlxuICAgIDogTW9kZSBleHRlbmRzICdwYXNjYWwnXG4gICAgPyBPYmplY3RUb1Bhc2NhbDxUPlxuICAgIDogTW9kZSBleHRlbmRzICdzbmFrZSdcbiAgICA/IE9iamVjdFRvU25ha2U8VCwgU3BsaXROdW1iZXJzPlxuICAgIDogT2JqZWN0VG9TY3JlYW1pbmdTbmFrZTxULCBTcGxpdE51bWJlcnM+O1xuXG50eXBlIENvbnZlcnRBcnJheUl0ZW08XG4gIFQsXG4gIE1vZGUgZXh0ZW5kcyBDYXNlTW9kZSxcbiAgU3BsaXROdW1iZXJzIGV4dGVuZHMgYm9vbGVhbiA9IHRydWUsXG4+ID0gVCBleHRlbmRzIG9iamVjdFxuICA/IENvbnZlcnQ8VCwgTW9kZSwgU3BsaXROdW1iZXJzPlxuICA6IFQ7XG5cbnR5cGUgQ29udmVydE9iamVjdFZhbHVlPFxuICBULFxuICBNb2RlIGV4dGVuZHMgQ2FzZU1vZGUsXG4gIFNwbGl0TnVtYmVycyBleHRlbmRzIGJvb2xlYW4gPSB0cnVlLFxuPiA9IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBBcnJheVR5cGU+XG4gID8gQXJyYXk8Q29udmVydEFycmF5SXRlbTxBcnJheVR5cGUsIE1vZGUsIFNwbGl0TnVtYmVycz4+XG4gIDogVCBleHRlbmRzIG9iamVjdCB8IHVuZGVmaW5lZCB8IG51bGxcbiAgPyBDb252ZXJ0PFQsIE1vZGUsIFNwbGl0TnVtYmVycz5cbiAgOiBUO1xuXG5mdW5jdGlvbiBpc051bWVyaWNLZXkodGVybTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXi0/XFxkKyg/OlxcLlxcZCspPyQvLnRlc3QodGVybSk7XG59XG5cbnR5cGUgQ2FwaXRhbExldHRlcnMgPVxuICB8ICdBJ1xuICB8ICdCJ1xuICB8ICdDJ1xuICB8ICdEJ1xuICB8ICdFJ1xuICB8ICdGJ1xuICB8ICdHJ1xuICB8ICdIJ1xuICB8ICdJJ1xuICB8ICdKJ1xuICB8ICdLJ1xuICB8ICdMJ1xuICB8ICdNJ1xuICB8ICdOJ1xuICB8ICdPJ1xuICB8ICdQJ1xuICB8ICdRJ1xuICB8ICdSJ1xuICB8ICdTJ1xuICB8ICdUJ1xuICB8ICdVJ1xuICB8ICdWJ1xuICB8ICdXJ1xuICB8ICdYJ1xuICB8ICdZJ1xuICB8ICdaJztcblxudHlwZSBMb3dlcmNhc2VMZXR0ZXJzID1cbiAgfCAnYSdcbiAgfCAnYidcbiAgfCAnYydcbiAgfCAnZCdcbiAgfCAnZSdcbiAgfCAnZidcbiAgfCAnZydcbiAgfCAnaCdcbiAgfCAnaSdcbiAgfCAnaidcbiAgfCAnaydcbiAgfCAnbCdcbiAgfCAnbSdcbiAgfCAnbidcbiAgfCAnbydcbiAgfCAncCdcbiAgfCAncSdcbiAgfCAncidcbiAgfCAncydcbiAgfCAndCdcbiAgfCAndSdcbiAgfCAndidcbiAgfCAndydcbiAgfCAneCdcbiAgfCAneSdcbiAgfCAneic7XG5cbnR5cGUgTnVtYmVycyA9ICcwJyB8ICcxJyB8ICcyJyB8ICczJyB8ICc0JyB8ICc1JyB8ICc2JyB8ICc3JyB8ICc4JyB8ICc5JztcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"lint": "eslint --fix --no-error-on-unmatched-pattern src test scripts",
|
|
14
14
|
"package": "mkdir -p dist/js && mv $(npm pack) dist/js/",
|
|
15
15
|
"publish": "npm publish \"dist/js/ts-case-convert-$(cat dist/version.txt).tgz\" --tag latest",
|
|
16
|
+
"github-release": "gh release create \"$(cat dist/releasetag.txt)\" \"dist/js/ts-case-convert-$(cat dist/version.txt).tgz\" --title \"$(cat dist/releasetag.txt)\" --notes-file dist/changelog.md --verify-tag",
|
|
16
17
|
"release": "rm -fr dist && pnpm run bump && pnpm run build && pnpm run unbump",
|
|
17
18
|
"tag": "node scripts/tag-version.js",
|
|
18
19
|
"test": "jest --passWithNoTests --updateSnapshot",
|
|
@@ -61,7 +62,7 @@
|
|
|
61
62
|
]
|
|
62
63
|
}
|
|
63
64
|
},
|
|
64
|
-
"version": "2.3.
|
|
65
|
+
"version": "2.3.2",
|
|
65
66
|
"types": "lib/index.d.ts",
|
|
66
67
|
"exports": {
|
|
67
68
|
".": {
|
package/version.json
DELETED