skittles 0.1.5 → 0.1.8

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/lib/index.js CHANGED
@@ -13,6 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.tx = exports.msg = exports.chain = exports.block = exports.self = void 0;
16
17
  // import chalk from "chalk";
17
18
  // import clear from "clear";
18
19
  // import figlet from "figlet";
@@ -23,6 +24,26 @@ const get_bytecode_1 = __importDefault(require("./bytecode/get-bytecode"));
23
24
  const file_helper_1 = require("./helpers/file-helper");
24
25
  const get_skittles_class_1 = __importDefault(require("./skittles-class/get-skittles-class"));
25
26
  const get_yul_1 = __importDefault(require("./yul/get-yul"));
27
+ const core_types_1 = require("./types/core-types");
28
+ Object.defineProperty(exports, "self", { enumerable: true, get: function () { return core_types_1.self; } });
29
+ Object.defineProperty(exports, "block", { enumerable: true, get: function () { return core_types_1.block; } });
30
+ Object.defineProperty(exports, "chain", { enumerable: true, get: function () { return core_types_1.chain; } });
31
+ Object.defineProperty(exports, "msg", { enumerable: true, get: function () { return core_types_1.msg; } });
32
+ Object.defineProperty(exports, "tx", { enumerable: true, get: function () { return core_types_1.tx; } });
33
+ const skittlesCompile = () => __awaiter(void 0, void 0, void 0, function* () {
34
+ const files = (0, file_helper_1.getAllContractFiles)();
35
+ const promises = files.map((file) => __awaiter(void 0, void 0, void 0, function* () {
36
+ const skittlesClass = (0, get_skittles_class_1.default)(file);
37
+ const abi = (0, get_abi_1.default)(skittlesClass);
38
+ const { name } = skittlesClass;
39
+ (0, file_helper_1.writeFile)("abi", name, JSON.stringify(abi, null, 2));
40
+ const yul = (0, get_yul_1.default)(skittlesClass, abi);
41
+ (0, file_helper_1.writeFile)("yul", name, yul);
42
+ const bytecode = (0, get_bytecode_1.default)(name, yul);
43
+ (0, file_helper_1.writeFile)("bytecode", name, bytecode);
44
+ }));
45
+ yield Promise.all(promises);
46
+ });
26
47
  // clear();
27
48
  // console.log(
28
49
  // chalk.red(figlet.textSync("skittles-cli", { horizontalLayout: "full" }))
@@ -45,17 +66,3 @@ commander_1.program
45
66
  yield skittlesCompile();
46
67
  }));
47
68
  commander_1.program.parse();
48
- const skittlesCompile = () => __awaiter(void 0, void 0, void 0, function* () {
49
- const files = (0, file_helper_1.getAllContractFiles)();
50
- const promises = files.map((file) => __awaiter(void 0, void 0, void 0, function* () {
51
- const skittlesClass = (0, get_skittles_class_1.default)(file);
52
- const abi = (0, get_abi_1.default)(skittlesClass);
53
- const { name } = skittlesClass;
54
- (0, file_helper_1.writeFile)("abi", name, JSON.stringify(abi, null, 2));
55
- const yul = (0, get_yul_1.default)(skittlesClass, abi);
56
- (0, file_helper_1.writeFile)("yul", name, yul);
57
- const bytecode = (0, get_bytecode_1.default)(name, yul);
58
- (0, file_helper_1.writeFile)("bytecode", name, bytecode);
59
- }));
60
- yield Promise.all(promises);
61
- });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skittles",
3
- "version": "0.1.5",
3
+ "version": "0.1.8",
4
4
  "description": "TypeScript Smart Contract Language for the EVM",
5
5
  "main": "./lib/index.js",
6
6
  "bin": {
@@ -14,7 +14,7 @@
14
14
  "refresh": "rm -rf ./node_modules ./package-lock.json && yarn",
15
15
  "local": "sudo yarn global add && skittles",
16
16
  "test": "hardhat test",
17
- "prepublishOnly": "yarn run build && yarn run test"
17
+ "prepublishOnly": "yarn run build && yarn run test && node ./lib/index.js compile"
18
18
  },
