@magic-xpa/utils 4.1200.0-dev4120.21 → 4.1200.0-dev4120.212

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.
@@ -1,232 +0,0 @@
1
- import { PICInterface } from "./PICInterface";
2
- import { UtilStrByteMode } from "./UtilStrByteMode";
3
- import { NNumber } from "@magic-xpa/mscorelib";
4
- const MAX_GENGO = 6;
5
- export class UtilDateJpn {
6
- static _instance = null;
7
- static JweekStr = [
8
- " ", "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"
9
- ];
10
- static JmonthStr = [
11
- "", " 1月", " 2月", " 3月", " 4月", " 5月", " 6月", " 7月", " 8月", " 9月", "10月", "11月", "12月"
12
- ];
13
- static GengoStr = [
14
- ["?", "?", "????"],
15
- ["M", "m", "明治"],
16
- ["T", "t", "大正"],
17
- ["S", "s", "昭和"],
18
- ["H", "h", "平成"],
19
- ["R", "r", "令和"],
20
- ["?", "?", "??"],
21
- ["?", "?", "??"],
22
- ["?", "?", "??"]
23
- ];
24
- static StartDayOfGengo = [
25
- [1, 1, 1, 1],
26
- [1868, 9, 8, 252],
27
- [1912, 6, 30, 212],
28
- [1926, 12, 25, 359],
29
- [1989, 1, 8, 8],
30
- [2019, 5, 1, 121],
31
- [0, 0, 0, 0],
32
- [0, 0, 0, 0],
33
- [0, 0, 0, 0]
34
- ];
35
- MaxGengo = MAX_GENGO;
36
- static getInstance() {
37
- if (UtilDateJpn._instance === null) {
38
- UtilDateJpn._instance = new UtilDateJpn();
39
- }
40
- return UtilDateJpn._instance;
41
- }
42
- static getArrayDow() {
43
- return UtilDateJpn.JweekStr;
44
- }
45
- static getStrDow(intIdx) {
46
- let flag = intIdx < 0 || 7 < intIdx;
47
- if (flag) {
48
- intIdx = 0;
49
- }
50
- return UtilDateJpn.JweekStr[intIdx];
51
- }
52
- static convertStrMonth(month) {
53
- let flag = month < 0 || 12 < month;
54
- if (flag) {
55
- month = 0;
56
- }
57
- return UtilDateJpn.JmonthStr[month];
58
- }
59
- date_jpn_year_ofs(intYear, intDoy) {
60
- let result;
61
- if (intYear < 1 || intDoy < 1) {
62
- result = 0;
63
- }
64
- else {
65
- let num = this.MaxGengo - 1;
66
- while (intYear < UtilDateJpn.StartDayOfGengo[num][0]) {
67
- num = num - 1;
68
- }
69
- if (intYear === UtilDateJpn.StartDayOfGengo[num][0] && intDoy < UtilDateJpn.StartDayOfGengo[num][3]) {
70
- num = num - 1;
71
- }
72
- result = intYear - UtilDateJpn.StartDayOfGengo[num][0] + 1;
73
- }
74
- return result;
75
- }
76
- date_jpn_yr_2_a(intYear, intDoy, isKanji) {
77
- let num;
78
- if (intYear < 1 || intDoy < 1) {
79
- num = 0;
80
- }
81
- else {
82
- num = this.MaxGengo - 1;
83
- while (intYear < UtilDateJpn.StartDayOfGengo[num][0]) {
84
- num = num - 1;
85
- }
86
- if (intYear === UtilDateJpn.StartDayOfGengo[num][0] && intDoy < UtilDateJpn.StartDayOfGengo[num][3]) {
87
- num = num - 1;
88
- }
89
- }
90
- let result;
91
- if (isKanji) {
92
- result = UtilDateJpn.GengoStr[num][2];
93
- }
94
- else {
95
- result = UtilDateJpn.GengoStr[num][0];
96
- }
97
- return result;
98
- }
99
- date_jpn_yr_4_a(ucp_str, s_len) {
100
- let i = this.MaxGengo - 1;
101
- if (s_len > 0) {
102
- if (s_len > 1) {
103
- ucp_str = UtilStrByteMode.leftB(ucp_str, s_len);
104
- }
105
- while (i > 0) {
106
- if (s_len === 1) {
107
- if (ucp_str === UtilDateJpn.GengoStr[i][0] || ucp_str === UtilDateJpn.GengoStr[i][1]) {
108
- break;
109
- }
110
- }
111
- else {
112
- if (s_len > 1) {
113
- let text = UtilStrByteMode.leftB(UtilDateJpn.GengoStr[i][2], s_len);
114
- if (ucp_str === text) {
115
- break;
116
- }
117
- }
118
- }
119
- i = i - 1;
120
- }
121
- }
122
- let result;
123
- if (i > 0) {
124
- result = UtilDateJpn.StartDayOfGengo[i][0];
125
- }
126
- else {
127
- const text = ucp_str.substr(0, 1);
128
- if (text === " " || text === "?") {
129
- result = 1;
130
- }
131
- else {
132
- result = 0;
133
- }
134
- }
135
- return result;
136
- }
137
- static getEraNameStrInDate(strDate, strPicture, intStartPos) {
138
- let result = null;
139
- let intPicIdxOfs = 0;
140
- let i = intStartPos;
141
- while (i + intPicIdxOfs < strPicture.length) {
142
- let intLetters;
143
- if (strPicture.charCodeAt(i + intPicIdxOfs) === PICInterface.PIC_JY1) {
144
- intLetters = 1;
145
- }
146
- else {
147
- if (strPicture.charCodeAt(i + intPicIdxOfs) === PICInterface.PIC_JY2) {
148
- intLetters = 1;
149
- }
150
- else {
151
- if (strPicture.charCodeAt(i + intPicIdxOfs) === PICInterface.PIC_JY4) {
152
- intLetters = 2;
153
- }
154
- else {
155
- if (i < strDate.length) {
156
- if (!UtilStrByteMode.isHalfWidth(strDate[i]) && UtilStrByteMode.isHalfWidth(strPicture[i + intPicIdxOfs])) {
157
- intPicIdxOfs = intPicIdxOfs + 1;
158
- }
159
- }
160
- i = i + 1;
161
- continue;
162
- }
163
- }
164
- }
165
- result = strDate.substr(i, intLetters);
166
- break;
167
- }
168
- return result;
169
- }
170
- static getEraNameLenInPicture(strPicture, intStartPos) {
171
- let intLetters = 0;
172
- for (let i = intStartPos; i < strPicture.length; i = i + 1) {
173
- if (strPicture.charCodeAt(i) === PICInterface.PIC_JY1) {
174
- intLetters = 1;
175
- }
176
- else {
177
- if (strPicture.charCodeAt(i) === PICInterface.PIC_JY2) {
178
- intLetters = 2;
179
- }
180
- else {
181
- if (strPicture.charCodeAt(i) === PICInterface.PIC_JY4) {
182
- intLetters = 4;
183
- }
184
- }
185
- }
186
- if (intLetters > 0) {
187
- break;
188
- }
189
- }
190
- return intLetters;
191
- }
192
- getStartYearOfEra(strDate, strPicture) {
193
- let eraNameStrInDate = UtilDateJpn.getEraNameStrInDate(strDate, strPicture, 0);
194
- let result;
195
- if (eraNameStrInDate === null) {
196
- result = 0;
197
- }
198
- else {
199
- let eraNameLenInPicture = UtilDateJpn.getEraNameLenInPicture(strPicture, 0);
200
- if (eraNameLenInPicture === 0) {
201
- result = 0;
202
- }
203
- else {
204
- let intStartYearOfEra = this.date_jpn_yr_4_a(eraNameStrInDate, eraNameLenInPicture);
205
- result = intStartYearOfEra;
206
- }
207
- }
208
- return result;
209
- }
210
- addExtraGengo(strExtraGengo) {
211
- let strGengoInfo = strExtraGengo.split(';');
212
- for (let i = 0; i < strGengoInfo.length; i = i + 1) {
213
- if (strGengoInfo[i].length > 0) {
214
- let strTok = strGengoInfo[i].split(',');
215
- if (strTok.length === 3 && strTok[0].length > 0 && strTok[1].length > 0 && strTok[2].length > 0) {
216
- let strDate = strTok[0].split('/');
217
- if (strDate.length === 3 && strDate[0].length > 0 && strDate[1].length > 0 && strDate[2].length > 0) {
218
- UtilDateJpn.GengoStr[MAX_GENGO + i][0] = strTok[2].substr(0, 1);
219
- UtilDateJpn.GengoStr[MAX_GENGO + i][1] = strTok[2].substr(1, 1);
220
- UtilDateJpn.GengoStr[MAX_GENGO + i][2] = strTok[2].substr(2);
221
- UtilDateJpn.StartDayOfGengo[MAX_GENGO + i][0] = NNumber.Parse(strDate[0]);
222
- UtilDateJpn.StartDayOfGengo[MAX_GENGO + i][1] = NNumber.Parse(strDate[1]);
223
- UtilDateJpn.StartDayOfGengo[MAX_GENGO + i][2] = NNumber.Parse(strDate[2]);
224
- UtilDateJpn.StartDayOfGengo[MAX_GENGO + i][3] = NNumber.Parse(strTok[1]);
225
- this.MaxGengo++;
226
- }
227
- }
228
- }
229
- }
230
- }
231
- }
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbERhdGVKcG4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91dGlscy9zcmMvVXRpbERhdGVKcG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFN0MsTUFBTSxTQUFTLEdBQVcsQ0FBQyxDQUFDO0FBSTVCLE1BQU0sT0FBTyxXQUFXO0lBUWQsTUFBTSxDQUFDLFNBQVMsR0FBZ0IsSUFBSSxDQUFDO0lBRXJDLE1BQU0sQ0FBQyxRQUFRLEdBQWE7UUFDbEMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7S0FDdkQsQ0FBQztJQUNNLE1BQU0sQ0FBQyxTQUFTLEdBQWE7UUFDbkMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztLQUN2RixDQUFDO0lBQ00sTUFBTSxDQUFDLFFBQVEsR0FBZTtRQUNwQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO1FBQ2xCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7UUFDaEIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztRQUNoQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDO1FBQ2hCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7UUFDaEIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFF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T0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQ25HLFdBQVcsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNoRSxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDaEUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFFN0QsV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDMUUsV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDMUUsV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDMUUsV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDekUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUNqQjtpQkFDRjthQUNGO1NBQ0Y7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQSUNJbnRlcmZhY2V9IGZyb20gXCIuL1BJQ0ludGVyZmFjZVwiO1xyXG5pbXBvcnQge1V0aWxTdHJCeXRlTW9kZX0gZnJvbSBcIi4vVXRpbFN0ckJ5dGVNb2RlXCI7XHJcbmltcG9ydCB7Tk51bWJlcn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcblxyXG5jb25zdCBNQVhfR0VOR086IG51bWJlciA9IDY7XHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBVdGlsRGF0ZUpwbiB7XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEpQTjogSmFwYW5lc2UgZGF0ZSBwaWN0dXJlIHN1cHBvcnRcclxuICAvLy8gICBVdGlsaXR5IENsYXNzIGZvciBKYXBhbmVzZSBkYXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPGF1dGhvcj4gIFRvc2hpcm8gTmFrYXlvc2hpIChNU0opXHJcbiAgLy8vIDwvYXV0aG9yPlxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IFV0aWxEYXRlSnBuID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgSndlZWtTdHI6IHN0cmluZ1tdID0gW1xyXG4gICAgXCIgICBcIiwgXCLml6Xmm5zml6VcIiwgXCLmnIjmm5zml6VcIiwgXCLngavmm5zml6VcIiwgXCLmsLTmm5zml6VcIiwgXCLmnKjmm5zml6VcIiwgXCLph5Hmm5zml6VcIiwgXCLlnJ/mm5zml6VcIlxyXG4gIF07XHJcbiAgcHJpdmF0ZSBzdGF0aWMgSm1vbnRoU3RyOiBzdHJpbmdbXSA9IFtcclxuICAgIFwiXCIsIFwiIDHmnIhcIiwgXCIgMuaciFwiLCBcIiAz5pyIXCIsIFwiIDTmnIhcIiwgXCIgNeaciFwiLCBcIiA25pyIXCIsIFwiIDfmnIhcIiwgXCIgOOaciFwiLCBcIiA55pyIXCIsIFwiMTDmnIhcIiwgXCIxMeaciFwiLCBcIjEy5pyIXCJcclxuICBdO1xyXG4gIHByaXZhdGUgc3RhdGljIEdlbmdvU3RyOiBzdHJpbmdbXVtdID0gW1xyXG4gICAgW1wiP1wiLCBcIj9cIiwgXCI/Pz8/XCJdLFxyXG4gICAgW1wiTVwiLCBcIm1cIiwgXCLmmI7msrtcIl0sXHJcbiAgICBbXCJUXCIsIFwidFwiLCBcIuWkp+ato1wiXSxcclxuICAgIFtcIlNcIiwgXCJzXCIsIFwi5pit5ZKMXCJdLFxyXG4gICAgW1wiSFwiLCBcImhcIiwgXCLlubPmiJBcIl0sXHJcbiAgICBbXCJSXCIsIFwiclwiLCBcIuS7pOWSjFwiXSxcclxuICAgIFtcIj9cIiwgXCI/XCIsIFwi77yf77yfXCJdLFxyXG4gICAgW1wiP1wiLCBcIj9cIiwgXCLvvJ/vvJ9cIl0sXHJcbiAgICBbXCI/XCIsIFwiP1wiLCBcIu+8n++8n1wiXVxyXG4gIF07XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU3RhcnREYXlPZkdlbmdvOiBudW1iZXJbXVtdID0gW1xyXG4gICAgWyAgIDEsICAxLCAgMSwgICAxXSxcclxuICAgIFsxODY4LCAgOSwgIDgsIDI1Ml0sXHJcbiAgICBbMTkxMiwgIDYsIDMwLCAyMTJdLFxyXG4gICAgWzE5MjYsIDEyLCAyNSwgMzU5XSxcclxuICAgIFsxOTg5LCAgMSwgIDgsICAgOF0sXHJcbiAgICBbMjAxOSwgIDUsICAxLCAxMjFdLFxyXG4gICAgWzAsICAwLCAwLCAwXSwgLy8gcmVzZXJ2ZSBmb3IgZXh0cmEgZ2VuZ28geCAzXHJcbiAgICBbMCwgIDAsIDAsIDBdLFxyXG4gICAgWzAsICAwLCAwLCAwXVxyXG4gIF07XHJcblxyXG4gIC8vIC0tLS0gZ2VuZ28gKHRoZSBuYW1lIG9mIGFuIGVyYSkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIHByaXZhdGUgTWF4R2VuZ286IG51bWJlciA9IE1BWF9HRU5HTztcclxuXHJcbiAgc3RhdGljIGdldEluc3RhbmNlKCk6IFV0aWxEYXRlSnBuIHtcclxuICAgIGlmIChVdGlsRGF0ZUpwbi5faW5zdGFuY2UgPT09IG51bGwpIHtcclxuICAgICAgVXRpbERhdGVKcG4uX2luc3RhbmNlID0gbmV3IFV0aWxEYXRlSnBuKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gVXRpbERhdGVKcG4uX2luc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEFycmF5RG93KCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBVdGlsRGF0ZUpwbi5Kd2Vla1N0cjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRTdHJEb3coaW50SWR4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBpbnRJZHggPCAwIHx8IDcgPCBpbnRJZHg7XHJcbiAgICBpZiAoZmxhZykge1xyXG4gICAgICBpbnRJZHggPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFV0aWxEYXRlSnBuLkp3ZWVrU3RyW2ludElkeF07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY29udmVydFN0ck1vbnRoKG1vbnRoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBtb250aCA8IDAgfHwgMTIgPCBtb250aDtcclxuICAgIGlmIChmbGFnKSB7XHJcbiAgICAgIG1vbnRoID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiBVdGlsRGF0ZUpwbi5KbW9udGhTdHJbbW9udGhdO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENvbnZlcnQgYSB5ZWFyIChBLkQuKSBpbnRvIEphcGFuZXNlIHllYXIgb2YgYW4gZXJhXHJcbiAgLy8vICAgVGhpcyBtZXRob2QgaXMgbW9kZWxlZCBhZnRlciBcImRhdGVfanBuX3llYXJfb2ZzXCIgZnVuY3Rpb24gaW5cclxuICAvLy8gICBcIlxcbWdsb2NhbFxcanBuXFxqcG5kYXRlX2pwbi5jcHBcIi5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW50WWVhcjpcIj55ZWFyIChBLkQuKVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW50RG95OlwiPkRPWVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4geWVhciBvZiBhbiBlcmEuXHJcbiAgLy8vICAgaWYgZWl0aGVyIHBhcmFtIGlzIGludmFsaWQsIGl0IHJldHVybnMgMC5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIGRhdGVfanBuX3llYXJfb2ZzKGludFllYXI6IG51bWJlciwgaW50RG95OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgbGV0IHJlc3VsdDogbnVtYmVyO1xyXG4gICAgaWYgKGludFllYXIgPCAxIHx8IGludERveSA8IDEpIHtcclxuICAgICAgcmVzdWx0ID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgbnVtOiBudW1iZXIgPSB0aGlzLk1heEdlbmdvIC0gMTtcclxuICAgICAgd2hpbGUgKGludFllYXIgPCBVdGlsRGF0ZUpwbi5TdGFydERheU9mR2VuZ29bbnVtXVswXSkge1xyXG4gICAgICAgIG51bSA9IG51bSAtIDE7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGludFllYXIgPT09IFV0aWxEYXRlSnBuLlN0YXJ0RGF5T2ZHZW5nb1tudW1dWzBdICYmIGludERveSA8IFV0aWxEYXRlSnBuLlN0YXJ0RGF5T2ZHZW5nb1tudW1dWzNdKSB7XHJcbiAgICAgICAgbnVtID0gbnVtIC0gMTtcclxuICAgICAgfVxyXG4gICAgICByZXN1bHQgPSBpbnRZZWFyIC0gVXRpbERhdGVKcG4uU3RhcnREYXlPZkdlbmdvW251bV1bMF0gKyAxO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDb252ZXJ0IGEgeWVhciAoQS5ELikgaW50byBhIG5hbWUgb2YgYSBKYXBhbmVzZSBlcmFcclxuICAvLy8gICBUaGlzIG1ldGhvZCBpcyBtb2RlbGVkIGFmdGVyIFwiZGF0ZV9qcG5feXJfMl9hXCIgZnVuY3Rpb24gaW5cclxuICAvLy8gICBcIlxcbWdsb2NhbFxcanBuXFxqcG5kYXRlX2pwbi5jcHBcIi5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW50WWVhcjpcIj55ZWFyIChBLkQuKVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW50RG95OlwiPkRPWVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaXNLYW5qaTpcIj5yZXR1cm4gYSBmdWxsIG5hbWUgKHRydWUpIG9yIHRoZSBmaXJzdCBsZXR0ZXIgKGZhbHNlKS5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG5hbWUgb2YgYW4gZXJhXHJcbiAgLy8vICAgaWYgZWl0aGVyIHBhcmFtIGlzIGludmFsaWQsIGl0IHJldHVybnMgXCI/XCIuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBkYXRlX2pwbl95cl8yX2EoaW50WWVhcjogbnVtYmVyLCBpbnREb3k6IG51bWJlciwgaXNLYW5qaTogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBsZXQgbnVtOiBudW1iZXI7XHJcbiAgICBpZiAoaW50WWVhciA8IDEgfHwgaW50RG95IDwgMSkge1xyXG4gICAgICBudW0gPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIG51bSA9IHRoaXMuTWF4R2VuZ28gLSAxO1xyXG4gICAgICB3aGlsZSAoaW50WWVhciA8IFV0aWxEYXRlSnBuLlN0YXJ0RGF5T2ZHZW5nb1tudW1dWzBdKSB7XHJcbiAgICAgICAgbnVtID0gbnVtIC0gMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaW50WWVhciA9PT0gVXRpbERhdGVKcG4uU3RhcnREYXlPZkdlbmdvW251bV1bMF0gJiYgaW50RG95IDwgVXRpbERhdGVKcG4uU3RhcnREYXlPZkdlbmdvW251bV1bM10pIHtcclxuICAgICAgICBudW0gPSBudW0gLSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XHJcbiAgICBpZiAoaXNLYW5qaSkge1xyXG4gICAgICByZXN1bHQgPSBVdGlsRGF0ZUpwbi5HZW5nb1N0cltudW1dWzJdO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJlc3VsdCA9IFV0aWxEYXRlSnBuLkdlbmdvU3RyW251bV1bMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCB0aGUgZmlyc3QgeWVhciAoQS5ELikgb2YgYSBzcGVjaWZpZWQgSmFwYW5lc2UgZXJhXHJcbiAgLy8vICAgVGhpcyBtZXRob2QgaXMgbW9kZWxlZCBhZnRlciBcImRhdGVfanBuX3lyXzRfYVwiIGZ1bmN0aW9uIGluXHJcbiAgLy8vICAgXCJcXG1nbG9jYWxcXGpwblxcanBuZGF0ZV9qcG4uY3BwXCIuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInVjcF9zdHI6XCI+bmFtZSBvZiBhIHNwZWNpZmllZCBKYXBhbmVzZSBlcmFcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNfbGVuOlwiPmxlbmd0aCAodGhlIG51bWJlciBvZiBieXRlcykgb2YgdWNwX3N0clxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4geWVhciAoQS5ELilcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgZGF0ZV9qcG5feXJfNF9hKHVjcF9zdHI6IHN0cmluZywgc19sZW46IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBsZXQgaTogbnVtYmVyID0gdGhpcy5NYXhHZW5nbyAtIDE7XHJcbiAgICBpZiAoc19sZW4gPiAwKSB7XHJcbiAgICAgIGlmIChzX2xlbiA+IDEpIHtcclxuICAgICAgICB1Y3Bfc3RyID0gVXRpbFN0ckJ5dGVNb2RlLmxlZnRCKHVjcF9zdHIsIHNfbGVuKTtcclxuICAgICAgfVxyXG4gICAgICB3aGlsZSAoaSA+IDApIHtcclxuICAgICAgICBpZiAoc19sZW4gPT09IDEpIHtcclxuICAgICAgICAgIGlmICh1Y3Bfc3RyID09PSBVdGlsRGF0ZUpwbi5HZW5nb1N0cltpXVswXSB8fCB1Y3Bfc3RyID09PSBVdGlsRGF0ZUpwbi5HZW5nb1N0cltpXVsxXSkge1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoc19sZW4gPiAxKSB7XHJcbiAgICAgICAgICAgIGxldCB0ZXh0OiBzdHJpbmcgPSBVdGlsU3RyQnl0ZU1vZGUubGVmdEIoVXRpbERhdGVKcG4uR2VuZ29TdHJbaV1bMl0sIHNfbGVuKTtcclxuICAgICAgICAgICAgaWYgKHVjcF9zdHIgPT09IHRleHQpIHtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpID0gaSAtIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCByZXN1bHQ6IG51bWJlcjtcclxuICAgIGlmIChpID4gMCkge1xyXG4gICAgICByZXN1bHQgPSBVdGlsRGF0ZUpwbi5TdGFydERheU9mR2VuZ29baV1bMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgdGV4dDogc3RyaW5nID0gdWNwX3N0ci5zdWJzdHIoMCwgMSk7XHJcbiAgICAgIGlmICh0ZXh0ID09PSBcIiBcIiB8fCB0ZXh0ID09PSBcIj9cIikge1xyXG4gICAgICAgIHJlc3VsdCA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBHZXQgdGhlIG5hbWUgb2YgYW4gZXJhIGluIGRhdGUgc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0ckRhdGU6XCI+c3RyaW5nIG9mIGlucHV0IHN0ckRhdGVcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0clBpY3R1cmU6XCI+c3RyaW5nIG9mIHBpY3R1cmVcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImludFN0YXJ0UG9zOlwiPnN0YXJ0IHBvc2l0aW9uIHRvIHNlYXJjaFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbmFtZSBvZiBhbiBlcmFcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGdldEVyYU5hbWVTdHJJbkRhdGUoc3RyRGF0ZTogc3RyaW5nLCBzdHJQaWN0dXJlOiBzdHJpbmcsIGludFN0YXJ0UG9zOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gbnVsbDtcclxuICAgIGxldCBpbnRQaWNJZHhPZnM6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgaTogbnVtYmVyID0gaW50U3RhcnRQb3M7XHJcbiAgICB3aGlsZSAoaSArIGludFBpY0lkeE9mcyA8IHN0clBpY3R1cmUubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBpbnRMZXR0ZXJzOiBudW1iZXI7XHJcbiAgICAgIGlmIChzdHJQaWN0dXJlLmNoYXJDb2RlQXQoaSArIGludFBpY0lkeE9mcykgPT09IFBJQ0ludGVyZmFjZS5QSUNfSlkxKSB7XHJcbiAgICAgICAgaW50TGV0dGVycyA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHN0clBpY3R1cmUuY2hhckNvZGVBdChpICsgaW50UGljSWR4T2ZzKSA9PT0gUElDSW50ZXJmYWNlLlBJQ19KWTIpIHtcclxuICAgICAgICAgIGludExldHRlcnMgPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChzdHJQaWN0dXJlLmNoYXJDb2RlQXQoaSArIGludFBpY0lkeE9mcykgPT09IFBJQ0ludGVyZmFjZS5QSUNfSlk0KSB7XHJcbiAgICAgICAgICAgIGludExldHRlcnMgPSAyO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gSWYgXCJzdHJEYXRlXCIgY29udGFpbnMgREJDUywgdGhlIHBvc2l0aW9uIG9mIFwic3RyUGljdHVyZVwiIGhhcyB0byBza2lwIG5leHQgaW5kZXguXHJcbiAgICAgICAgICAgIGlmIChpIDwgc3RyRGF0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICBpZiAoIVV0aWxTdHJCeXRlTW9kZS5pc0hhbGZXaWR0aChzdHJEYXRlW2ldKSAmJiBVdGlsU3RyQnl0ZU1vZGUuaXNIYWxmV2lkdGgoc3RyUGljdHVyZVtpICsgaW50UGljSWR4T2ZzXSkpIHtcclxuICAgICAgICAgICAgICAgIGludFBpY0lkeE9mcyA9IGludFBpY0lkeE9mcyArIDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkgPSBpICsgMTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJlc3VsdCA9IHN0ckRhdGUuc3Vic3RyKGksIGludExldHRlcnMpO1xyXG4gICAgICBicmVhazsgLy8gZXhpdCBsb29wXHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIG9mIGFuIGVyYSBpbiBwaWN0dXJlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0clBpY3R1cmVcIj5zdHJpbmcgb2YgcGljdHVyZVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW50U3RhcnRQb3NcIj5zdGFydCBwb3NpdGlvbiB0byBzZWFyY2hcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGxlbmd0aCBvZiB0aGUgbmFtZSAodGhlIG51bWJlciBvZiBieXRlcylcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGdldEVyYU5hbWVMZW5JblBpY3R1cmUoc3RyUGljdHVyZTogc3RyaW5nLCBpbnRTdGFydFBvczogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCBpbnRMZXR0ZXJzOiBudW1iZXIgPSAwO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gaW50U3RhcnRQb3M7IGkgPCBzdHJQaWN0dXJlLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGlmIChzdHJQaWN0dXJlLmNoYXJDb2RlQXQoaSkgPT09IFBJQ0ludGVyZmFjZS5QSUNfSlkxKSB7XHJcbiAgICAgICAgaW50TGV0dGVycyA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHN0clBpY3R1cmUuY2hhckNvZGVBdChpKSA9PT0gUElDSW50ZXJmYWNlLlBJQ19KWTIpIHtcclxuICAgICAgICAgIGludExldHRlcnMgPSAyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChzdHJQaWN0dXJlLmNoYXJDb2RlQXQoaSkgPT09IFBJQ0ludGVyZmFjZS5QSUNfSlk0KSB7XHJcbiAgICAgICAgICAgIGludExldHRlcnMgPSA0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoaW50TGV0dGVycyA+IDApIHtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGludExldHRlcnM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IHRoZSBzdGFydCB5ZWFyIG9mIGFuIGVyYSBpbiBwaWN0dXJlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0ckRhdGU6XCI+c3RyaW5nIG9mIGlucHV0IHN0ckRhdGVcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0clBpY3R1cmU6XCI+c3RyaW5nIG9mIHBpY3R1cmVcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHN0YXJ0IHllYXIgb2YgdGhlIGVyYVxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgZ2V0U3RhcnRZZWFyT2ZFcmEoc3RyRGF0ZTogc3RyaW5nLCBzdHJQaWN0dXJlOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgbGV0IGVyYU5hbWVTdHJJbkRhdGU6IHN0cmluZyA9IFV0aWxEYXRlSnBuLmdldEVyYU5hbWVTdHJJbkRhdGUoc3RyRGF0ZSwgc3RyUGljdHVyZSwgMCk7XHJcbiAgICBsZXQgcmVzdWx0OiBudW1iZXI7XHJcbiAgICBpZiAoZXJhTmFtZVN0ckluRGF0ZSA9PT0gbnVsbCkge1xyXG4gICAgICByZXN1bHQgPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBlcmFOYW1lTGVuSW5QaWN0dXJlOiBudW1iZXIgPSBVdGlsRGF0ZUpwbi5nZXRFcmFOYW1lTGVuSW5QaWN0dXJlKHN0clBpY3R1cmUsIDApO1xyXG4gICAgICBpZiAoZXJhTmFtZUxlbkluUGljdHVyZSA9PT0gMCkge1xyXG4gICAgICAgIHJlc3VsdCA9IDA7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IGludFN0YXJ0WWVhck9mRXJhOiBudW1iZXIgPSB0aGlzLmRhdGVfanBuX3lyXzRfYShlcmFOYW1lU3RySW5EYXRlLCBlcmFOYW1lTGVuSW5QaWN0dXJlKTtcclxuICAgICAgICByZXN1bHQgPSBpbnRTdGFydFllYXJPZkVyYTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gQWRkIGV4dHJhIEdlbmdvIGRhdGEgaW50byB0aGUgR2VuZ28gdGFibGVzPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0ckV4dHJhR2VuZ286XCI+XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgYWRkRXh0cmFHZW5nbyhzdHJFeHRyYUdlbmdvOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIGUuZy4gc3RyRXh0cmFHZW5nbyA9IFwiMjAxMi8wNC8wMSwwOTIsQWFBQkNEOzIwMTMvMDQvMDEsMDkxLFd3V1hZWjtcIlxyXG4gICAgbGV0IHN0ckdlbmdvSW5mbzogc3RyaW5nW10gPSBzdHJFeHRyYUdlbmdvLnNwbGl0KCc7Jyk7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc3RyR2VuZ29JbmZvLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGlmIChzdHJHZW5nb0luZm9baV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCBzdHJUb2s6IHN0cmluZ1tdID0gc3RyR2VuZ29JbmZvW2ldLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgaWYgKHN0clRvay5sZW5ndGggPT09IDMgJiYgc3RyVG9rWzBdLmxlbmd0aCA+IDAgJiYgc3RyVG9rWzFdLmxlbmd0aCA+IDAgJiYgc3RyVG9rWzJdLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGxldCBzdHJEYXRlOiBzdHJpbmdbXSA9IHN0clRva1swXS5zcGxpdCgnLycpO1xyXG4gICAgICAgICAgaWYgKHN0ckRhdGUubGVuZ3RoID09PSAzICYmIHN0ckRhdGVbMF0ubGVuZ3RoID4gMCAmJiBzdHJEYXRlWzFdLmxlbmd0aCA+IDAgJiYgc3RyRGF0ZVsyXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIFV0aWxEYXRlSnBuLkdlbmdvU3RyW01BWF9HRU5HTyArIGldWzBdID0gc3RyVG9rWzJdLnN1YnN0cigwLCAxKTsgLy8gc3ltYm9sIG5hbWUgKHVwcGVyIGNhc2UpOiBBXHJcbiAgICAgICAgICAgIFV0aWxEYXRlSnBuLkdlbmdvU3RyW01BWF9HRU5HTyArIGldWzFdID0gc3RyVG9rWzJdLnN1YnN0cigxLCAxKTsgLy8gc3ltYm9sIG5hbWUgKGxvd2VyIGNhc2UpOiBhXHJcbiAgICAgICAgICAgIFV0aWxEYXRlSnBuLkdlbmdvU3RyW01BWF9HRU5HTyArIGldWzJdID0gc3RyVG9rWzJdLnN1YnN0cigyKTsgICAgLy8gZ2VuZ28gbmFtZTogQUJDRFxyXG5cclxuICAgICAgICAgICAgVXRpbERhdGVKcG4uU3RhcnREYXlPZkdlbmdvW01BWF9HRU5HTyArIGldWzBdID0gTk51bWJlci5QYXJzZShzdHJEYXRlWzBdKTsgICAgLy8gc3RhcnQgeWVhcjogMjAxMlxyXG4gICAgICAgICAgICBVdGlsRGF0ZUpwbi5TdGFydERheU9mR2VuZ29bTUFYX0dFTkdPICsgaV1bMV0gPSBOTnVtYmVyLlBhcnNlKHN0ckRhdGVbMV0pOyAgICAvLyBzdGFydCBtb250aDogNFxyXG4gICAgICAgICAgICBVdGlsRGF0ZUpwbi5TdGFydERheU9mR2VuZ29bTUFYX0dFTkdPICsgaV1bMl0gPSBOTnVtYmVyLlBhcnNlKHN0ckRhdGVbMl0pOyAgICAvLyBzdGFydCBkYXk6IDFcclxuICAgICAgICAgICAgVXRpbERhdGVKcG4uU3RhcnREYXlPZkdlbmdvW01BWF9HRU5HTyArIGldWzNdID0gTk51bWJlci5QYXJzZShzdHJUb2tbMV0pOyAgICAgLy8gZGF5cyBzaW5jZSBKYW51YXJ5IDE6IDkyXHJcbiAgICAgICAgICAgIHRoaXMuTWF4R2VuZ28rKztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,13 +0,0 @@
1
- export class UtilImeJpn {
2
- static IME_ZEN_HIRAGANA_ROMAN = 1;
3
- static IME_FORCE_OFF = 15;
4
- static IME_DISABLE = 10;
5
- ImeAutoOff = false;
6
- StrImeRead = null;
7
- isValid(imeMode) {
8
- return (0 <= imeMode && imeMode <= 9) || imeMode === 15 || imeMode === 10;
9
- }
10
- constructor() {
11
- }
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbEltZUpwbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzL3NyYy9VdGlsSW1lSnBuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sT0FBTyxVQUFVO0lBRXJCLE1BQU0sQ0FBQyxzQkFBc0IsR0FBVyxDQUFDLENBQUM7SUFDMUMsTUFBTSxDQUFDLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFFbEMsTUFBTSxDQUFDLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDaEMsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUM1QixVQUFVLEdBQVcsSUFBSSxDQUFDO0lBUTFCLE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksT0FBTyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxPQUFPLEtBQUssRUFBRSxJQUFJLE9BQU8sS0FBSyxFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUVEO0lBRUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8c3VtbWFyeT5KUE46IElNRSBzdXBwb3J0XHJcbi8vLyBVdGlsaXR5IENsYXNzIGZvciBJbnB1dCBNZXRob2QgRWRpdG9yXHJcbi8vLyA8L3N1bW1hcnk+XHJcbi8vLyA8YXV0aG9yPiAgVG9zaGlybyBOYWtheW9zaGkgKE1TSilcclxuLy8vIDwvYXV0aG9yPlxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBVdGlsSW1lSnBuIHtcclxuXHJcbiAgc3RhdGljIElNRV9aRU5fSElSQUdBTkFfUk9NQU46IG51bWJlciA9IDE7XHJcbiAgc3RhdGljIElNRV9GT1JDRV9PRkY6IG51bWJlciA9IDE1OyAvLyBpZiAoSW1lTW9kZSBwcm9wZXJ0eSA9PSAwIGFuZCAocGljdHVyZSBoYXMgSzAgb3IgUElDX1MpKSBvclxyXG4gIC8vIChhdHRyaWJ1dGUgaXMgbm90IGFscGhhLCB1bmljb2RlLCBub3IgYmxvYiksIHNldCBJTUVfRk9SQ0VfT0ZGLlxyXG4gIHN0YXRpYyBJTUVfRElTQUJMRTogbnVtYmVyID0gMTA7ICAgLy8gdG8gY29tcGxldGVseSBkaXNhYmxlIElNRSAoZXZlbiBub3QgYWxsb3dpbmcgdG8gY2hhbmdlIHRoZSBtb2RlKVxyXG4gIEltZUF1dG9PZmY6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTdHJJbWVSZWFkOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGNoZWNrIGlmIHRoZSBJTUUgbW9kZSBpcyB3aXRoaW4gdmFsaWQgcmFuZ2VcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImltZU1vZGVcIj4oSU1FIG1vZGUgaW4gTWFnaWMpXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBib29sXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBpc1ZhbGlkKGltZU1vZGU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICgwIDw9IGltZU1vZGUgJiYgaW1lTW9kZSA8PSA5KSB8fCBpbWVNb2RlID09PSAxNSB8fCBpbWVNb2RlID09PSAxMDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG5cclxuICB9XHJcbn1cclxuIl19