@lukso/universalprofile-contracts 0.15.0-rc.1 → 0.15.0-rc.5

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.
@@ -0,0 +1,676 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "UniversalProfile",
4
+ "sourceName": "contracts/UniversalProfile.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "initialOwner",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "payable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [],
19
+ "name": "ERC725X_ContractDeploymentFailed",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "inputs": [],
24
+ "name": "ERC725X_CreateOperationsRequireEmptyRecipientAddress",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [],
29
+ "name": "ERC725X_ExecuteParametersEmptyArray",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "ERC725X_ExecuteParametersLengthMismatch",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "inputs": [
39
+ {
40
+ "internalType": "uint256",
41
+ "name": "balance",
42
+ "type": "uint256"
43
+ },
44
+ {
45
+ "internalType": "uint256",
46
+ "name": "value",
47
+ "type": "uint256"
48
+ }
49
+ ],
50
+ "name": "ERC725X_InsufficientBalance",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [],
55
+ "name": "ERC725X_MsgValueDisallowedInDelegateCall",
56
+ "type": "error"
57
+ },
58
+ {
59
+ "inputs": [],
60
+ "name": "ERC725X_MsgValueDisallowedInStaticCall",
61
+ "type": "error"
62
+ },
63
+ {
64
+ "inputs": [],
65
+ "name": "ERC725X_NoContractBytecodeProvided",
66
+ "type": "error"
67
+ },
68
+ {
69
+ "inputs": [
70
+ {
71
+ "internalType": "uint256",
72
+ "name": "operationTypeProvided",
73
+ "type": "uint256"
74
+ }
75
+ ],
76
+ "name": "ERC725X_UnknownOperationType",
77
+ "type": "error"
78
+ },
79
+ {
80
+ "inputs": [],
81
+ "name": "ERC725Y_DataKeysValuesEmptyArray",
82
+ "type": "error"
83
+ },
84
+ {
85
+ "inputs": [],
86
+ "name": "ERC725Y_DataKeysValuesLengthMismatch",
87
+ "type": "error"
88
+ },
89
+ {
90
+ "inputs": [
91
+ {
92
+ "internalType": "address",
93
+ "name": "caller",
94
+ "type": "address"
95
+ }
96
+ ],
97
+ "name": "LSP14CallerNotPendingOwner",
98
+ "type": "error"
99
+ },
100
+ {
101
+ "inputs": [],
102
+ "name": "LSP14CannotTransferOwnershipToSelf",
103
+ "type": "error"
104
+ },
105
+ {
106
+ "inputs": [],
107
+ "name": "LSP14MustAcceptOwnershipInSeparateTransaction",
108
+ "type": "error"
109
+ },
110
+ {
111
+ "inputs": [
112
+ {
113
+ "internalType": "uint256",
114
+ "name": "renounceOwnershipStart",
115
+ "type": "uint256"
116
+ },
117
+ {
118
+ "internalType": "uint256",
119
+ "name": "renounceOwnershipEnd",
120
+ "type": "uint256"
121
+ }
122
+ ],
123
+ "name": "LSP14NotInRenounceOwnershipInterval",
124
+ "type": "error"
125
+ },
126
+ {
127
+ "inputs": [
128
+ {
129
+ "internalType": "bool",
130
+ "name": "postCall",
131
+ "type": "bool"
132
+ },
133
+ {
134
+ "internalType": "bytes4",
135
+ "name": "returnedStatus",
136
+ "type": "bytes4"
137
+ }
138
+ ],
139
+ "name": "LSP20CallVerificationFailed",
140
+ "type": "error"
141
+ },
142
+ {
143
+ "inputs": [
144
+ {
145
+ "internalType": "bool",
146
+ "name": "postCall",
147
+ "type": "bool"
148
+ }
149
+ ],
150
+ "name": "LSP20CallingVerifierFailed",
151
+ "type": "error"
152
+ },
153
+ {
154
+ "inputs": [
155
+ {
156
+ "internalType": "address",
157
+ "name": "logicVerifier",
158
+ "type": "address"
159
+ }
160
+ ],
161
+ "name": "LSP20EOACannotVerifyCall",
162
+ "type": "error"
163
+ },
164
+ {
165
+ "inputs": [
166
+ {
167
+ "internalType": "bytes4",
168
+ "name": "functionSelector",
169
+ "type": "bytes4"
170
+ }
171
+ ],
172
+ "name": "NoExtensionFoundForFunctionSelector",
173
+ "type": "error"
174
+ },
175
+ {
176
+ "anonymous": false,
177
+ "inputs": [
178
+ {
179
+ "indexed": true,
180
+ "internalType": "uint256",
181
+ "name": "operationType",
182
+ "type": "uint256"
183
+ },
184
+ {
185
+ "indexed": true,
186
+ "internalType": "address",
187
+ "name": "contractAddress",
188
+ "type": "address"
189
+ },
190
+ {
191
+ "indexed": false,
192
+ "internalType": "uint256",
193
+ "name": "value",
194
+ "type": "uint256"
195
+ },
196
+ {
197
+ "indexed": true,
198
+ "internalType": "bytes32",
199
+ "name": "salt",
200
+ "type": "bytes32"
201
+ }
202
+ ],
203
+ "name": "ContractCreated",
204
+ "type": "event"
205
+ },
206
+ {
207
+ "anonymous": false,
208
+ "inputs": [
209
+ {
210
+ "indexed": true,
211
+ "internalType": "bytes32",
212
+ "name": "dataKey",
213
+ "type": "bytes32"
214
+ },
215
+ {
216
+ "indexed": false,
217
+ "internalType": "bytes",
218
+ "name": "dataValue",
219
+ "type": "bytes"
220
+ }
221
+ ],
222
+ "name": "DataChanged",
223
+ "type": "event"
224
+ },
225
+ {
226
+ "anonymous": false,
227
+ "inputs": [
228
+ {
229
+ "indexed": true,
230
+ "internalType": "uint256",
231
+ "name": "operationType",
232
+ "type": "uint256"
233
+ },
234
+ {
235
+ "indexed": true,
236
+ "internalType": "address",
237
+ "name": "target",
238
+ "type": "address"
239
+ },
240
+ {
241
+ "indexed": false,
242
+ "internalType": "uint256",
243
+ "name": "value",
244
+ "type": "uint256"
245
+ },
246
+ {
247
+ "indexed": true,
248
+ "internalType": "bytes4",
249
+ "name": "selector",
250
+ "type": "bytes4"
251
+ }
252
+ ],
253
+ "name": "Executed",
254
+ "type": "event"
255
+ },
256
+ {
257
+ "anonymous": false,
258
+ "inputs": [],
259
+ "name": "OwnershipRenounced",
260
+ "type": "event"
261
+ },
262
+ {
263
+ "anonymous": false,
264
+ "inputs": [
265
+ {
266
+ "indexed": true,
267
+ "internalType": "address",
268
+ "name": "previousOwner",
269
+ "type": "address"
270
+ },
271
+ {
272
+ "indexed": true,
273
+ "internalType": "address",
274
+ "name": "newOwner",
275
+ "type": "address"
276
+ }
277
+ ],
278
+ "name": "OwnershipTransferStarted",
279
+ "type": "event"
280
+ },
281
+ {
282
+ "anonymous": false,
283
+ "inputs": [
284
+ {
285
+ "indexed": true,
286
+ "internalType": "address",
287
+ "name": "previousOwner",
288
+ "type": "address"
289
+ },
290
+ {
291
+ "indexed": true,
292
+ "internalType": "address",
293
+ "name": "newOwner",
294
+ "type": "address"
295
+ }
296
+ ],
297
+ "name": "OwnershipTransferred",
298
+ "type": "event"
299
+ },
300
+ {
301
+ "anonymous": false,
302
+ "inputs": [],
303
+ "name": "RenounceOwnershipStarted",
304
+ "type": "event"
305
+ },
306
+ {
307
+ "anonymous": false,
308
+ "inputs": [
309
+ {
310
+ "indexed": true,
311
+ "internalType": "address",
312
+ "name": "from",
313
+ "type": "address"
314
+ },
315
+ {
316
+ "indexed": true,
317
+ "internalType": "uint256",
318
+ "name": "value",
319
+ "type": "uint256"
320
+ },
321
+ {
322
+ "indexed": true,
323
+ "internalType": "bytes32",
324
+ "name": "typeId",
325
+ "type": "bytes32"
326
+ },
327
+ {
328
+ "indexed": false,
329
+ "internalType": "bytes",
330
+ "name": "receivedData",
331
+ "type": "bytes"
332
+ },
333
+ {
334
+ "indexed": false,
335
+ "internalType": "bytes",
336
+ "name": "returnedValue",
337
+ "type": "bytes"
338
+ }
339
+ ],
340
+ "name": "UniversalReceiver",
341
+ "type": "event"
342
+ },
343
+ {
344
+ "stateMutability": "payable",
345
+ "type": "fallback"
346
+ },
347
+ {
348
+ "inputs": [],
349
+ "name": "RENOUNCE_OWNERSHIP_CONFIRMATION_DELAY",
350
+ "outputs": [
351
+ {
352
+ "internalType": "uint256",
353
+ "name": "",
354
+ "type": "uint256"
355
+ }
356
+ ],
357
+ "stateMutability": "view",
358
+ "type": "function"
359
+ },
360
+ {
361
+ "inputs": [],
362
+ "name": "RENOUNCE_OWNERSHIP_CONFIRMATION_PERIOD",
363
+ "outputs": [
364
+ {
365
+ "internalType": "uint256",
366
+ "name": "",
367
+ "type": "uint256"
368
+ }
369
+ ],
370
+ "stateMutability": "view",
371
+ "type": "function"
372
+ },
373
+ {
374
+ "inputs": [],
375
+ "name": "VERSION",
376
+ "outputs": [
377
+ {
378
+ "internalType": "string",
379
+ "name": "",
380
+ "type": "string"
381
+ }
382
+ ],
383
+ "stateMutability": "view",
384
+ "type": "function"
385
+ },
386
+ {
387
+ "inputs": [],
388
+ "name": "acceptOwnership",
389
+ "outputs": [],
390
+ "stateMutability": "nonpayable",
391
+ "type": "function"
392
+ },
393
+ {
394
+ "inputs": [
395
+ {
396
+ "internalType": "bytes[]",
397
+ "name": "data",
398
+ "type": "bytes[]"
399
+ }
400
+ ],
401
+ "name": "batchCalls",
402
+ "outputs": [
403
+ {
404
+ "internalType": "bytes[]",
405
+ "name": "results",
406
+ "type": "bytes[]"
407
+ }
408
+ ],
409
+ "stateMutability": "nonpayable",
410
+ "type": "function"
411
+ },
412
+ {
413
+ "inputs": [
414
+ {
415
+ "internalType": "uint256",
416
+ "name": "operationType",
417
+ "type": "uint256"
418
+ },
419
+ {
420
+ "internalType": "address",
421
+ "name": "target",
422
+ "type": "address"
423
+ },
424
+ {
425
+ "internalType": "uint256",
426
+ "name": "value",
427
+ "type": "uint256"
428
+ },
429
+ {
430
+ "internalType": "bytes",
431
+ "name": "data",
432
+ "type": "bytes"
433
+ }
434
+ ],
435
+ "name": "execute",
436
+ "outputs": [
437
+ {
438
+ "internalType": "bytes",
439
+ "name": "",
440
+ "type": "bytes"
441
+ }
442
+ ],
443
+ "stateMutability": "payable",
444
+ "type": "function"
445
+ },
446
+ {
447
+ "inputs": [
448
+ {
449
+ "internalType": "uint256[]",
450
+ "name": "operationsType",
451
+ "type": "uint256[]"
452
+ },
453
+ {
454
+ "internalType": "address[]",
455
+ "name": "targets",
456
+ "type": "address[]"
457
+ },
458
+ {
459
+ "internalType": "uint256[]",
460
+ "name": "values",
461
+ "type": "uint256[]"
462
+ },
463
+ {
464
+ "internalType": "bytes[]",
465
+ "name": "datas",
466
+ "type": "bytes[]"
467
+ }
468
+ ],
469
+ "name": "executeBatch",
470
+ "outputs": [
471
+ {
472
+ "internalType": "bytes[]",
473
+ "name": "",
474
+ "type": "bytes[]"
475
+ }
476
+ ],
477
+ "stateMutability": "payable",
478
+ "type": "function"
479
+ },
480
+ {
481
+ "inputs": [
482
+ {
483
+ "internalType": "bytes32",
484
+ "name": "dataKey",
485
+ "type": "bytes32"
486
+ }
487
+ ],
488
+ "name": "getData",
489
+ "outputs": [
490
+ {
491
+ "internalType": "bytes",
492
+ "name": "dataValue",
493
+ "type": "bytes"
494
+ }
495
+ ],
496
+ "stateMutability": "view",
497
+ "type": "function"
498
+ },
499
+ {
500
+ "inputs": [
501
+ {
502
+ "internalType": "bytes32[]",
503
+ "name": "dataKeys",
504
+ "type": "bytes32[]"
505
+ }
506
+ ],
507
+ "name": "getDataBatch",
508
+ "outputs": [
509
+ {
510
+ "internalType": "bytes[]",
511
+ "name": "dataValues",
512
+ "type": "bytes[]"
513
+ }
514
+ ],
515
+ "stateMutability": "view",
516
+ "type": "function"
517
+ },
518
+ {
519
+ "inputs": [
520
+ {
521
+ "internalType": "bytes32",
522
+ "name": "dataHash",
523
+ "type": "bytes32"
524
+ },
525
+ {
526
+ "internalType": "bytes",
527
+ "name": "signature",
528
+ "type": "bytes"
529
+ }
530
+ ],
531
+ "name": "isValidSignature",
532
+ "outputs": [
533
+ {
534
+ "internalType": "bytes4",
535
+ "name": "returnedStatus",
536
+ "type": "bytes4"
537
+ }
538
+ ],
539
+ "stateMutability": "view",
540
+ "type": "function"
541
+ },
542
+ {
543
+ "inputs": [],
544
+ "name": "owner",
545
+ "outputs": [
546
+ {
547
+ "internalType": "address",
548
+ "name": "",
549
+ "type": "address"
550
+ }
551
+ ],
552
+ "stateMutability": "view",
553
+ "type": "function"
554
+ },
555
+ {
556
+ "inputs": [],
557
+ "name": "pendingOwner",
558
+ "outputs": [
559
+ {
560
+ "internalType": "address",
561
+ "name": "",
562
+ "type": "address"
563
+ }
564
+ ],
565
+ "stateMutability": "view",
566
+ "type": "function"
567
+ },
568
+ {
569
+ "inputs": [],
570
+ "name": "renounceOwnership",
571
+ "outputs": [],
572
+ "stateMutability": "nonpayable",
573
+ "type": "function"
574
+ },
575
+ {
576
+ "inputs": [
577
+ {
578
+ "internalType": "bytes32",
579
+ "name": "dataKey",
580
+ "type": "bytes32"
581
+ },
582
+ {
583
+ "internalType": "bytes",
584
+ "name": "dataValue",
585
+ "type": "bytes"
586
+ }
587
+ ],
588
+ "name": "setData",
589
+ "outputs": [],
590
+ "stateMutability": "payable",
591
+ "type": "function"
592
+ },
593
+ {
594
+ "inputs": [
595
+ {
596
+ "internalType": "bytes32[]",
597
+ "name": "dataKeys",
598
+ "type": "bytes32[]"
599
+ },
600
+ {
601
+ "internalType": "bytes[]",
602
+ "name": "dataValues",
603
+ "type": "bytes[]"
604
+ }
605
+ ],
606
+ "name": "setDataBatch",
607
+ "outputs": [],
608
+ "stateMutability": "payable",
609
+ "type": "function"
610
+ },
611
+ {
612
+ "inputs": [
613
+ {
614
+ "internalType": "bytes4",
615
+ "name": "interfaceId",
616
+ "type": "bytes4"
617
+ }
618
+ ],
619
+ "name": "supportsInterface",
620
+ "outputs": [
621
+ {
622
+ "internalType": "bool",
623
+ "name": "",
624
+ "type": "bool"
625
+ }
626
+ ],
627
+ "stateMutability": "view",
628
+ "type": "function"
629
+ },
630
+ {
631
+ "inputs": [
632
+ {
633
+ "internalType": "address",
634
+ "name": "pendingNewOwner",
635
+ "type": "address"
636
+ }
637
+ ],
638
+ "name": "transferOwnership",
639
+ "outputs": [],
640
+ "stateMutability": "nonpayable",
641
+ "type": "function"
642
+ },
643
+ {
644
+ "inputs": [
645
+ {
646
+ "internalType": "bytes32",
647
+ "name": "typeId",
648
+ "type": "bytes32"
649
+ },
650
+ {
651
+ "internalType": "bytes",
652
+ "name": "receivedData",
653
+ "type": "bytes"
654
+ }
655
+ ],
656
+ "name": "universalReceiver",
657
+ "outputs": [
658
+ {
659
+ "internalType": "bytes",
660
+ "name": "returnedValues",
661
+ "type": "bytes"
662
+ }
663
+ ],
664
+ "stateMutability": "payable",
665
+ "type": "function"
666
+ },
667
+ {
668
+ "stateMutability": "payable",
669
+ "type": "receive"
670
+ }
671
+ ],
672
+ "bytecode": "0x608060405260405162003b4138038062003b418339810160408190526200002691620001db565b803415620000ae577f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d60001b34336001600160a01b03167f9c3ba68eb5742b8e3961aea0afc7371a71bf433c8a67a831803b64c064a178c2604051620000a5906040808252600090820181905260606020830181905282015260800190565b60405180910390a45b620000c4816200011460201b620016f01760201c565b506040805180820190915260048152635ef83ad960e01b60208201526200010d907feafec4d89fa9619884b600005ef83ad9559033e6e941db7d7c495acdce6163479062000182565b50620003ce565b6000546001600160a01b038281169116146200017f57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200019c8282620002b2565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620001cf91906200037e565b60405180910390a25050565b600060208284031215620001ee57600080fd5b81516001600160a01b03811681146200020657600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200023857607f821691505b6020821081036200025957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002ad57600081815260208120601f850160051c81016020861015620002885750805b601f850160051c820191505b81811015620002a95782815560010162000294565b5050505b505050565b81516001600160401b03811115620002ce57620002ce6200020d565b620002e681620002df845462000223565b846200025f565b602080601f8311600181146200031e5760008415620003055750858301515b600019600386901b1c1916600185901b178555620002a9565b600085815260208120601f198616915b828110156200034f578886015182559484019460019091019084016200032e565b50858210156200036e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015620003ad578581018301518582016040015282016200038f565b506000604082860101526040601f19601f8301168501019250505092915050565b61376380620003de6000396000f3fe60806040526004361061012d5760003560e01c806379ba5097116100a5578063dedff9c611610074578063ead3fbdf11610059578063ead3fbdf1461021e578063f2fde38b14610402578063ffa1ad741461042257610178565b8063dedff9c6146103c4578063e30c3978146103e457610178565b806379ba5097146103575780637f23690c1461036c5780638da5cb5b1461037f57806397902421146103b157610178565b806344c028fe116100fc5780636963d438116100e15780636963d4381461030f5780636bb56a141461032f578063715018a61461034257610178565b806344c028fe146102cf57806354f6127f146102ef57610178565b806301bfba611461021e57806301ffc9a7146102465780631626ba7e1461027657806331858452146102af57610178565b36610178573415610176576101747f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d60001b6040518060200160405280600081525061046b565b505b005b600036606060048210156102065734156101f1576101ef7f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d60001b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046b92505050565b505b50604080516020810190915260008152610213565b6102108383610741565b90505b915050805190602001f35b34801561022a57600080fd5b5061023360c881565b6040519081526020015b60405180910390f35b34801561025257600080fd5b50610266610261366004612cc1565b61091d565b604051901515815260200161023d565b34801561028257600080fd5b50610296610291366004612da3565b610a08565b6040516001600160e01b0319909116815260200161023d565b6102c26102bd366004612f0b565b610bba565b60405161023d9190613063565b6102e26102dd3660046130c5565b610cc6565b60405161023d919061311a565b3480156102fb57600080fd5b506102e261030a36600461312d565b610da9565b34801561031b57600080fd5b506102c261032a366004613146565b610db4565b6102e261033d366004612da3565b61046b565b34801561034e57600080fd5b50610176610f10565b34801561036357600080fd5b5061017661105d565b61017661037a366004612da3565b6111e3565b34801561038b57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023d565b6101766103bf3660046131bb565b6112c6565b3480156103d057600080fd5b506102c26103df366004613215565b611499565b3480156103f057600080fd5b506003546001600160a01b0316610399565b34801561040e57600080fd5b5061017661041d36600461324a565b611544565b34801561042e57600080fd5b506102e26040518060400160405280600b81526020017f302e31352e302d72632e3500000000000000000000000000000000000000000081525081565b6060341580159061049c57507f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d8314155b15610507576105057f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d60001b6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046b92505050565b505b60006105327f0cfc51aec37c55a4d0b1a65c6255c4bf2fbdf6277f3cc0730c45b828b6db8b4761175e565b9050606060148251106105e357600061054a83613265565b60601c905061056081635122dded60e11b611800565b156105e157604051635122dded60e11b81526001600160a01b0382169063a245bbda9061059790339034908b908b906004016132a1565b6000604051808303816000875af11580156105b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105de91908101906132cf565b91505b505b600061060f7f0cfc51aec37c55a4d0b10000000000000000000000000000000000000000000087611889565b9050600061061c8261175e565b9050606060148251106106cd57600061063483613265565b60601c905061064a81635122dded60e11b611800565b156106cb57604051635122dded60e11b81526001600160a01b0382169063a245bbda9061068190339034908e908e906004016132a1565b6000604051808303816000875af11580156106a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106c891908101906132cf565b91505b505b83816040516020016106e092919061333d565b60405160208183030381529060405295508734336001600160a01b03167f9c3ba68eb5742b8e3961aea0afc7371a71bf433c8a67a831803b64c064a178c28a8a60405161072e92919061333d565b60405180910390a4505050505092915050565b606060008061075b6000356001600160e01b0319166118f2565b915091503460001415801561076e575080155b156107d8576107d67f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d60001b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046b92505050565b505b6000356001600160e01b0319161580156107f957506001600160a01b038216155b15610817576040518060200160405280600081525092505050610917565b6001600160a01b03821661086a576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024015b60405180910390fd5b600080836001600160a01b031683610883576000610885565b345b8888333460405160200161089c9493929190613362565b60408051601f19818403018152908290526108b691613392565b60006040518083038185875af1925050503d80600081146108f3576040519150601f19603f3d011682016040523d82523d6000602084013e6108f8565b606091505b5091509150811561090e57935061091792505050565b80518060208301fd5b92915050565b60006001600160e01b03198216630b135d3f60e11b148061096757506001600160e01b031982167f24871b3d00000000000000000000000000000000000000000000000000000000145b8061098257506001600160e01b03198216631aed5a8560e21b145b806109b657506001600160e01b031982167f94be599900000000000000000000000000000000000000000000000000000000145b806109ea57506001600160e01b031982167f1a0eb6a500000000000000000000000000000000000000000000000000000000145b806109f957506109f9826119e9565b80610917575061091782611a27565b600080610a1d6000546001600160a01b031690565b90506001600160a01b0381163b15610b3a57600080826001600160a01b0316631626ba7e60e01b8787604051602401610a579291906133ae565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a959190613392565b600060405180830381855afa9150503d8060008114610ad0576040519150601f19603f3d011682016040523d82523d6000602084013e610ad5565b606091505b50915091506000828015610aea575081516020145b8015610b1157508151630b135d3f60e11b90610b0f90840160209081019085016133c7565b145b905080610b26576001600160e01b0319610b2f565b630b135d3f60e11b5b945050505050610917565b600080610b478686611a65565b90925090506000816004811115610b6057610b606133e0565b14610b7957506001600160e01b03199250610917915050565b826001600160a01b0316826001600160a01b031614610ba0576001600160e01b0319610ba9565b630b135d3f60e11b5b9350505050610917565b5092915050565b60603415610c45576040516001600160e01b03196000351660208201527f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d90349033907f9c3ba68eb5742b8e3961aea0afc7371a71bf433c8a67a831803b64c064a178c29060240160408051601f1981840301815290829052610c3c916133f6565b60405180910390a45b6000546001600160a01b031633819003610c6d57610c6586868686611aaa565b915050610cbe565b6000610c7882611c3a565b90506000610c8888888888611aaa565b90508115610cb957610cb98382604051602001610ca59190613063565b604051602081830303815290604052611e06565b925050505b949350505050565b60603415610d51576040516001600160e01b03196000351660208201527f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d90349033907f9c3ba68eb5742b8e3961aea0afc7371a71bf433c8a67a831803b64c064a178c29060240160408051601f1981840301815290829052610d48916133f6565b60405180910390a45b6000546001600160a01b031633819003610d7157610c6586868686611f3c565b6000610d7c82611c3a565b90506000610d8c88888888611f3c565b90508115610cb957610cb98382604051602001610ca5919061311a565b60606109178261175e565b60608167ffffffffffffffff811115610dcf57610dcf612cde565b604051908082528060200260200182016040528015610e0257816020015b6060815260200190600190039081610ded5790505b50905060005b82811015610bb35760008030868685818110610e2657610e26613420565b9050602002810190610e389190613436565b604051610e4692919061347d565b600060405180830381855af49150503d8060008114610e81576040519150601f19603f3d011682016040523d82523d6000602084013e610e86565b606091505b509150915081610ee857805115610ea05780518082602001fd5b60405162461bcd60e51b815260206004820152601960248201527f4c5350303a20626174636843616c6c73207265766572746564000000000000006044820152606401610861565b80848481518110610efb57610efb613420565b60209081029190910101525050600101610e08565b6000546001600160a01b031633819003610fb3576000546001600160a01b0316610f38612092565b6000546001600160a01b0316610faf57604080516001600160a01b0384166020820152600091810191909152610faf907fa4e59c931d14f7c8a7a35027f92ee40b5f2886b9fdcdb78f30bc5ecce5a2f814906060015b60408051601f198184030181529190526001600160a01b038416919061219e565b5050565b6000610fbe82611c3a565b90506000610fd46000546001600160a01b031690565b9050610fde612092565b6000546001600160a01b031661103857604080516001600160a01b0385166020820152600091810191909152611038907fa4e59c931d14f7c8a7a35027f92ee40b5f2886b9fdcdb78f30bc5ecce5a2f81490606001610f8e565b8115611057576110578360405180602001604052806000815250611e06565b50505b50565b600354600160a01b900460ff16156110a1576040517f5758dd0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546003546001600160a01b03918216929116903382146110ec576110c782611c3a565b90506110d2826116f0565b600380546001600160a01b031916905560006002556110f4565b6110f4612232565b604080516001600160a01b03808616602083015284169181019190915261115c907fa4e59c931d14f7c8a7a35027f92ee40b5f2886b9fdcdb78f30bc5ecce5a2f814906060015b60408051601f198184030181529190526001600160a01b038616919061219e565b604080516001600160a01b0380861660208301528416918101919091526111c4907fceca317f109c43507871523e82dc2a3cc64dfa18f12da0b6db14f6e23f995538906060015b60408051601f198184030181529190526001600160a01b038516919061219e565b8015611057576110578260405180602001604052806000815250611e06565b341561126c576040516001600160e01b03196000351660208201527f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d90349033907f9c3ba68eb5742b8e3961aea0afc7371a71bf433c8a67a831803b64c064a178c29060240160408051601f1981840301815290829052611263916133f6565b60405180910390a45b6000546001600160a01b03163381900361128a576110578383612298565b600061129582611c3a565b90506112a18484612298565b80156112c0576112c08260405180602001604052806000815250611e06565b50505050565b341561134f576040516001600160e01b03196000351660208201527f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d90349033907f9c3ba68eb5742b8e3961aea0afc7371a71bf433c8a67a831803b64c064a178c29060240160408051601f1981840301815290829052611346916133f6565b60405180910390a45b805182511461138a576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036113c5576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b0316338190036114295760005b83518110156112c0576114218482815181106113fa576113fa613420565b602002602001015184838151811061141457611414613420565b6020026020010151612298565b6001016113dc565b600061143482611c3a565b905060005b84518110156114795761147185828151811061145757611457613420565b602002602001015185838151811061141457611414613420565b600101611439565b5080156112c0576112c08260405180602001604052806000815250611e06565b6060815167ffffffffffffffff8111156114b5576114b5612cde565b6040519080825280602002602001820160405280156114e857816020015b60608152602001906001900390816114d35790505b50905060005b825181101561153e5761151983828151811061150c5761150c613420565b602002602001015161175e565b82828151811061152b5761152b613420565b60209081029190910101526001016114ee565b50919050565b6000546001600160a01b031633819003611610576003805460ff60a01b1916600160a01b179055611574826122ed565b816001600160a01b0316816001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a3604080516001600160a01b0380841660208301528416918101919091526115ff907fe17117c9d2665d1dbeb479ed8058bbebde3c50ac50e2e65619f60006caac6926906060016111a3565b6003805460ff60a01b191690555050565b600061161b82611c3a565b6003805460ff60a01b1916600160a01b1790559050611639836122ed565b826001600160a01b0316826001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a3604080516001600160a01b0380851660208301528516918101919091526116c4907fe17117c9d2665d1dbeb479ed8058bbebde3c50ac50e2e65619f60006caac69269060600161113b565b6003805460ff60a01b191690558015611057576110578260405180602001604052806000815250611e06565b6000546001600160a01b0382811691161461105a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383166001600160a01b031990911617905550565b600081815260016020526040902080546060919061177b9061348d565b80601f01602080910402602001604051908101604052809291908181526020018280546117a79061348d565b80156117f45780601f106117c9576101008083540402835291602001916117f4565b820191906000526020600020905b8154815290600101906020018083116117d757829003601f168201915b50505050509050919050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611872575060208210155b801561187e5750600081115b979650505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080610cbe906134c1565b6000808061192a7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611889565b905060006119378261175e565b9050601481511015611950575060009485945092505050565b80516015036119d1578060148151811061196c5761196c613420565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f0100000000000000000000000000000000000000000000000000000000000000036119d1576119c281613265565b60601c95600195509350505050565b6119da81613265565b60601c95600095509350505050565b60006001600160e01b031982167fa918fa6b000000000000000000000000000000000000000000000000000000001480610917575061091782612356565b600080611a3a6301ffc9a760e01b6118f2565b5090506001600160a01b038116611a545750600092915050565b611a5e8184611800565b9392505050565b6000808251604103611a9b5760208301516040840151606085015160001a611a8f87828585612394565b94509450505050611aa3565b506000905060025b9250929050565b606083518551141580611acb575082518451141580611acb57508151835114155b15611b02576040517f3ff55f4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8451600003611b3d576040517fe9ad2b5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000855167ffffffffffffffff811115611b5957611b59612cde565b604051908082528060200260200182016040528015611b8c57816020015b6060815260200190600190039081611b775790505b50905060005b8651811015611c3057611c0b878281518110611bb057611bb0613420565b6020026020010151878381518110611bca57611bca613420565b6020026020010151878481518110611be457611be4613420565b6020026020010151878581518110611bfe57611bfe613420565b6020026020010151611f3c565b828281518110611c1d57611c1d613420565b6020908102919091010152600101611b92565b5095945050505050565b6000816001600160a01b03163b600003611c8b576040517f0c3923010000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610861565b6040517fde928f140000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063de928f1490611cdb90339030908290349060009036906004016134e5565b6020604051808303816000875af1925050508015611d16575060408051601f3d908101601f19168201909252611d1391810190613542565b60015b611d55573d808015611d44576040519150601f19603f3d011682016040523d82523d6000602084013e611d49565b606091505b5061153e600082612458565b7fffffff000000000000000000000000000000000000000000000000000000000081167fde928f000000000000000000000000000000000000000000000000000000000014611dca57604051639d6741e360e01b8152600060048201526001600160e01b031982166024820152604401610861565b8060031a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b14915050919050565b919050565b816001600160a01b031663d3fc45d333303334600036604051602001611e319695949392919061355f565b60405160208183030381529060405280519060200120836040518363ffffffff1660e01b8152600401611e659291906133ae565b6020604051808303816000875af1925050508015611ea0575060408051601f3d908101601f19168201909252611e9d91810190613542565b60015b611edf573d808015611ece576040519150601f19603f3d011682016040523d82523d6000602084013e611ed3565b606091505b50611057600182612458565b6001600160e01b031981167fd3fc45d3000000000000000000000000000000000000000000000000000000001461105757604051639d6741e360e01b8152600160048201526001600160e01b031982166024820152604401610861565b606084611f5557611f4e84848461249e565b9050610cbe565b60018503611f8f576001600160a01b03841615611f8557604051631820c12560e11b815260040160405180910390fd5b611f4e83836125cf565b60028503611fc9576001600160a01b03841615611fbf57604051631820c12560e11b815260040160405180910390fd5b611f4e83836126e9565b60038503612013578215612009576040517f72f2bc6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f4e84836127d3565b6004850361205d578215612053576040517f5ac8313500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f4e84836128d7565b6040517f7583b3bc00000000000000000000000000000000000000000000000000000000815260048101869052602401610861565b60025443906000906120a69060c8906135c5565b905060006120b560c8836135c5565b9050808311806120c55750600254155b1561210d576002839055600380546001600160a01b03191690556040517f81b7f830f1f0084db6497c486cbe6974c86488dcc4e3738eab94ab6d6b1653e790600090a1505050565b81831015612151576040517f1b0809420000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610861565b61215b60006116f0565b60006002819055600380546001600160a01b03191690556040517fd1f66c3d2bc1993a86be5e3d33709d98f0442381befcedd29f578b9b2506b1ce9190a1505050565b6121b86001600160a01b038416631aed5a8560e21b611800565b1561105757604051631aed5a8560e21b81526001600160a01b03841690636bb56a14906121eb90859085906004016133ae565b6000604051808303816000875af115801561220a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112c091908101906132cf565b6003546001600160a01b03163314612278576040517f451e4528000000000000000000000000000000000000000000000000000000008152336004820152602401610861565b612281336116f0565b600380546001600160a01b03191690556000600255565b60008281526001602052604090206122b08282613626565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516122e1919061311a565b60405180910390a25050565b306001600160a01b0382160361232f576040517fe052a6f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b03929092169190911790556000600255565b60006001600160e01b031982167f629aa694000000000000000000000000000000000000000000000000000000001480610917575061091782612988565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156123cb575060009050600361244f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561241f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166124485760006001925092505061244f565b9150600090505b94509492505050565b8051156124685780518082602001fd5b6040517f8c6a8ae30000000000000000000000000000000000000000000000000000000081528215156004820152602401610861565b6060824710156124ca576040516301bf351f60e31b815247600482015260248101849052604401610861565b6124d3826136e6565b6001600160e01b031916846001600160a01b031660007f4810874456b8e6487bd861375cf6abd8e1c8bb5858c8ce36a86a04dabfac199e8660405161251a91815260200190565b60405180910390a4600080856001600160a01b0316858560405161253e9190613392565b60006040518083038185875af1925050503d806000811461257b576040519150601f19603f3d011682016040523d82523d6000602084013e612580565b606091505b50915091506125c582826040518060400160405280601681526020017f455243373235583a20556e6b6e6f776e204572726f72000000000000000000008152506129d6565b9695505050505050565b6060824710156125fb576040516301bf351f60e31b815247600482015260248101849052604401610861565b815160000361261d5760405163b81cd8d960e01b815260040160405180910390fd5b600082516020840185f090506001600160a01b038116612669576040517f0b07489b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000801b816001600160a01b031660017fa1fb700aaee2ae4a2ff6f91ce7eba292f89c2f5488b8ec4c5c5c8150692595c3876040516126aa91815260200190565b60405180910390a46040516bffffffffffffffffffffffff19606083901b16602082015260340160405160208183030381529060405291505092915050565b6060815160000361270d5760405163b81cd8d960e01b815260040160405180910390fd5b60006127268360208551612721919061371a565b6129ef565b905060006127438460006020875161273e919061371a565b612a55565b90506000612752868484612b7d565b905082816001600160a01b031660027fa1fb700aaee2ae4a2ff6f91ce7eba292f89c2f5488b8ec4c5c5c8150692595c38960405161279291815260200190565b60405180910390a46040516bffffffffffffffffffffffff19606083901b166020820152603401604051602081830303815290604052935050505092915050565b60606127de826136e6565b6001600160e01b031916836001600160a01b031660037f4810874456b8e6487bd861375cf6abd8e1c8bb5858c8ce36a86a04dabfac199e600060405161282691815260200190565b60405180910390a4600080846001600160a01b0316846040516128499190613392565b600060405180830381855afa9150503d8060008114612884576040519150601f19603f3d011682016040523d82523d6000602084013e612889565b606091505b50915091506128ce82826040518060400160405280601681526020017f455243373235583a20556e6b6e6f776e204572726f72000000000000000000008152506129d6565b95945050505050565b60606128e2826136e6565b6001600160e01b031916836001600160a01b031660047f4810874456b8e6487bd861375cf6abd8e1c8bb5858c8ce36a86a04dabfac199e600060405161292a91815260200190565b60405180910390a4600080846001600160a01b03168460405161294d9190613392565b600060405180830381855af49150503d8060008114612884576040519150601f19603f3d011682016040523d82523d6000602084013e612889565b60006001600160e01b031982167f7545acac00000000000000000000000000000000000000000000000000000000148061091757506301ffc9a760e01b6001600160e01b0319831614610917565b606083156129e5575081611a5e565b611a5e8383612c81565b60006129fc8260206135c5565b83511015612a4c5760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610861565b50016020015190565b606081612a6381601f6135c5565b1015612ab15760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610861565b612abb82846135c5565b84511015612b0b5760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610861565b606082158015612b2a5760405191506000825260208201604052612b74565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612b63578051835260209283019201612b4b565b5050858452601f01601f1916604052505b50949350505050565b600083471015612bcf5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610861565b8151600003612c205760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610861565b8282516020840186f590506001600160a01b038116611a5e5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610861565b815115612c915781518083602001fd5b8060405162461bcd60e51b8152600401610861919061311a565b6001600160e01b03198116811461105a57600080fd5b600060208284031215612cd357600080fd5b8135611a5e81612cab565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612d1d57612d1d612cde565b604052919050565b600067ffffffffffffffff821115612d3f57612d3f612cde565b50601f01601f191660200190565b600082601f830112612d5e57600080fd5b8135612d71612d6c82612d25565b612cf4565b818152846020838601011115612d8657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612db657600080fd5b82359150602083013567ffffffffffffffff811115612dd457600080fd5b612de085828601612d4d565b9150509250929050565b600067ffffffffffffffff821115612e0457612e04612cde565b5060051b60200190565b600082601f830112612e1f57600080fd5b81356020612e2f612d6c83612dea565b82815260059290921b84018101918181019086841115612e4e57600080fd5b8286015b84811015612e695780358352918301918301612e52565b509695505050505050565b80356001600160a01b0381168114611e0157600080fd5b600082601f830112612e9c57600080fd5b81356020612eac612d6c83612dea565b82815260059290921b84018101918181019086841115612ecb57600080fd5b8286015b84811015612e6957803567ffffffffffffffff811115612eef5760008081fd5b612efd8986838b0101612d4d565b845250918301918301612ecf565b60008060008060808587031215612f2157600080fd5b843567ffffffffffffffff80821115612f3957600080fd5b612f4588838901612e0e565b9550602091508187013581811115612f5c57600080fd5b8701601f81018913612f6d57600080fd5b8035612f7b612d6c82612dea565b81815260059190911b8201840190848101908b831115612f9a57600080fd5b928501925b82841015612fbf57612fb084612e74565b82529285019290850190612f9f565b97505050506040870135915080821115612fd857600080fd5b612fe488838901612e0e565b93506060870135915080821115612ffa57600080fd5b5061300787828801612e8b565b91505092959194509250565b60005b8381101561302e578181015183820152602001613016565b50506000910152565b6000815180845261304f816020860160208601613013565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156130b857603f198886030184526130a6858351613037565b9450928501929085019060010161308a565b5092979650505050505050565b600080600080608085870312156130db57600080fd5b843593506130eb60208601612e74565b925060408501359150606085013567ffffffffffffffff81111561310e57600080fd5b61300787828801612d4d565b602081526000611a5e6020830184613037565b60006020828403121561313f57600080fd5b5035919050565b6000806020838503121561315957600080fd5b823567ffffffffffffffff8082111561317157600080fd5b818501915085601f83011261318557600080fd5b81358181111561319457600080fd5b8660208260051b85010111156131a957600080fd5b60209290920196919550909350505050565b600080604083850312156131ce57600080fd5b823567ffffffffffffffff808211156131e657600080fd5b6131f286838701612e0e565b9350602085013591508082111561320857600080fd5b50612de085828601612e8b565b60006020828403121561322757600080fd5b813567ffffffffffffffff81111561323e57600080fd5b610cbe84828501612e0e565b60006020828403121561325c57600080fd5b611a5e82612e74565b805160208201516bffffffffffffffffffffffff1980821692919060148310156132995780818460140360031b1b83161693505b505050919050565b6001600160a01b03851681528360208201528260408201526080606082015260006125c56080830184613037565b6000602082840312156132e157600080fd5b815167ffffffffffffffff8111156132f857600080fd5b8201601f8101841361330957600080fd5b8051613317612d6c82612d25565b81815285602083850101111561332c57600080fd5b6128ce826020830160208601613013565b6040815260006133506040830185613037565b82810360208401526128ce8185613037565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516133a4818460208701613013565b9190910192915050565b828152604060208201526000610cbe6040830184613037565b6000602082840312156133d957600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b6040815260006134096040830184613037565b828103602093840152600081529190910192915050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261344d57600080fd5b83018035915067ffffffffffffffff82111561346857600080fd5b602001915036819003821315611aa357600080fd5b8183823760009101908152919050565b600181811c908216806134a157607f821691505b60208210810361153e57634e487b7160e01b600052602260045260246000fd5b8051602080830151919081101561153e5760001960209190910360031b1b16919050565b60006001600160a01b038089168352808816602084015280871660408401525084606083015260a060808301528260a0830152828460c0840137600060c0848401015260c0601f19601f8501168301019050979650505050505050565b60006020828403121561355457600080fd5b8151611a5e81612cab565b60006bffffffffffffffffffffffff19808960601b168352808860601b166014840152808760601b1660288401525084603c8301528284605c8401375060009101605c0190815295945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610917576109176135af565b601f82111561105757600081815260208120601f850160051c810160208610156135ff5750805b601f850160051c820191505b8181101561361e5782815560010161360b565b505050505050565b815167ffffffffffffffff81111561364057613640612cde565b6136548161364e845461348d565b846135d8565b602080601f83116001811461368957600084156136715750858301515b600019600386901b1c1916600185901b17855561361e565b600085815260208120601f198616915b828110156136b857888601518255948401946001909101908401613699565b50858210156136d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000815160208301516001600160e01b0319808216935060048310156132995760049290920360031b82901b161692915050565b81810381811115610917576109176135af56fea26469706673582212209e455126b1cb56eed250a294c1155f36b453fcd4385e8d56bca6515f10bf3c5664736f6c63430008110033",
673
+ "deployedBytecode": "0x60806040526004361061012d5760003560e01c806379ba5097116100a5578063dedff9c611610074578063ead3fbdf11610059578063ead3fbdf1461021e578063f2fde38b14610402578063ffa1ad741461042257610178565b8063dedff9c6146103c4578063e30c3978146103e457610178565b806379ba5097146103575780637f23690c1461036c5780638da5cb5b1461037f57806397902421146103b157610178565b806344c028fe116100fc5780636963d438116100e15780636963d4381461030f5780636bb56a141461032f578063715018a61461034257610178565b806344c028fe146102cf57806354f6127f146102ef57610178565b806301bfba611461021e57806301ffc9a7146102465780631626ba7e1461027657806331858452146102af57610178565b36610178573415610176576101747f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d60001b6040518060200160405280600081525061046b565b505b005b600036606060048210156102065734156101f1576101ef7f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d60001b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046b92505050565b505b50604080516020810190915260008152610213565b6102108383610741565b90505b915050805190602001f35b34801561022a57600080fd5b5061023360c881565b6040519081526020015b60405180910390f35b34801561025257600080fd5b50610266610261366004612cc1565b61091d565b604051901515815260200161023d565b34801561028257600080fd5b50610296610291366004612da3565b610a08565b6040516001600160e01b0319909116815260200161023d565b6102c26102bd366004612f0b565b610bba565b60405161023d9190613063565b6102e26102dd3660046130c5565b610cc6565b60405161023d919061311a565b3480156102fb57600080fd5b506102e261030a36600461312d565b610da9565b34801561031b57600080fd5b506102c261032a366004613146565b610db4565b6102e261033d366004612da3565b61046b565b34801561034e57600080fd5b50610176610f10565b34801561036357600080fd5b5061017661105d565b61017661037a366004612da3565b6111e3565b34801561038b57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161023d565b6101766103bf3660046131bb565b6112c6565b3480156103d057600080fd5b506102c26103df366004613215565b611499565b3480156103f057600080fd5b506003546001600160a01b0316610399565b34801561040e57600080fd5b5061017661041d36600461324a565b611544565b34801561042e57600080fd5b506102e26040518060400160405280600b81526020017f302e31352e302d72632e3500000000000000000000000000000000000000000081525081565b6060341580159061049c57507f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d8314155b15610507576105057f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d60001b6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046b92505050565b505b60006105327f0cfc51aec37c55a4d0b1a65c6255c4bf2fbdf6277f3cc0730c45b828b6db8b4761175e565b9050606060148251106105e357600061054a83613265565b60601c905061056081635122dded60e11b611800565b156105e157604051635122dded60e11b81526001600160a01b0382169063a245bbda9061059790339034908b908b906004016132a1565b6000604051808303816000875af11580156105b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105de91908101906132cf565b91505b505b600061060f7f0cfc51aec37c55a4d0b10000000000000000000000000000000000000000000087611889565b9050600061061c8261175e565b9050606060148251106106cd57600061063483613265565b60601c905061064a81635122dded60e11b611800565b156106cb57604051635122dded60e11b81526001600160a01b0382169063a245bbda9061068190339034908e908e906004016132a1565b6000604051808303816000875af11580156106a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106c891908101906132cf565b91505b505b83816040516020016106e092919061333d565b60405160208183030381529060405295508734336001600160a01b03167f9c3ba68eb5742b8e3961aea0afc7371a71bf433c8a67a831803b64c064a178c28a8a60405161072e92919061333d565b60405180910390a4505050505092915050565b606060008061075b6000356001600160e01b0319166118f2565b915091503460001415801561076e575080155b156107d8576107d67f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d60001b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046b92505050565b505b6000356001600160e01b0319161580156107f957506001600160a01b038216155b15610817576040518060200160405280600081525092505050610917565b6001600160a01b03821661086a576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024015b60405180910390fd5b600080836001600160a01b031683610883576000610885565b345b8888333460405160200161089c9493929190613362565b60408051601f19818403018152908290526108b691613392565b60006040518083038185875af1925050503d80600081146108f3576040519150601f19603f3d011682016040523d82523d6000602084013e6108f8565b606091505b5091509150811561090e57935061091792505050565b80518060208301fd5b92915050565b60006001600160e01b03198216630b135d3f60e11b148061096757506001600160e01b031982167f24871b3d00000000000000000000000000000000000000000000000000000000145b8061098257506001600160e01b03198216631aed5a8560e21b145b806109b657506001600160e01b031982167f94be599900000000000000000000000000000000000000000000000000000000145b806109ea57506001600160e01b031982167f1a0eb6a500000000000000000000000000000000000000000000000000000000145b806109f957506109f9826119e9565b80610917575061091782611a27565b600080610a1d6000546001600160a01b031690565b90506001600160a01b0381163b15610b3a57600080826001600160a01b0316631626ba7e60e01b8787604051602401610a579291906133ae565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a959190613392565b600060405180830381855afa9150503d8060008114610ad0576040519150601f19603f3d011682016040523d82523d6000602084013e610ad5565b606091505b50915091506000828015610aea575081516020145b8015610b1157508151630b135d3f60e11b90610b0f90840160209081019085016133c7565b145b905080610b26576001600160e01b0319610b2f565b630b135d3f60e11b5b945050505050610917565b600080610b478686611a65565b90925090506000816004811115610b6057610b606133e0565b14610b7957506001600160e01b03199250610917915050565b826001600160a01b0316826001600160a01b031614610ba0576001600160e01b0319610ba9565b630b135d3f60e11b5b9350505050610917565b5092915050565b60603415610c45576040516001600160e01b03196000351660208201527f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d90349033907f9c3ba68eb5742b8e3961aea0afc7371a71bf433c8a67a831803b64c064a178c29060240160408051601f1981840301815290829052610c3c916133f6565b60405180910390a45b6000546001600160a01b031633819003610c6d57610c6586868686611aaa565b915050610cbe565b6000610c7882611c3a565b90506000610c8888888888611aaa565b90508115610cb957610cb98382604051602001610ca59190613063565b604051602081830303815290604052611e06565b925050505b949350505050565b60603415610d51576040516001600160e01b03196000351660208201527f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d90349033907f9c3ba68eb5742b8e3961aea0afc7371a71bf433c8a67a831803b64c064a178c29060240160408051601f1981840301815290829052610d48916133f6565b60405180910390a45b6000546001600160a01b031633819003610d7157610c6586868686611f3c565b6000610d7c82611c3a565b90506000610d8c88888888611f3c565b90508115610cb957610cb98382604051602001610ca5919061311a565b60606109178261175e565b60608167ffffffffffffffff811115610dcf57610dcf612cde565b604051908082528060200260200182016040528015610e0257816020015b6060815260200190600190039081610ded5790505b50905060005b82811015610bb35760008030868685818110610e2657610e26613420565b9050602002810190610e389190613436565b604051610e4692919061347d565b600060405180830381855af49150503d8060008114610e81576040519150601f19603f3d011682016040523d82523d6000602084013e610e86565b606091505b509150915081610ee857805115610ea05780518082602001fd5b60405162461bcd60e51b815260206004820152601960248201527f4c5350303a20626174636843616c6c73207265766572746564000000000000006044820152606401610861565b80848481518110610efb57610efb613420565b60209081029190910101525050600101610e08565b6000546001600160a01b031633819003610fb3576000546001600160a01b0316610f38612092565b6000546001600160a01b0316610faf57604080516001600160a01b0384166020820152600091810191909152610faf907fa4e59c931d14f7c8a7a35027f92ee40b5f2886b9fdcdb78f30bc5ecce5a2f814906060015b60408051601f198184030181529190526001600160a01b038416919061219e565b5050565b6000610fbe82611c3a565b90506000610fd46000546001600160a01b031690565b9050610fde612092565b6000546001600160a01b031661103857604080516001600160a01b0385166020820152600091810191909152611038907fa4e59c931d14f7c8a7a35027f92ee40b5f2886b9fdcdb78f30bc5ecce5a2f81490606001610f8e565b8115611057576110578360405180602001604052806000815250611e06565b50505b50565b600354600160a01b900460ff16156110a1576040517f5758dd0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546003546001600160a01b03918216929116903382146110ec576110c782611c3a565b90506110d2826116f0565b600380546001600160a01b031916905560006002556110f4565b6110f4612232565b604080516001600160a01b03808616602083015284169181019190915261115c907fa4e59c931d14f7c8a7a35027f92ee40b5f2886b9fdcdb78f30bc5ecce5a2f814906060015b60408051601f198184030181529190526001600160a01b038616919061219e565b604080516001600160a01b0380861660208301528416918101919091526111c4907fceca317f109c43507871523e82dc2a3cc64dfa18f12da0b6db14f6e23f995538906060015b60408051601f198184030181529190526001600160a01b038516919061219e565b8015611057576110578260405180602001604052806000815250611e06565b341561126c576040516001600160e01b03196000351660208201527f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d90349033907f9c3ba68eb5742b8e3961aea0afc7371a71bf433c8a67a831803b64c064a178c29060240160408051601f1981840301815290829052611263916133f6565b60405180910390a45b6000546001600160a01b03163381900361128a576110578383612298565b600061129582611c3a565b90506112a18484612298565b80156112c0576112c08260405180602001604052806000815250611e06565b50505050565b341561134f576040516001600160e01b03196000351660208201527f9c4705229491d365fb5434052e12a386d6771d976bea61070a8c694e8affea3d90349033907f9c3ba68eb5742b8e3961aea0afc7371a71bf433c8a67a831803b64c064a178c29060240160408051601f1981840301815290829052611346916133f6565b60405180910390a45b805182511461138a576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036113c5576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b0316338190036114295760005b83518110156112c0576114218482815181106113fa576113fa613420565b602002602001015184838151811061141457611414613420565b6020026020010151612298565b6001016113dc565b600061143482611c3a565b905060005b84518110156114795761147185828151811061145757611457613420565b602002602001015185838151811061141457611414613420565b600101611439565b5080156112c0576112c08260405180602001604052806000815250611e06565b6060815167ffffffffffffffff8111156114b5576114b5612cde565b6040519080825280602002602001820160405280156114e857816020015b60608152602001906001900390816114d35790505b50905060005b825181101561153e5761151983828151811061150c5761150c613420565b602002602001015161175e565b82828151811061152b5761152b613420565b60209081029190910101526001016114ee565b50919050565b6000546001600160a01b031633819003611610576003805460ff60a01b1916600160a01b179055611574826122ed565b816001600160a01b0316816001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a3604080516001600160a01b0380841660208301528416918101919091526115ff907fe17117c9d2665d1dbeb479ed8058bbebde3c50ac50e2e65619f60006caac6926906060016111a3565b6003805460ff60a01b191690555050565b600061161b82611c3a565b6003805460ff60a01b1916600160a01b1790559050611639836122ed565b826001600160a01b0316826001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a3604080516001600160a01b0380851660208301528516918101919091526116c4907fe17117c9d2665d1dbeb479ed8058bbebde3c50ac50e2e65619f60006caac69269060600161113b565b6003805460ff60a01b191690558015611057576110578260405180602001604052806000815250611e06565b6000546001600160a01b0382811691161461105a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383166001600160a01b031990911617905550565b600081815260016020526040902080546060919061177b9061348d565b80601f01602080910402602001604051908101604052809291908181526020018280546117a79061348d565b80156117f45780601f106117c9576101008083540402835291602001916117f4565b820191906000526020600020905b8154815290600101906020018083116117d757829003601f168201915b50505050509050919050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611872575060208210155b801561187e5750600081115b979650505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080610cbe906134c1565b6000808061192a7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611889565b905060006119378261175e565b9050601481511015611950575060009485945092505050565b80516015036119d1578060148151811061196c5761196c613420565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f0100000000000000000000000000000000000000000000000000000000000000036119d1576119c281613265565b60601c95600195509350505050565b6119da81613265565b60601c95600095509350505050565b60006001600160e01b031982167fa918fa6b000000000000000000000000000000000000000000000000000000001480610917575061091782612356565b600080611a3a6301ffc9a760e01b6118f2565b5090506001600160a01b038116611a545750600092915050565b611a5e8184611800565b9392505050565b6000808251604103611a9b5760208301516040840151606085015160001a611a8f87828585612394565b94509450505050611aa3565b506000905060025b9250929050565b606083518551141580611acb575082518451141580611acb57508151835114155b15611b02576040517f3ff55f4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8451600003611b3d576040517fe9ad2b5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000855167ffffffffffffffff811115611b5957611b59612cde565b604051908082528060200260200182016040528015611b8c57816020015b6060815260200190600190039081611b775790505b50905060005b8651811015611c3057611c0b878281518110611bb057611bb0613420565b6020026020010151878381518110611bca57611bca613420565b6020026020010151878481518110611be457611be4613420565b6020026020010151878581518110611bfe57611bfe613420565b6020026020010151611f3c565b828281518110611c1d57611c1d613420565b6020908102919091010152600101611b92565b5095945050505050565b6000816001600160a01b03163b600003611c8b576040517f0c3923010000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610861565b6040517fde928f140000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063de928f1490611cdb90339030908290349060009036906004016134e5565b6020604051808303816000875af1925050508015611d16575060408051601f3d908101601f19168201909252611d1391810190613542565b60015b611d55573d808015611d44576040519150601f19603f3d011682016040523d82523d6000602084013e611d49565b606091505b5061153e600082612458565b7fffffff000000000000000000000000000000000000000000000000000000000081167fde928f000000000000000000000000000000000000000000000000000000000014611dca57604051639d6741e360e01b8152600060048201526001600160e01b031982166024820152604401610861565b8060031a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600160f81b14915050919050565b919050565b816001600160a01b031663d3fc45d333303334600036604051602001611e319695949392919061355f565b60405160208183030381529060405280519060200120836040518363ffffffff1660e01b8152600401611e659291906133ae565b6020604051808303816000875af1925050508015611ea0575060408051601f3d908101601f19168201909252611e9d91810190613542565b60015b611edf573d808015611ece576040519150601f19603f3d011682016040523d82523d6000602084013e611ed3565b606091505b50611057600182612458565b6001600160e01b031981167fd3fc45d3000000000000000000000000000000000000000000000000000000001461105757604051639d6741e360e01b8152600160048201526001600160e01b031982166024820152604401610861565b606084611f5557611f4e84848461249e565b9050610cbe565b60018503611f8f576001600160a01b03841615611f8557604051631820c12560e11b815260040160405180910390fd5b611f4e83836125cf565b60028503611fc9576001600160a01b03841615611fbf57604051631820c12560e11b815260040160405180910390fd5b611f4e83836126e9565b60038503612013578215612009576040517f72f2bc6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f4e84836127d3565b6004850361205d578215612053576040517f5ac8313500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f4e84836128d7565b6040517f7583b3bc00000000000000000000000000000000000000000000000000000000815260048101869052602401610861565b60025443906000906120a69060c8906135c5565b905060006120b560c8836135c5565b9050808311806120c55750600254155b1561210d576002839055600380546001600160a01b03191690556040517f81b7f830f1f0084db6497c486cbe6974c86488dcc4e3738eab94ab6d6b1653e790600090a1505050565b81831015612151576040517f1b0809420000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610861565b61215b60006116f0565b60006002819055600380546001600160a01b03191690556040517fd1f66c3d2bc1993a86be5e3d33709d98f0442381befcedd29f578b9b2506b1ce9190a1505050565b6121b86001600160a01b038416631aed5a8560e21b611800565b1561105757604051631aed5a8560e21b81526001600160a01b03841690636bb56a14906121eb90859085906004016133ae565b6000604051808303816000875af115801561220a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112c091908101906132cf565b6003546001600160a01b03163314612278576040517f451e4528000000000000000000000000000000000000000000000000000000008152336004820152602401610861565b612281336116f0565b600380546001600160a01b03191690556000600255565b60008281526001602052604090206122b08282613626565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516122e1919061311a565b60405180910390a25050565b306001600160a01b0382160361232f576040517fe052a6f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b03929092169190911790556000600255565b60006001600160e01b031982167f629aa694000000000000000000000000000000000000000000000000000000001480610917575061091782612988565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156123cb575060009050600361244f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561241f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166124485760006001925092505061244f565b9150600090505b94509492505050565b8051156124685780518082602001fd5b6040517f8c6a8ae30000000000000000000000000000000000000000000000000000000081528215156004820152602401610861565b6060824710156124ca576040516301bf351f60e31b815247600482015260248101849052604401610861565b6124d3826136e6565b6001600160e01b031916846001600160a01b031660007f4810874456b8e6487bd861375cf6abd8e1c8bb5858c8ce36a86a04dabfac199e8660405161251a91815260200190565b60405180910390a4600080856001600160a01b0316858560405161253e9190613392565b60006040518083038185875af1925050503d806000811461257b576040519150601f19603f3d011682016040523d82523d6000602084013e612580565b606091505b50915091506125c582826040518060400160405280601681526020017f455243373235583a20556e6b6e6f776e204572726f72000000000000000000008152506129d6565b9695505050505050565b6060824710156125fb576040516301bf351f60e31b815247600482015260248101849052604401610861565b815160000361261d5760405163b81cd8d960e01b815260040160405180910390fd5b600082516020840185f090506001600160a01b038116612669576040517f0b07489b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000801b816001600160a01b031660017fa1fb700aaee2ae4a2ff6f91ce7eba292f89c2f5488b8ec4c5c5c8150692595c3876040516126aa91815260200190565b60405180910390a46040516bffffffffffffffffffffffff19606083901b16602082015260340160405160208183030381529060405291505092915050565b6060815160000361270d5760405163b81cd8d960e01b815260040160405180910390fd5b60006127268360208551612721919061371a565b6129ef565b905060006127438460006020875161273e919061371a565b612a55565b90506000612752868484612b7d565b905082816001600160a01b031660027fa1fb700aaee2ae4a2ff6f91ce7eba292f89c2f5488b8ec4c5c5c8150692595c38960405161279291815260200190565b60405180910390a46040516bffffffffffffffffffffffff19606083901b166020820152603401604051602081830303815290604052935050505092915050565b60606127de826136e6565b6001600160e01b031916836001600160a01b031660037f4810874456b8e6487bd861375cf6abd8e1c8bb5858c8ce36a86a04dabfac199e600060405161282691815260200190565b60405180910390a4600080846001600160a01b0316846040516128499190613392565b600060405180830381855afa9150503d8060008114612884576040519150601f19603f3d011682016040523d82523d6000602084013e612889565b606091505b50915091506128ce82826040518060400160405280601681526020017f455243373235583a20556e6b6e6f776e204572726f72000000000000000000008152506129d6565b95945050505050565b60606128e2826136e6565b6001600160e01b031916836001600160a01b031660047f4810874456b8e6487bd861375cf6abd8e1c8bb5858c8ce36a86a04dabfac199e600060405161292a91815260200190565b60405180910390a4600080846001600160a01b03168460405161294d9190613392565b600060405180830381855af49150503d8060008114612884576040519150601f19603f3d011682016040523d82523d6000602084013e612889565b60006001600160e01b031982167f7545acac00000000000000000000000000000000000000000000000000000000148061091757506301ffc9a760e01b6001600160e01b0319831614610917565b606083156129e5575081611a5e565b611a5e8383612c81565b60006129fc8260206135c5565b83511015612a4c5760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610861565b50016020015190565b606081612a6381601f6135c5565b1015612ab15760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610861565b612abb82846135c5565b84511015612b0b5760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610861565b606082158015612b2a5760405191506000825260208201604052612b74565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612b63578051835260209283019201612b4b565b5050858452601f01601f1916604052505b50949350505050565b600083471015612bcf5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610861565b8151600003612c205760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610861565b8282516020840186f590506001600160a01b038116611a5e5760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610861565b815115612c915781518083602001fd5b8060405162461bcd60e51b8152600401610861919061311a565b6001600160e01b03198116811461105a57600080fd5b600060208284031215612cd357600080fd5b8135611a5e81612cab565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612d1d57612d1d612cde565b604052919050565b600067ffffffffffffffff821115612d3f57612d3f612cde565b50601f01601f191660200190565b600082601f830112612d5e57600080fd5b8135612d71612d6c82612d25565b612cf4565b818152846020838601011115612d8657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215612db657600080fd5b82359150602083013567ffffffffffffffff811115612dd457600080fd5b612de085828601612d4d565b9150509250929050565b600067ffffffffffffffff821115612e0457612e04612cde565b5060051b60200190565b600082601f830112612e1f57600080fd5b81356020612e2f612d6c83612dea565b82815260059290921b84018101918181019086841115612e4e57600080fd5b8286015b84811015612e695780358352918301918301612e52565b509695505050505050565b80356001600160a01b0381168114611e0157600080fd5b600082601f830112612e9c57600080fd5b81356020612eac612d6c83612dea565b82815260059290921b84018101918181019086841115612ecb57600080fd5b8286015b84811015612e6957803567ffffffffffffffff811115612eef5760008081fd5b612efd8986838b0101612d4d565b845250918301918301612ecf565b60008060008060808587031215612f2157600080fd5b843567ffffffffffffffff80821115612f3957600080fd5b612f4588838901612e0e565b9550602091508187013581811115612f5c57600080fd5b8701601f81018913612f6d57600080fd5b8035612f7b612d6c82612dea565b81815260059190911b8201840190848101908b831115612f9a57600080fd5b928501925b82841015612fbf57612fb084612e74565b82529285019290850190612f9f565b97505050506040870135915080821115612fd857600080fd5b612fe488838901612e0e565b93506060870135915080821115612ffa57600080fd5b5061300787828801612e8b565b91505092959194509250565b60005b8381101561302e578181015183820152602001613016565b50506000910152565b6000815180845261304f816020860160208601613013565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156130b857603f198886030184526130a6858351613037565b9450928501929085019060010161308a565b5092979650505050505050565b600080600080608085870312156130db57600080fd5b843593506130eb60208601612e74565b925060408501359150606085013567ffffffffffffffff81111561310e57600080fd5b61300787828801612d4d565b602081526000611a5e6020830184613037565b60006020828403121561313f57600080fd5b5035919050565b6000806020838503121561315957600080fd5b823567ffffffffffffffff8082111561317157600080fd5b818501915085601f83011261318557600080fd5b81358181111561319457600080fd5b8660208260051b85010111156131a957600080fd5b60209290920196919550909350505050565b600080604083850312156131ce57600080fd5b823567ffffffffffffffff808211156131e657600080fd5b6131f286838701612e0e565b9350602085013591508082111561320857600080fd5b50612de085828601612e8b565b60006020828403121561322757600080fd5b813567ffffffffffffffff81111561323e57600080fd5b610cbe84828501612e0e565b60006020828403121561325c57600080fd5b611a5e82612e74565b805160208201516bffffffffffffffffffffffff1980821692919060148310156132995780818460140360031b1b83161693505b505050919050565b6001600160a01b03851681528360208201528260408201526080606082015260006125c56080830184613037565b6000602082840312156132e157600080fd5b815167ffffffffffffffff8111156132f857600080fd5b8201601f8101841361330957600080fd5b8051613317612d6c82612d25565b81815285602083850101111561332c57600080fd5b6128ce826020830160208601613013565b6040815260006133506040830185613037565b82810360208401526128ce8185613037565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516133a4818460208701613013565b9190910192915050565b828152604060208201526000610cbe6040830184613037565b6000602082840312156133d957600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b6040815260006134096040830184613037565b828103602093840152600081529190910192915050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261344d57600080fd5b83018035915067ffffffffffffffff82111561346857600080fd5b602001915036819003821315611aa357600080fd5b8183823760009101908152919050565b600181811c908216806134a157607f821691505b60208210810361153e57634e487b7160e01b600052602260045260246000fd5b8051602080830151919081101561153e5760001960209190910360031b1b16919050565b60006001600160a01b038089168352808816602084015280871660408401525084606083015260a060808301528260a0830152828460c0840137600060c0848401015260c0601f19601f8501168301019050979650505050505050565b60006020828403121561355457600080fd5b8151611a5e81612cab565b60006bffffffffffffffffffffffff19808960601b168352808860601b166014840152808760601b1660288401525084603c8301528284605c8401375060009101605c0190815295945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610917576109176135af565b601f82111561105757600081815260208120601f850160051c810160208610156135ff5750805b601f850160051c820191505b8181101561361e5782815560010161360b565b505050505050565b815167ffffffffffffffff81111561364057613640612cde565b6136548161364e845461348d565b846135d8565b602080601f83116001811461368957600084156136715750858301515b600019600386901b1c1916600185901b17855561361e565b600085815260208120601f198616915b828110156136b857888601518255948401946001909101908401613699565b50858210156136d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000815160208301516001600160e01b0319808216935060048310156132995760049290920360031b82901b161692915050565b81810381811115610917576109176135af56fea26469706673582212209e455126b1cb56eed250a294c1155f36b453fcd4385e8d56bca6515f10bf3c5664736f6c63430008110033",
674
+ "linkReferences": {},
675
+ "deployedLinkReferences": {}
676
+ }