19
19
  "repository": {
20
20
  "type": "git",
package/TODO.md DELETED
@@ -1,21 +0,0 @@
1
- ===== Peer Review ====
2
-
3
- - add init function
4
- - wrap all hardhat functions
5
- - add readme
6
- - add normal repo things
7
- - Consider making types default exports (like `string` and `number` are)
8
-
9
- ==== Beta ready ====
10
-
11
- - Add support for `else` conditions for `if` statements (need to use switches)
12
- - Add support for events
13
- - Add immutable (readonly) setting for evaluated values using `setimmutable`
14
- - Consider how we handle large numbers (BigNumber or something?)
15
- - automatic mapping views
16
- - Add config for things like running optimizer
17
-
18
- ==== FORMATTED ====
19
-
20
- - Remove redundant stores for `readonly` values in the constructor
21
- - Change to getting function signatures with this: https://github.com/FuelLabs/yulp/blob/620d04acb060a7a817e2cfc6da4c9b4d9c7fcef0/src/yulplus.ne#L40
@@ -1,165 +0,0 @@
1
- [
2
- {
3
- "type": "constructor",
4
- "inputs": [
5
- {
6
- "name": "mintAmount_",
7
- "type": "uint256"
8
- }
9
- ],
10
- "stateMutability": "nonpayable"
11
- },
12
- {
13
- "type": "function",
14
- "name": "decimals",
15
- "inputs": [],
16
- "outputs": [
17
- {
18
- "name": "",
19
- "type": "uint256"
20
- }
21
- ],
22
- "stateMutability": "view"
23
- },
24
- {
25
- "type": "function",
26
- "name": "symbol",
27
- "inputs": [],
28
- "outputs": [
29
- {
30
- "name": "",
31
- "type": "string"
32
- }
33
- ],
34
- "stateMutability": "view"
35
- },
36
- {
37
- "type": "function",
38
- "name": "name",
39
- "inputs": [],
40
- "outputs": [
41
- {
42
- "name": "",
43
- "type": "string"
44
- }
45
- ],
46
- "stateMutability": "view"
47
- },
48
- {
49
- "type": "function",
50
- "name": "totalSupply",
51
- "inputs": [],
52
- "outputs": [
53
- {
54
- "name": "",
55
- "type": "uint256"
56
- }
57
- ],
58
- "stateMutability": "view"
59
- },
60
- {
61
- "type": "function",
62
- "name": "balanceOf",
63
- "inputs": [
64
- {
65
- "name": "address",
66
- "type": "address"
67
- }
68
- ],
69
- "outputs": [
70
- {
71
- "name": "",
72
- "type": "uint256"
73
- }
74
- ],
75
- "stateMutability": "view"
76
- },
77
- {
78
- "type": "function",
79
- "name": "allowance",
80
- "inputs": [
81
- {
82
- "name": "owner",
83
- "type": "address"
84
- },
85
- {
86
- "name": "spender",
87
- "type": "address"
88
- }
89
- ],
90
- "outputs": [
91
- {
92
- "name": "",
93
- "type": "uint256"
94
- }
95
- ],
96
- "stateMutability": "view"
97
- },
98
- {
99
- "type": "function",
100
- "name": "approve",
101
- "inputs": [
102
- {
103
- "name": "spender",
104
- "type": "address"
105
- },
106
- {
107
- "name": "amount",
108
- "type": "uint256"
109
- }
110
- ],
111
- "outputs": [
112
- {
113
- "name": "",
114
- "type": "bool"
115
- }
116
- ],
117
- "stateMutability": "payable"
118
- },
119
- {
120
- "type": "function",
121
- "name": "transfer",
122
- "inputs": [
123
- {
124
- "name": "to",
125
- "type": "address"
126
- },
127
- {
128
- "name": "amount",
129
- "type": "uint256"
130
- }
131
- ],
132
- "outputs": [
133
- {
134
- "name": "",
135
- "type": "bool"
136
- }
137
- ],
138
- "stateMutability": "payable"
139
- },
140
- {
141
- "type": "function",
142
- "name": "transferFrom",
143
- "inputs": [
144
- {
145
- "name": "from",
146
- "type": "address"
147
- },
148
- {
149
- "name": "to",
150
- "type": "address"
151
- },
152
- {
153
- "name": "amount",
154
- "type": "uint256"
155
- }
156
- ],
157
- "outputs": [
158
- {
159
- "name": "",
160
- "type": "bool"
161
- }
162
- ],
163
- "stateMutability": "payable"
164
- }
165
- ]
@@ -1,433 +0,0 @@
1
- [
2
- {
3
- "type": "constructor",
4
- "inputs": [
5
- {
6
- "name": "init_",
7
- "type": "uint256"
8
- }
9
- ],
10
- "stateMutability": "nonpayable"
11
- },
12
- {
13
- "type": "function",
14
- "name": "balance",
15
- "inputs": [],
16
- "outputs": [
17
- {
18
- "name": "",
19
- "type": "uint256"
20
- }
21
- ],
22
- "stateMutability": "view"
23
- },
24
- {
25
- "type": "function",
26
- "name": "decimals",
27
- "inputs": [],
28
- "outputs": [
29
- {
30
- "name": "",
31
- "type": "uint256"
32
- }
33
- ],
34
- "stateMutability": "view"
35
- },
36
- {
37
- "type": "function",
38
- "name": "age",
39
- "inputs": [],
40
- "outputs": [
41
- {
42
- "name": "",
43
- "type": "uint256"
44
- }
45
- ],
46
- "stateMutability": "view"
47
- },
48
- {
49
- "type": "function",
50
- "name": "name",
51
- "inputs": [],
52
- "outputs": [
53
- {
54
- "name": "",
55
- "type": "string"
56
- }
57
- ],
58
- "stateMutability": "view"
59
- },
60
- {
61
- "type": "function",
62
- "name": "init",
63
- "inputs": [],
64
- "outputs": [
65
- {
66
- "name": "",
67
- "type": "uint256"
68
- }
69
- ],
70
- "stateMutability": "view"
71
- },
72
- {
73
- "type": "function",
74
- "name": "getBalanceTimesTwo",
75
- "inputs": [],
76
- "outputs": [
77
- {
78
- "name": "",
79
- "type": "uint256"
80
- }
81
- ],
82
- "stateMutability": "view"
83
- },
84
- {
85
- "type": "function",
86
- "name": "getPrivateBalance",
87
- "inputs": [],
88
- "outputs": [
89
- {
90
- "name": "",
91
- "type": "uint256"
92
- }
93
- ],
94
- "stateMutability": "view"
95
- },
96
- {
97
- "type": "function",
98
- "name": "setApproval",
99
- "inputs": [
100
- {
101
- "name": "spender",
102
- "type": "address"
103
- },
104
- {
105
- "name": "amount",
106
- "type": "uint256"
107
- }
108
- ],
109
- "outputs": [
110
- {
111
- "name": "",
112
- "type": "bool"
113
- }
114
- ],
115
- "stateMutability": "payable"
116
- },
117
- {
118
- "type": "function",
119
- "name": "getApproval",
120
- "inputs": [
121
- {
122
- "name": "owner",
123
- "type": "address"
124
- },
125
- {
126
- "name": "spender",
127
- "type": "address"
128
- }
129
- ],
130
- "outputs": [
131
- {
132
- "name": "",
133
- "type": "uint256"
134
- }
135
- ],
136
- "stateMutability": "view"
137
- },
138
- {
139
- "type": "function",
140
- "name": "getUsersBalance",
141
- "inputs": [
142
- {
143
- "name": "user",
144
- "type": "address"
145
- }
146
- ],
147
- "outputs": [
148
- {
149
- "name": "",
150
- "type": "uint256"
151
- }
152
- ],
153
- "stateMutability": "view"
154
- },
155
- {
156
- "type": "function",
157
- "name": "addBalance",
158
- "inputs": [
159
- {
160
- "name": "value",
161
- "type": "uint256"
162
- }
163
- ],
164
- "outputs": [
165
- {
166
- "name": "",
167
- "type": "void"
168
- }
169
- ],
170
- "stateMutability": "payable"
171
- },
172
- {
173
- "type": "function",
174
- "name": "getCoinbase",
175
- "inputs": [],
176
- "outputs": [
177
- {
178
- "name": "",
179
- "type": "address"
180
- }
181
- ],
182
- "stateMutability": "view"
183
- },
184
- {
185
- "type": "function",
186
- "name": "getDifficulty",
187
- "inputs": [],
188
- "outputs": [
189
- {
190
- "name": "",
191
- "type": "uint256"
192
- }
193
- ],
194
- "stateMutability": "view"
195
- },
196
- {
197
- "type": "function",
198
- "name": "getBlock",
199
- "inputs": [],
200
- "outputs": [
201
- {
202
- "name": "",
203
- "type": "uint256"
204
- }
205
- ],
206
- "stateMutability": "view"
207
- },
208
- {
209
- "type": "function",
210
- "name": "getTimestamp",
211
- "inputs": [],
212
- "outputs": [
213
- {
214
- "name": "",
215
- "type": "uint256"
216
- }
217
- ],
218
- "stateMutability": "view"
219
- },
220
- {
221
- "type": "function",
222
- "name": "getChainId",
223
- "inputs": [],
224
- "outputs": [
225
- {
226
- "name": "",
227
- "type": "uint256"
228
- }
229
- ],
230
- "stateMutability": "view"
231
- },
232
- {
233
- "type": "function",
234
- "name": "getMsgValue",
235
- "inputs": [],
236
- "outputs": [
237
- {
238
- "name": "",
239
- "type": "uint256"
240
- }
241
- ],
242
- "stateMutability": "view"
243
- },
244
- {
245
- "type": "function",
246
- "name": "getTxGasPrice",
247
- "inputs": [],
248
- "outputs": [
249
- {
250
- "name": "",
251
- "type": "uint256"
252
- }
253
- ],
254
- "stateMutability": "view"
255
- },
256
- {
257
- "type": "function",
258
- "name": "getTxOrigin",
259
- "inputs": [],
260
- "outputs": [
261
- {
262
- "name": "",
263
- "type": "address"
264
- }
265
- ],
266
- "stateMutability": "view"
267
- },
268
- {
269
- "type": "function",
270
- "name": "getMathsResult",
271
- "inputs": [],
272
- "outputs": [
273
- {
274
- "name": "",
275
- "type": "uint256"
276
- }
277
- ],
278
- "stateMutability": "view"
279
- },
280
- {
281
- "type": "function",
282
- "name": "getNotEqualToTwo",
283
- "inputs": [
284
- {
285
- "name": "value",
286
- "type": "uint256"
287
- }
288
- ],
289
- "outputs": [
290
- {
291
- "name": "",
292
- "type": "bool"
293
- }
294
- ],
295
- "stateMutability": "view"
296
- },
297
- {
298
- "type": "function",
299
- "name": "getEqualToSeven",
300
- "inputs": [
301
- {
302
- "name": "value",
303
- "type": "uint256"
304
- }
305
- ],
306
- "outputs": [
307
- {
308
- "name": "",
309
- "type": "bool"
310
- }
311
- ],
312
- "stateMutability": "view"
313
- },
314
- {
315
- "type": "function",
316
- "name": "getGreaterThanFour",
317
- "inputs": [
318
- {
319
- "name": "value",
320
- "type": "uint256"
321
- }
322
- ],
323
- "outputs": [
324
- {
325
- "name": "",
326
- "type": "bool"
327
- }
328
- ],
329
- "stateMutability": "view"
330
- },
331
- {
332
- "type": "function",
333
- "name": "getLessThan9",
334
- "inputs": [
335
- {
336
- "name": "value",
337
- "type": "uint256"
338
- }
339
- ],
340
- "outputs": [
341
- {
342
- "name": "",
343
- "type": "bool"
344
- }
345
- ],
346
- "stateMutability": "view"
347
- },
348
- {
349
- "type": "function",
350
- "name": "getGreaterThanOrEqualToFour",
351
- "inputs": [
352
- {
353
- "name": "value",
354
- "type": "uint256"
355
- }
356
- ],
357
- "outputs": [
358
- {
359
- "name": "",
360
- "type": "bool"
361
- }
362
- ],
363
- "stateMutability": "view"
364
- },
365
- {
366
- "type": "function",
367
- "name": "getLessThanOrEqualTo9",
368
- "inputs": [
369
- {
370
- "name": "value",
371
- "type": "uint256"
372
- }
373
- ],
374
- "outputs": [
375
- {
376
- "name": "",
377
- "type": "bool"
378
- }
379
- ],
380
- "stateMutability": "view"
381
- },
382
- {
383
- "type": "function",
384
- "name": "getAnd",
385
- "inputs": [
386
- {
387
- "name": "value",
388
- "type": "bool"
389
- }
390
- ],
391
- "outputs": [
392
- {
393
- "name": "",
394
- "type": "bool"
395
- }
396
- ],
397
- "stateMutability": "view"
398
- },
399
- {
400
- "type": "function",
401
- "name": "getOr",
402
- "inputs": [
403
- {
404
- "name": "value",
405
- "type": "bool"
406
- }
407
- ],
408
- "outputs": [
409
- {
410
- "name": "",
411
- "type": "bool"
412
- }
413
- ],
414
- "stateMutability": "view"
415
- },
416
- {
417
- "type": "function",
418
- "name": "getNot",
419
- "inputs": [
420
- {
421
- "name": "value",
422
- "type": "bool"
423
- }
424
- ],
425
- "outputs": [
426
- {
427
- "name": "",
428
- "type": "bool"
429
- }
430
- ],
431
- "stateMutability": "view"
432
- }
433
- ]
@@ -1 +0,0 @@
1
- 61058a8038038082600039600051610017813361008f565b6100208161009e565b60147f54455354204552433230000000000000000000000000000000000000000000000160025560087f54455354000000000000000000000000000000000000000000000000000000000160015560126000556100ab565b600081611000019050919050565b60006003905090565b8161009982610078565b555050565b806100a7610086565b5550565b6104ce6100bc6000396104ce6000f3fe6100076102cb565b6323b872dd811461006f5763a9059cbb81146100a25763095ea7b381146100cb5763dd62ed3e81146100f4576370a08231811461011d576318160ddd811461013c576306fdde038114610151576395d89b4181146101665763313ce567811461017b57600080fd5b61009d61009861007f6002610328565b61008960016102f4565b61009360006102f4565b610207565b610371565b61018c565b6100c66100c16100b26001610328565b6100bc60006102f4565b610277565b610371565b61018c565b6100ef6100ea6100db6001610328565b6100e560006102f4565b61028e565b610371565b61018c565b61011861011361010460016102f4565b61010e60006102f4565b6102a5565b61034b565b61018c565b61013761013261012d60006102f4565b6102b9565b61034b565b61018c565b61014c610147610434565b61034b565b61018c565b61016161015c610444565b610355565b61018c565b610176610171610454565b610355565b61018c565b61018b610186610464565b61034b565b5b506104cd565b8261019c82610412565b10156101cc576101cb7f7472616e7366657220616d6f756e7420657863656564732062616c616e6365006104a5565b5b6101e76101e1846101dc85610412565b61046d565b83610425565b6102026101fc846101f784610412565b61048b565b82610425565b505050565b60008361021433846103ec565b1015610244576102437f616d6f756e74206578636565647320616c6c6f77616e636500000000000000006104a5565b5b61024f848484610192565b61026c6102658561026033866103ec565b61048b565b3384610401565b600190509392505050565b6000610284838333610192565b6001905092915050565b600061029b838333610401565b6001905092915050565b60006102b183836103ec565b905092915050565b60006102c482610412565b9050919050565b60007c010000000000000000000000000000000000000000000000000000000060003504905090565b60006102ff82610328565b905073ffffffffffffffffffffffffffffffffffffffff1981161561032357600080fd5b919050565b6000602082026004016020810136101561034157600080fd5b8035915050919050565b8060005260206000f35b61035e816104af565b6020600052806020528160405260606000f35b8060018114610387576000811461039657600080fd5b610391600161034b565b6103a1565b6103a0600061034b565b5b5050565b60008161100001905080600052826000526040600020905092915050565b600081611000019050919050565b60006003905090565b60006002905090565b60006001905090565b60006103f883836103a5565b54905092915050565b8261040c83836103a5565b55505050565b600061041d826103c3565b549050919050565b8161042f826103c3565b555050565b600061043e6103d1565b54905090565b600061044e6103da565b54905090565b600061045e6103e3565b54905090565b60006012905090565b60008282019050828110828210171561048557600080fd5b92915050565b600082820390508183111561049f57600080fd5b92915050565b8060005260206000fd5b600060028204905060018216806104c757607f821691505b50919050565b
@@ -1 +0,0 @@
1
- 61088a803803808260003960005161001681610080565b6100208133610071565b60167f48656c6c6f20576f726c6400000000000000000000000000000000000000000001600455601260025560018055606f60005561008d565b600081611000019050919050565b60006005905090565b8161007b8261005a565b555050565b80610089610068565b5550565b6107ec61009e6000396107ec6000f3fe6100076105ad565b63cd5feab6811461014a5763a9a5d5eb811461016957633271356281146101885763470f0c5881146101a757632268a16081146101c6576397f7236881146101e557637f5f10d4811461020457639e785eca811461022357638fa25b37811461024257632404c15381146102615763b8077e2881146102765763a38aa291811461028b5763a17042cc81146102a057633408e47081146102b55763188ec35681146102ca57632e97766d81146102df5763b6baffe381146102f45763d1a82a9d81146103095763d91921ed811461031e5763cd6fc91d8114610335576389fcd099811461035457631417cef8811461037d576338f6f16381146103a65762da7d0881146103bb5763e1c7392a81146103d0576306fdde0381146103e55763262a9dff81146103fa5763313ce567811461040f5763b69ef8a8811461042457600080fd5b61016461015f61015a600061060a565b61043b565b610653565b610435565b61018361017e610179600061060a565b610446565b610653565b610435565b6101a261019d610198600061060a565b610452565b610653565b610435565b6101c16101bc6101b7600061060a565b61045f565b610653565b610435565b6101e06101db6101d6600061060a565b610473565b610653565b610435565b6101ff6101fa6101f5600061060a565b610487565b610653565b610435565b61021e610219610214600061060a565b610494565b610653565b610435565b61023d610238610233600061060a565b6104a1565b610653565b610435565b61025c610257610252600061060a565b6104ae565b610653565b610435565b61027161026c6104c2565b61062d565b610435565b6102866102816104e7565b61062d565b610435565b61029b6102966104ef565b61062d565b610435565b6102b06102ab6104f7565b61062d565b610435565b6102c56102c06104ff565b61062d565b610435565b6102da6102d5610507565b61062d565b610435565b6102ef6102ea61050f565b61062d565b610435565b6103046102ff610517565b61062d565b610435565b61031961031461051f565b61062d565b610435565b61033061032b600061060a565b610527565b610435565b61034f61034a61034560006105d6565b610533565b61062d565b610435565b61037861037361036460016105d6565b61036e60006105d6565b610545565b61062d565b610435565b6103a161039c61038d600161060a565b61039760006105d6565b610559565b610653565b610435565b6103b66103b161058c565b61062d565b610435565b6103cb6103c661059b565b61062d565b610435565b6103e06103db61070c565b61062d565b610435565b6103f56103f061071c565b610637565b610435565b61040a61040561072c565b61062d565b610435565b61041f61041a610735565b61062d565b610435565b61043461042f61073e565b61062d565b5b506107eb565b600081159050919050565b60008082179050919050565b6000600182169050919050565b600061046c6009836107b1565b9050919050565b60006104806004836107a3565b9050919050565b6000600982109050919050565b6000600482119050919050565b6000816007149050919050565b60006104bb8260026107bf565b9050919050565b60006104e2600760068060040204066104dd6003600261076b565b610789565b905090565b600032905090565b60003a905090565b600034905090565b600046905090565b600042905090565b600043905090565b600044905090565b600041905090565b61053081610570565b50565b600061053e826106f9565b9050919050565b600061055183836106d3565b905092915050565b60006105668383336106e8565b6001905092915050565b6105896105848261057f61073e565b61076b565b61074e565b50565b600061059661075b565b905090565b600060026105a761073e565b02905090565b60007c010000000000000000000000000000000000000000000000000000000060003504905090565b60006105e18261060a565b905073ffffffffffffffffffffffffffffffffffffffff1981161561060557600080fd5b919050565b6000602082026004016020810136101561062357600080fd5b8035915050919050565b8060005260206000f35b610640816107cd565b6020600052806020528160405260606000f35b8060018114610669576000811461067857600080fd5b610673600161062d565b610683565b610682600061062d565b5b5050565b60008161100001905080600052826000526040600020905092915050565b600081611000019050919050565b60006005905090565b60006004905090565b60006001905090565b600090565b60006106df8383610687565b54905092915050565b826106f38383610687565b55505050565b6000610704826106a5565b549050919050565b60006107166106b3565b54905090565b60006107266106bc565b54905090565b6000602e905090565b60006012905090565b60006107486106c5565b54905090565b806107576106c5565b5550565b60006107656106ce565b54905090565b60008282019050828110828210171561078357600080fd5b92915050565b600082820390508183111561079d57600080fd5b92915050565b600082821015905092915050565b600082821115905092915050565b600082821415905092915050565b600060028204905060018216806107e557607f821691505b50919050565b