@imtbl/sdk 0.15.1-alpha → 0.16.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1314,16 +1314,16 @@ const OrdersApiAxiosParamCreator = function (configuration) {
1314
1314
  * Retrieve signed fulfillment data based on the list of order IDs and corresponding fees.
1315
1315
  * @summary Retrieve fulfillment data for orders
1316
1316
  * @param {string} chainName
1317
- * @param {Array<FulfillmentDataRequestInner>} fulfillmentDataRequestInner
1317
+ * @param {Array<FulfillmentDataRequest>} fulfillmentDataRequest
1318
1318
  * @param {*} [options] Override http request option.
1319
1319
  * @throws {RequiredError}
1320
1320
  */
1321
- fulfillmentData: async (chainName, fulfillmentDataRequestInner, options = {}) => {
1321
+ fulfillmentData: async (chainName, fulfillmentDataRequest, options = {}) => {
1322
1322
  // verify required parameter 'chainName' is not null or undefined
1323
1323
  assertParamExists$1('fulfillmentData', 'chainName', chainName);
1324
- // verify required parameter 'fulfillmentDataRequestInner' is not null or undefined
1325
- assertParamExists$1('fulfillmentData', 'fulfillmentDataRequestInner', fulfillmentDataRequestInner);
1326
- const localVarPath = `/v1/chains/{chain_name}/orders/fulfillment_data`
1324
+ // verify required parameter 'fulfillmentDataRequest' is not null or undefined
1325
+ assertParamExists$1('fulfillmentData', 'fulfillmentDataRequest', fulfillmentDataRequest);
1326
+ const localVarPath = `/v1/chains/{chain_name}/orders/fulfillment-data`
1327
1327
  .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
1328
1328
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1329
1329
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
@@ -1338,7 +1338,7 @@ const OrdersApiAxiosParamCreator = function (configuration) {
1338
1338
  setSearchParams$1(localVarUrlObj, localVarQueryParameter);
1339
1339
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1340
1340
  localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
1341
- localVarRequestOptions.data = serializeDataIfNeeded$1(fulfillmentDataRequestInner, localVarRequestOptions, configuration);
1341
+ localVarRequestOptions.data = serializeDataIfNeeded$1(fulfillmentDataRequest, localVarRequestOptions, configuration);
1342
1342
  return {
1343
1343
  url: toPathString$1(localVarUrlObj),
1344
1344
  options: localVarRequestOptions,
@@ -1377,6 +1377,39 @@ const OrdersApiAxiosParamCreator = function (configuration) {
1377
1377
  options: localVarRequestOptions,
1378
1378
  };
1379
1379
  },
1380
+ /**
1381
+ * Get a single trade by ID
1382
+ * @summary Get a single trade by ID
1383
+ * @param {string} chainName
1384
+ * @param {string} tradeId Global Trade identifier
1385
+ * @param {*} [options] Override http request option.
1386
+ * @throws {RequiredError}
1387
+ */
1388
+ getTrade: async (chainName, tradeId, options = {}) => {
1389
+ // verify required parameter 'chainName' is not null or undefined
1390
+ assertParamExists$1('getTrade', 'chainName', chainName);
1391
+ // verify required parameter 'tradeId' is not null or undefined
1392
+ assertParamExists$1('getTrade', 'tradeId', tradeId);
1393
+ const localVarPath = `/v1/chains/{chain_name}/trades/{trade_id}`
1394
+ .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)))
1395
+ .replace(`{${"trade_id"}}`, encodeURIComponent(String(tradeId)));
1396
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1397
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
1398
+ let baseOptions;
1399
+ if (configuration) {
1400
+ baseOptions = configuration.baseOptions;
1401
+ }
1402
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
1403
+ const localVarHeaderParameter = {};
1404
+ const localVarQueryParameter = {};
1405
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
1406
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1407
+ localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
1408
+ return {
1409
+ url: toPathString$1(localVarUrlObj),
1410
+ options: localVarRequestOptions,
1411
+ };
1412
+ },
1380
1413
  /**
1381
1414
  * List all listings
1382
1415
  * @summary List all listings
@@ -1438,6 +1471,51 @@ const OrdersApiAxiosParamCreator = function (configuration) {
1438
1471
  options: localVarRequestOptions,
1439
1472
  };
1440
1473
  },
1474
+ /**
1475
+ * List all trades
1476
+ * @summary List all trades
1477
+ * @param {string} chainName
1478
+ * @param {number} [pageSize] Maximum number of trades to return per page
1479
+ * @param {'created_at'} [sortBy] Trade field to sort by
1480
+ * @param {'asc' | 'desc'} [sortDirection] Ascending or descending direction for sort
1481
+ * @param {string} [pageCursor] Page cursor to retrieve previous or next page. Use the value returned in the response.
1482
+ * @param {*} [options] Override http request option.
1483
+ * @throws {RequiredError}
1484
+ */
1485
+ listTrades: async (chainName, pageSize, sortBy, sortDirection, pageCursor, options = {}) => {
1486
+ // verify required parameter 'chainName' is not null or undefined
1487
+ assertParamExists$1('listTrades', 'chainName', chainName);
1488
+ const localVarPath = `/v1/chains/{chain_name}/trades`
1489
+ .replace(`{${"chain_name"}}`, encodeURIComponent(String(chainName)));
1490
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1491
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
1492
+ let baseOptions;
1493
+ if (configuration) {
1494
+ baseOptions = configuration.baseOptions;
1495
+ }
1496
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
1497
+ const localVarHeaderParameter = {};
1498
+ const localVarQueryParameter = {};
1499
+ if (pageSize !== undefined) {
1500
+ localVarQueryParameter['page_size'] = pageSize;
1501
+ }
1502
+ if (sortBy !== undefined) {
1503
+ localVarQueryParameter['sort_by'] = sortBy;
1504
+ }
1505
+ if (sortDirection !== undefined) {
1506
+ localVarQueryParameter['sort_direction'] = sortDirection;
1507
+ }
1508
+ if (pageCursor !== undefined) {
1509
+ localVarQueryParameter['page_cursor'] = pageCursor;
1510
+ }
1511
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
1512
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1513
+ localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
1514
+ return {
1515
+ url: toPathString$1(localVarUrlObj),
1516
+ options: localVarRequestOptions,
1517
+ };
1518
+ },
1441
1519
  };
1442
1520
  };
1443
1521
  /**
@@ -1463,12 +1541,12 @@ const OrdersApiFp = function (configuration) {
1463
1541
  * Retrieve signed fulfillment data based on the list of order IDs and corresponding fees.
1464
1542
  * @summary Retrieve fulfillment data for orders
1465
1543
  * @param {string} chainName
1466
- * @param {Array<FulfillmentDataRequestInner>} fulfillmentDataRequestInner
1544
+ * @param {Array<FulfillmentDataRequest>} fulfillmentDataRequest
1467
1545
  * @param {*} [options] Override http request option.
1468
1546
  * @throws {RequiredError}
1469
1547
  */
1470
- async fulfillmentData(chainName, fulfillmentDataRequestInner, options) {
1471
- const localVarAxiosArgs = await localVarAxiosParamCreator.fulfillmentData(chainName, fulfillmentDataRequestInner, options);
1548
+ async fulfillmentData(chainName, fulfillmentDataRequest, options) {
1549
+ const localVarAxiosArgs = await localVarAxiosParamCreator.fulfillmentData(chainName, fulfillmentDataRequest, options);
1472
1550
  return createRequestFunction$1(localVarAxiosArgs, globalAxios$1, BASE_PATH$1, configuration);
1473
1551
  },
1474
1552
  /**
@@ -1483,6 +1561,18 @@ const OrdersApiFp = function (configuration) {
1483
1561
  const localVarAxiosArgs = await localVarAxiosParamCreator.getListing(chainName, listingId, options);
1484
1562
  return createRequestFunction$1(localVarAxiosArgs, globalAxios$1, BASE_PATH$1, configuration);
1485
1563
  },
1564
+ /**
1565
+ * Get a single trade by ID
1566
+ * @summary Get a single trade by ID
1567
+ * @param {string} chainName
1568
+ * @param {string} tradeId Global Trade identifier
1569
+ * @param {*} [options] Override http request option.
1570
+ * @throws {RequiredError}
1571
+ */
1572
+ async getTrade(chainName, tradeId, options) {
1573
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getTrade(chainName, tradeId, options);
1574
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios$1, BASE_PATH$1, configuration);
1575
+ },
1486
1576
  /**
1487
1577
  * List all listings
1488
1578
  * @summary List all listings
@@ -1502,6 +1592,21 @@ const OrdersApiFp = function (configuration) {
1502
1592
  const localVarAxiosArgs = await localVarAxiosParamCreator.listListings(chainName, status, sellItemContractAddress, buyItemContractAddress, sellItemTokenId, pageSize, sortBy, sortDirection, pageCursor, options);
1503
1593
  return createRequestFunction$1(localVarAxiosArgs, globalAxios$1, BASE_PATH$1, configuration);
1504
1594
  },
1595
+ /**
1596
+ * List all trades
1597
+ * @summary List all trades
1598
+ * @param {string} chainName
1599
+ * @param {number} [pageSize] Maximum number of trades to return per page
1600
+ * @param {'created_at'} [sortBy] Trade field to sort by
1601
+ * @param {'asc' | 'desc'} [sortDirection] Ascending or descending direction for sort
1602
+ * @param {string} [pageCursor] Page cursor to retrieve previous or next page. Use the value returned in the response.
1603
+ * @param {*} [options] Override http request option.
1604
+ * @throws {RequiredError}
1605
+ */
1606
+ async listTrades(chainName, pageSize, sortBy, sortDirection, pageCursor, options) {
1607
+ const localVarAxiosArgs = await localVarAxiosParamCreator.listTrades(chainName, pageSize, sortBy, sortDirection, pageCursor, options);
1608
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios$1, BASE_PATH$1, configuration);
1609
+ },
1505
1610
  };
1506
1611
  };
1507
1612
  /**
@@ -1526,12 +1631,12 @@ const OrdersApiFactory = function (configuration, basePath, axios) {
1526
1631
  * Retrieve signed fulfillment data based on the list of order IDs and corresponding fees.
1527
1632
  * @summary Retrieve fulfillment data for orders
1528
1633
  * @param {string} chainName
1529
- * @param {Array<FulfillmentDataRequestInner>} fulfillmentDataRequestInner
1634
+ * @param {Array<FulfillmentDataRequest>} fulfillmentDataRequest
1530
1635
  * @param {*} [options] Override http request option.
1531
1636
  * @throws {RequiredError}
1532
1637
  */
1533
- fulfillmentData(chainName, fulfillmentDataRequestInner, options) {
1534
- return localVarFp.fulfillmentData(chainName, fulfillmentDataRequestInner, options).then((request) => request(axios, basePath));
1638
+ fulfillmentData(chainName, fulfillmentDataRequest, options) {
1639
+ return localVarFp.fulfillmentData(chainName, fulfillmentDataRequest, options).then((request) => request(axios, basePath));
1535
1640
  },
1536
1641
  /**
1537
1642
  * Get a single listing by ID
@@ -1544,6 +1649,17 @@ const OrdersApiFactory = function (configuration, basePath, axios) {
1544
1649
  getListing(chainName, listingId, options) {
1545
1650
  return localVarFp.getListing(chainName, listingId, options).then((request) => request(axios, basePath));
1546
1651
  },
1652
+ /**
1653
+ * Get a single trade by ID
1654
+ * @summary Get a single trade by ID
1655
+ * @param {string} chainName
1656
+ * @param {string} tradeId Global Trade identifier
1657
+ * @param {*} [options] Override http request option.
1658
+ * @throws {RequiredError}
1659
+ */
1660
+ getTrade(chainName, tradeId, options) {
1661
+ return localVarFp.getTrade(chainName, tradeId, options).then((request) => request(axios, basePath));
1662
+ },
1547
1663
  /**
1548
1664
  * List all listings
1549
1665
  * @summary List all listings
@@ -1562,6 +1678,20 @@ const OrdersApiFactory = function (configuration, basePath, axios) {
1562
1678
  listListings(chainName, status, sellItemContractAddress, buyItemContractAddress, sellItemTokenId, pageSize, sortBy, sortDirection, pageCursor, options) {
1563
1679
  return localVarFp.listListings(chainName, status, sellItemContractAddress, buyItemContractAddress, sellItemTokenId, pageSize, sortBy, sortDirection, pageCursor, options).then((request) => request(axios, basePath));
1564
1680
  },
1681
+ /**
1682
+ * List all trades
1683
+ * @summary List all trades
1684
+ * @param {string} chainName
1685
+ * @param {number} [pageSize] Maximum number of trades to return per page
1686
+ * @param {'created_at'} [sortBy] Trade field to sort by
1687
+ * @param {'asc' | 'desc'} [sortDirection] Ascending or descending direction for sort
1688
+ * @param {string} [pageCursor] Page cursor to retrieve previous or next page. Use the value returned in the response.
1689
+ * @param {*} [options] Override http request option.
1690
+ * @throws {RequiredError}
1691
+ */
1692
+ listTrades(chainName, pageSize, sortBy, sortDirection, pageCursor, options) {
1693
+ return localVarFp.listTrades(chainName, pageSize, sortBy, sortDirection, pageCursor, options).then((request) => request(axios, basePath));
1694
+ },
1565
1695
  };
1566
1696
  };
1567
1697
  /**
@@ -1591,7 +1721,7 @@ class OrdersApi extends BaseAPI$1 {
1591
1721
  * @memberof OrdersApi
1592
1722
  */
1593
1723
  fulfillmentData(requestParameters, options) {
1594
- return OrdersApiFp(this.configuration).fulfillmentData(requestParameters.chainName, requestParameters.fulfillmentDataRequestInner, options).then((request) => request(this.axios, this.basePath));
1724
+ return OrdersApiFp(this.configuration).fulfillmentData(requestParameters.chainName, requestParameters.fulfillmentDataRequest, options).then((request) => request(this.axios, this.basePath));
1595
1725
  }
1596
1726
  /**
1597
1727
  * Get a single listing by ID
@@ -1604,6 +1734,17 @@ class OrdersApi extends BaseAPI$1 {
1604
1734
  getListing(requestParameters, options) {
1605
1735
  return OrdersApiFp(this.configuration).getListing(requestParameters.chainName, requestParameters.listingId, options).then((request) => request(this.axios, this.basePath));
1606
1736
  }
1737
+ /**
1738
+ * Get a single trade by ID
1739
+ * @summary Get a single trade by ID
1740
+ * @param {OrdersApiGetTradeRequest} requestParameters Request parameters.
1741
+ * @param {*} [options] Override http request option.
1742
+ * @throws {RequiredError}
1743
+ * @memberof OrdersApi
1744
+ */
1745
+ getTrade(requestParameters, options) {
1746
+ return OrdersApiFp(this.configuration).getTrade(requestParameters.chainName, requestParameters.tradeId, options).then((request) => request(this.axios, this.basePath));
1747
+ }
1607
1748
  /**
1608
1749
  * List all listings
1609
1750
  * @summary List all listings
@@ -1615,6 +1756,17 @@ class OrdersApi extends BaseAPI$1 {
1615
1756
  listListings(requestParameters, options) {
1616
1757
  return OrdersApiFp(this.configuration).listListings(requestParameters.chainName, requestParameters.status, requestParameters.sellItemContractAddress, requestParameters.buyItemContractAddress, requestParameters.sellItemTokenId, requestParameters.pageSize, requestParameters.sortBy, requestParameters.sortDirection, requestParameters.pageCursor, options).then((request) => request(this.axios, this.basePath));
1617
1758
  }
1759
+ /**
1760
+ * List all trades
1761
+ * @summary List all trades
1762
+ * @param {OrdersApiListTradesRequest} requestParameters Request parameters.
1763
+ * @param {*} [options] Override http request option.
1764
+ * @throws {RequiredError}
1765
+ * @memberof OrdersApi
1766
+ */
1767
+ listTrades(requestParameters, options) {
1768
+ return OrdersApiFp(this.configuration).listTrades(requestParameters.chainName, requestParameters.pageSize, requestParameters.sortBy, requestParameters.sortDirection, requestParameters.pageCursor, options).then((request) => request(this.axios, this.basePath));
1769
+ }
1618
1770
  }
1619
1771
 
1620
1772
  /* tslint:disable */
@@ -1669,6 +1821,38 @@ const PassportApiAxiosParamCreator = function (configuration) {
1669
1821
  options: localVarRequestOptions,
1670
1822
  };
1671
1823
  },
1824
+ /**
1825
+ * Get all the Ethereum linked addresses for a user based on its userId
1826
+ * @summary Get Ethereum linked addresses for a user
1827
+ * @param {string} userId The user\&#39;s userId
1828
+ * @param {*} [options] Override http request option.
1829
+ * @throws {RequiredError}
1830
+ */
1831
+ getLinkedAddresses: async (userId, options = {}) => {
1832
+ // verify required parameter 'userId' is not null or undefined
1833
+ assertParamExists$1('getLinkedAddresses', 'userId', userId);
1834
+ const localVarPath = `/passport-mr/v1/users/{userId}/linked-addresses`
1835
+ .replace(`{${"userId"}}`, encodeURIComponent(String(userId)));
1836
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1837
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL$1);
1838
+ let baseOptions;
1839
+ if (configuration) {
1840
+ baseOptions = configuration.baseOptions;
1841
+ }
1842
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
1843
+ const localVarHeaderParameter = {};
1844
+ const localVarQueryParameter = {};
1845
+ // authentication BearerAuth required
1846
+ // http bearer authentication required
1847
+ await setBearerAuthToObject$1(localVarHeaderParameter, configuration);
1848
+ setSearchParams$1(localVarUrlObj, localVarQueryParameter);
1849
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1850
+ localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
1851
+ return {
1852
+ url: toPathString$1(localVarUrlObj),
1853
+ options: localVarRequestOptions,
1854
+ };
1855
+ },
1672
1856
  };
1673
1857
  };
1674
1858
  /**
@@ -1689,6 +1873,17 @@ const PassportApiFp = function (configuration) {
1689
1873
  const localVarAxiosArgs = await localVarAxiosParamCreator.createCounterfactualAddress(createCounterfactualAddressRequest, options);
1690
1874
  return createRequestFunction$1(localVarAxiosArgs, globalAxios$1, BASE_PATH$1, configuration);
1691
1875
  },
1876
+ /**
1877
+ * Get all the Ethereum linked addresses for a user based on its userId
1878
+ * @summary Get Ethereum linked addresses for a user
1879
+ * @param {string} userId The user\&#39;s userId
1880
+ * @param {*} [options] Override http request option.
1881
+ * @throws {RequiredError}
1882
+ */
1883
+ async getLinkedAddresses(userId, options) {
1884
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getLinkedAddresses(userId, options);
1885
+ return createRequestFunction$1(localVarAxiosArgs, globalAxios$1, BASE_PATH$1, configuration);
1886
+ },
1692
1887
  };
1693
1888
  };
1694
1889
  /**
@@ -1708,6 +1903,16 @@ const PassportApiFactory = function (configuration, basePath, axios) {
1708
1903
  createCounterfactualAddress(createCounterfactualAddressRequest, options) {
1709
1904
  return localVarFp.createCounterfactualAddress(createCounterfactualAddressRequest, options).then((request) => request(axios, basePath));
1710
1905
  },
1906
+ /**
1907
+ * Get all the Ethereum linked addresses for a user based on its userId
1908
+ * @summary Get Ethereum linked addresses for a user
1909
+ * @param {string} userId The user\&#39;s userId
1910
+ * @param {*} [options] Override http request option.
1911
+ * @throws {RequiredError}
1912
+ */
1913
+ getLinkedAddresses(userId, options) {
1914
+ return localVarFp.getLinkedAddresses(userId, options).then((request) => request(axios, basePath));
1915
+ },
1711
1916
  };
1712
1917
  };
1713
1918
  /**
@@ -1728,6 +1933,17 @@ class PassportApi extends BaseAPI$1 {
1728
1933
  createCounterfactualAddress(requestParameters, options) {
1729
1934
  return PassportApiFp(this.configuration).createCounterfactualAddress(requestParameters.createCounterfactualAddressRequest, options).then((request) => request(this.axios, this.basePath));
1730
1935
  }
1936
+ /**
1937
+ * Get all the Ethereum linked addresses for a user based on its userId
1938
+ * @summary Get Ethereum linked addresses for a user
1939
+ * @param {PassportApiGetLinkedAddressesRequest} requestParameters Request parameters.
1940
+ * @param {*} [options] Override http request option.
1941
+ * @throws {RequiredError}
1942
+ * @memberof PassportApi
1943
+ */
1944
+ getLinkedAddresses(requestParameters, options) {
1945
+ return PassportApiFp(this.configuration).getLinkedAddresses(requestParameters.userId, options).then((request) => request(this.axios, this.basePath));
1946
+ }
1731
1947
  }
1732
1948
 
1733
1949
  /* tslint:disable */
@@ -2157,23 +2373,6 @@ const CollectionContractType = {
2157
2373
  Erc721: 'ERC721'
2158
2374
  };
2159
2375
 
2160
- /* tslint:disable */
2161
- /* eslint-disable */
2162
- /**
2163
- * Immutable zkEVM API
2164
- * Immutable Multi Rollup API
2165
- *
2166
- * The version of the OpenAPI document: 1.0.0
2167
- * Contact: support@immutable.com
2168
- *
2169
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2170
- * https://openapi-generator.tech
2171
- * Do not edit the class manually.
2172
- */
2173
- const CreateOrderProtocolDataOrderTypeEnum = {
2174
- FullRestricted: 'FULL_RESTRICTED'
2175
- };
2176
-
2177
2376
  /* tslint:disable */
2178
2377
  /* eslint-disable */
2179
2378
  /**
@@ -2222,7 +2421,10 @@ const ERC721ItemItemTypeEnum = {
2222
2421
  * Do not edit the class manually.
2223
2422
  */
2224
2423
  const FeeFeeTypeEnum = {
2225
- Royalty: 'ROYALTY'
2424
+ Royalty: 'ROYALTY',
2425
+ MakerMarketplace: 'MAKER_MARKETPLACE',
2426
+ TakerMarketplace: 'TAKER_MARKETPLACE',
2427
+ Protocol: 'PROTOCOL'
2226
2428
  };
2227
2429
 
2228
2430
  /* tslint:disable */
@@ -2291,6 +2493,23 @@ const OrderStatus$1 = {
2291
2493
  Expired: 'EXPIRED'
2292
2494
  };
2293
2495
 
2496
+ /* tslint:disable */
2497
+ /* eslint-disable */
2498
+ /**
2499
+ * Immutable zkEVM API
2500
+ * Immutable Multi Rollup API
2501
+ *
2502
+ * The version of the OpenAPI document: 1.0.0
2503
+ * Contact: support@immutable.com
2504
+ *
2505
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2506
+ * https://openapi-generator.tech
2507
+ * Do not edit the class manually.
2508
+ */
2509
+ const ProtocolDataOrderTypeEnum = {
2510
+ FullRestricted: 'FULL_RESTRICTED'
2511
+ };
2512
+
2294
2513
  /* tslint:disable */
2295
2514
  /* eslint-disable */
2296
2515
  /**
@@ -2367,7 +2586,6 @@ var index = /*#__PURE__*/Object.freeze({
2367
2586
  CollectionsApiFactory: CollectionsApiFactory,
2368
2587
  CollectionsApiFp: CollectionsApiFp,
2369
2588
  Configuration: Configuration$2,
2370
- CreateOrderProtocolDataOrderTypeEnum: CreateOrderProtocolDataOrderTypeEnum,
2371
2589
  ERC20ItemItemTypeEnum: ERC20ItemItemTypeEnum,
2372
2590
  ERC721ItemItemTypeEnum: ERC721ItemItemTypeEnum,
2373
2591
  FeeFeeTypeEnum: FeeFeeTypeEnum,
@@ -2390,6 +2608,7 @@ var index = /*#__PURE__*/Object.freeze({
2390
2608
  PassportApiAxiosParamCreator: PassportApiAxiosParamCreator,
2391
2609
  PassportApiFactory: PassportApiFactory,
2392
2610
  PassportApiFp: PassportApiFp,
2611
+ ProtocolDataOrderTypeEnum: ProtocolDataOrderTypeEnum,
2393
2612
  SaleFeeTypeEnum: SaleFeeTypeEnum,
2394
2613
  TokenContractType: TokenContractType,
2395
2614
  TokensApi: TokensApi,
@@ -2420,7 +2639,7 @@ class MultiRollupApiClients {
2420
2639
  }
2421
2640
 
2422
2641
  // eslint-disable-next-line @typescript-eslint/naming-convention
2423
- const defaultHeaders$1 = { 'x-sdk-version': 'ts-immutable-sdk-0.15.1-alpha' };
2642
+ const defaultHeaders$1 = { 'x-sdk-version': 'ts-immutable-sdk-0.16.0-alpha.1' };
2424
2643
  const createConfig = ({ basePath, headers, }) => {
2425
2644
  if (!basePath.trim()) {
2426
2645
  throw Error('basePath can not be empty');
@@ -2480,7 +2699,7 @@ class APIError extends Error {
2480
2699
 
2481
2700
  /* eslint-disable implicit-arrow-linebreak */
2482
2701
  const defaultHeaders = {
2483
- sdkVersion: 'ts-immutable-sdk-multi-rollup-api-client-0.15.1-alpha',
2702
+ sdkVersion: 'ts-immutable-sdk-multi-rollup-api-client-0.16.0-alpha.1',
2484
2703
  };
2485
2704
  /**
2486
2705
  * createAPIConfiguration to create a custom Configuration
@@ -2752,7 +2971,7 @@ const createImmutableXConfiguration = ({ basePath, chainID, coreContractAddress,
2752
2971
  chainID,
2753
2972
  coreContractAddress,
2754
2973
  registrationContractAddress,
2755
- sdkVersion: 'ts-immutable-sdk-0.15.1-alpha',
2974
+ sdkVersion: 'ts-immutable-sdk-0.16.0-alpha.1',
2756
2975
  });
2757
2976
  /**
2758
2977
  * Sets `sdkVersion` at the time of build
@@ -7204,6 +7423,12 @@ class AuthManager {
7204
7423
  userAdminAddress: idTokenPayload?.passport?.imx_user_admin_address,
7205
7424
  };
7206
7425
  }
7426
+ if (idTokenPayload?.passport?.zkevm_eth_address) {
7427
+ user.zkEvm = {
7428
+ ethAddress: idTokenPayload?.passport?.zkevm_eth_address,
7429
+ userAdminAddress: idTokenPayload?.passport?.zkevm_user_admin_address,
7430
+ };
7431
+ }
7207
7432
  return user;
7208
7433
  };
7209
7434
  async login() {
@@ -7347,8 +7572,8 @@ class AuthManager {
7347
7572
  const refreshToken = tokenResponse?.refresh_token ?? null;
7348
7573
  if (refreshToken) {
7349
7574
  // Token is no longer valid, but refresh token can be used to a new one
7350
- const newTokenResponse = await this.refreshToken(refreshToken);
7351
- return AuthManager.mapDeviceTokenResponseToDomainUserModel(newTokenResponse);
7575
+ const user = await this.refreshToken(refreshToken);
7576
+ return user;
7352
7577
  }
7353
7578
  return null;
7354
7579
  }, PassportErrorType.AUTHENTICATION_ERROR);
@@ -7359,7 +7584,8 @@ class AuthManager {
7359
7584
  grant_type: 'refresh_token',
7360
7585
  refresh_token: refreshToken,
7361
7586
  }, formUrlEncodedHeader);
7362
- return response.data;
7587
+ const newTokenResponse = response.data;
7588
+ return AuthManager.mapDeviceTokenResponseToDomainUserModel(newTokenResponse);
7363
7589
  }
7364
7590
  async logout() {
7365
7591
  return withPassportError(async () => {
@@ -8518,7 +8744,7 @@ class RelayerClient {
8518
8744
  }
8519
8745
 
8520
8746
  const MESSAGE_TO_SIGN = 'Only sign this message from Immutable Passport';
8521
- async function registerZkEvmUser({ authManager, magicProvider, multiRollupApiClients, accessToken, }) {
8747
+ async function registerZkEvmUser({ authManager, config, magicProvider, multiRollupApiClients, accessToken, }) {
8522
8748
  const web3Provider = new providers.Web3Provider(magicProvider);
8523
8749
  const ethSigner = web3Provider.getSigner();
8524
8750
  const ethereumAddress = await ethSigner.getAddress();
@@ -8535,7 +8761,17 @@ async function registerZkEvmUser({ authManager, magicProvider, multiRollupApiCli
8535
8761
  catch (error) {
8536
8762
  throw new JsonRpcError(RpcErrorCode.INTERNAL_ERROR, `Failed to create counterfactual address: ${error}`);
8537
8763
  }
8538
- const user = await authManager.loginSilent();
8764
+ let user;
8765
+ if (config.crossSdkBridgeEnabled) {
8766
+ const credentials = authManager.checkStoredDeviceFlowCredentials();
8767
+ if (!credentials || !credentials.refresh_token) {
8768
+ throw new JsonRpcError(RpcErrorCode.INTERNAL_ERROR, 'Cross SDK bridge: Failed to refresh user details');
8769
+ }
8770
+ user = await authManager.refreshToken(credentials.refresh_token);
8771
+ }
8772
+ else {
8773
+ user = await authManager.loginSilent();
8774
+ }
8539
8775
  if (!user?.zkEvm) {
8540
8776
  throw new JsonRpcError(RpcErrorCode.INTERNAL_ERROR, 'Failed to refresh user details');
8541
8777
  }
@@ -8543,7 +8779,7 @@ async function registerZkEvmUser({ authManager, magicProvider, multiRollupApiCli
8543
8779
  }
8544
8780
 
8545
8781
  const loginZkEvmUser = async ({ authManager, config, magicAdapter, multiRollupApiClients, }) => {
8546
- const user = await authManager.getUser() || await authManager.login();
8782
+ const user = await authManager.getUser() || await authManager.getUserDeviceFlow() || await authManager.login();
8547
8783
  if (!user.idToken) {
8548
8784
  throw new Error('User is missing idToken');
8549
8785
  }
@@ -8552,6 +8788,7 @@ const loginZkEvmUser = async ({ authManager, config, magicAdapter, multiRollupAp
8552
8788
  // Generate counterfactual address and retrieve updated Auth0 user
8553
8789
  const userZkevm = await registerZkEvmUser({
8554
8790
  authManager,
8791
+ config,
8555
8792
  magicProvider,
8556
8793
  multiRollupApiClients,
8557
8794
  accessToken: user.accessToken,
@@ -8950,6 +9187,17 @@ class Passport {
8950
9187
  const user = await this.authManager.getUser();
8951
9188
  return user?.accessToken;
8952
9189
  }
9190
+ async getLinkedAddresses() {
9191
+ const user = await this.authManager.getUser();
9192
+ if (!user?.profile.sub) {
9193
+ return [];
9194
+ }
9195
+ const headers = { Authorization: `Bearer ${user.accessToken}` };
9196
+ const linkedAddressesResult = await this.multiRollupApiClients.passportApi.getLinkedAddresses({
9197
+ userId: user?.profile.sub,
9198
+ }, { headers });
9199
+ return linkedAddressesResult.data.linkedAddresses;
9200
+ }
8953
9201
  }
8954
9202
 
8955
9203
  var passport = /*#__PURE__*/Object.freeze({
@@ -9447,6 +9695,54 @@ class OrdersService {
9447
9695
  },
9448
9696
  });
9449
9697
  }
9698
+ /**
9699
+ * List all trades
9700
+ * List all trades
9701
+ * @returns ListTradeResult OK response.
9702
+ * @throws ApiError
9703
+ */
9704
+ listTrades({ chainName, accountAddress, pageSize, sortBy, sortDirection, pageCursor, }) {
9705
+ return this.httpRequest.request({
9706
+ method: 'GET',
9707
+ url: '/v1/chains/{chain_name}/trades',
9708
+ path: {
9709
+ 'chain_name': chainName,
9710
+ },
9711
+ query: {
9712
+ 'account_address': accountAddress,
9713
+ 'page_size': pageSize,
9714
+ 'sort_by': sortBy,
9715
+ 'sort_direction': sortDirection,
9716
+ 'page_cursor': pageCursor,
9717
+ },
9718
+ errors: {
9719
+ 400: `Bad Request (400)`,
9720
+ 404: `The specified resource was not found (404)`,
9721
+ 500: `Internal Server Error (500)`,
9722
+ },
9723
+ });
9724
+ }
9725
+ /**
9726
+ * Get a single trade by ID
9727
+ * Get a single trade by ID
9728
+ * @returns TradeResult OK response.
9729
+ * @throws ApiError
9730
+ */
9731
+ getTrade({ chainName, tradeId, }) {
9732
+ return this.httpRequest.request({
9733
+ method: 'GET',
9734
+ url: '/v1/chains/{chain_name}/trades/{trade_id}',
9735
+ path: {
9736
+ 'chain_name': chainName,
9737
+ 'trade_id': tradeId,
9738
+ },
9739
+ errors: {
9740
+ 400: `Bad Request (400)`,
9741
+ 404: `The specified resource was not found (404)`,
9742
+ 500: `Internal Server Error (500)`,
9743
+ },
9744
+ });
9745
+ }
9450
9746
  }
9451
9747
 
9452
9748
  class OrderBookClient {
@@ -9583,10 +9879,61 @@ function mapFromOpenApiOrder(order) {
9583
9879
  updateTime: order.update_time,
9584
9880
  };
9585
9881
  }
9586
- function mapFromOpenApiPage(page) {
9882
+ function mapFromOpenApiTrade(trade) {
9883
+ const buyItems = trade.buy.map((item) => {
9884
+ if (item.item_type === 'ERC20') {
9885
+ return {
9886
+ type: 'ERC20',
9887
+ contractAddress: item.contract_address,
9888
+ amount: item.start_amount,
9889
+ };
9890
+ }
9891
+ if (item.item_type === 'NATIVE') {
9892
+ return {
9893
+ type: 'NATIVE',
9894
+ amount: item.start_amount,
9895
+ };
9896
+ }
9897
+ throw new Error('Buy items must be either ERC20 or NATIVE');
9898
+ });
9899
+ const sellItems = trade.sell.map((item) => {
9900
+ if (item.item_type === 'ERC721') {
9901
+ return {
9902
+ type: 'ERC721',
9903
+ contractAddress: item.contract_address,
9904
+ tokenId: item.token_id,
9905
+ };
9906
+ }
9907
+ throw new Error('Sell items must ERC721');
9908
+ });
9587
9909
  return {
9588
- nextCursor: page.next_cursor,
9589
- previousCursor: page.previous_cursor,
9910
+ id: trade.id,
9911
+ orderId: trade.order_id,
9912
+ buy: buyItems,
9913
+ sell: sellItems,
9914
+ buyerFees: trade.buyer_fees.map((fee) => ({
9915
+ amount: fee.amount,
9916
+ recipient: fee.recipient,
9917
+ type: fee.fee_type,
9918
+ })),
9919
+ chain: trade.chain,
9920
+ indexedAt: trade.indexed_at,
9921
+ blockchainMetadata: {
9922
+ blockNumber: trade.blockchain_metadata.block_number,
9923
+ logIndex: trade.blockchain_metadata.log_index,
9924
+ transactionHash: trade.blockchain_metadata.transaction_hash,
9925
+ transactionIndex: trade.blockchain_metadata.transaction_index,
9926
+ },
9927
+ buyerAddress: trade.buyer_address,
9928
+ makerAddress: trade.maker_address,
9929
+ sellerAddress: trade.seller_address,
9930
+ takerAddress: trade.taker_address,
9931
+ };
9932
+ }
9933
+ function mapFromOpenApiPage(page) {
9934
+ return {
9935
+ nextCursor: page.next_cursor,
9936
+ previousCursor: page.previous_cursor,
9590
9937
  };
9591
9938
  }
9592
9939
 
@@ -9912,12 +10259,24 @@ class ImmutableApiClient {
9912
10259
  listingId,
9913
10260
  });
9914
10261
  }
10262
+ async getTrade(tradeId) {
10263
+ return this.orderbookService.getTrade({
10264
+ chainName: this.chainName,
10265
+ tradeId,
10266
+ });
10267
+ }
9915
10268
  async listListings(listOrderParams) {
9916
10269
  return this.orderbookService.listListings({
9917
10270
  chainName: this.chainName,
9918
10271
  ...listOrderParams,
9919
10272
  });
9920
10273
  }
10274
+ async listTrades(listTradesParams) {
10275
+ return this.orderbookService.listTrades({
10276
+ chainName: this.chainName,
10277
+ ...listTradesParams,
10278
+ });
10279
+ }
9921
10280
  async createListing({ orderHash, orderComponents, orderSignature, makerFee, }) {
9922
10281
  if (orderComponents.offer.length !== 1) {
9923
10282
  throw new Error('Only one item can be listed at a time');
@@ -10083,6 +10442,17 @@ class Orderbook {
10083
10442
  result: mapFromOpenApiOrder(apiListing.result),
10084
10443
  };
10085
10444
  }
10445
+ /**
10446
+ * Get a trade by ID
10447
+ * @param {string} tradeId - The tradeId to find.
10448
+ * @return {TradeResult} The returned order result.
10449
+ */
10450
+ async getTrade(tradeId) {
10451
+ const apiListing = await this.apiClient.getTrade(tradeId);
10452
+ return {
10453
+ result: mapFromOpenApiTrade(apiListing.result),
10454
+ };
10455
+ }
10086
10456
  /**
10087
10457
  * List orders. This method is used to get a list of orders filtered by conditions specified
10088
10458
  * in the params object.
@@ -10096,6 +10466,19 @@ class Orderbook {
10096
10466
  result: apiListings.result.map(mapFromOpenApiOrder),
10097
10467
  };
10098
10468
  }
10469
+ /**
10470
+ * List trades. This method is used to get a list of trades filtered by conditions specified
10471
+ * in the params object
10472
+ * @param {ListTradesParams} listTradesParams - Filtering, ordering and page parameters.
10473
+ * @return {ListTradesResult} The paged trades.
10474
+ */
10475
+ async listTrades(listTradesParams) {
10476
+ const apiListings = await this.apiClient.listTrades(listTradesParams);
10477
+ return {
10478
+ page: mapFromOpenApiPage(apiListings.page),
10479
+ result: apiListings.result.map(mapFromOpenApiTrade),
10480
+ };
10481
+ }
10099
10482
  /**
10100
10483
  * Get required transactions and messages for signing prior to creating a listing
10101
10484
  * through the createListing method
@@ -11277,8 +11660,7 @@ const ETH_MAINNET_CHAIN_ID = '1';
11277
11660
  /**
11278
11661
  * @constant {string} ZKEVM_DEVNET_CHAIN_ID - The chain ID for the zkEVM devnet (EIP-155 compatible format).
11279
11662
  */
11280
- const ZKEVM_DEVNET_CHAIN_ID = '13433';
11281
- /**
11663
+ const ZKEVM_DEVNET_CHAIN_ID = '13473';
11282
11664
  /**
11283
11665
  * @constant {string} ZKEVM_TESTNET_CHAIN_ID - The chain ID for the zkEVM testnet (EIP-155 compatible format).
11284
11666
  */
@@ -23559,10 +23941,10 @@ const SUPPORTED_BRIDGES_FOR_ENVIRONMENT = {
23559
23941
  */
23560
23942
  const CONTRACTS_FOR_BRIDGE = new Map()
23561
23943
  .set(ETH_SEPOLIA_TO_ZKEVM_DEVNET, {
23562
- rootChainERC20Predicate: '0xAC0f2096732D40096B3356AD76ba60a2f02366c8',
23563
- rootChainStateSender: '0xeA76fcCdD791A9c231CAda787ae7535c8a5E55B5',
23564
- rootChainCheckpointManager: '0x321A466aa78F5957C6E2375114915EcD14DAdE44',
23565
- rootChainExitHelper: '0x55cA8C418bbB0aC87414F9ea6FFC6a33860Cf967',
23944
+ rootChainERC20Predicate: '0x75E468cF088F947B96422996132FbE71160F21F1',
23945
+ rootChainStateSender: '0xbdC11416f01b122b7621855e61c99C7ED986F894',
23946
+ rootChainCheckpointManager: '0x0721b564a96466b864A998D31846Ba409d21092B',
23947
+ rootChainExitHelper: '0x0a2cb3f90aE65429E5c516af500F59d8fed51844',
23566
23948
  childChainERC20Predicate: '0x0000000000000000000000000000000000001004',
23567
23949
  childChainStateReceiver: '0x0000000000000000000000000000000000001001',
23568
23950
  })
@@ -26957,6 +27339,9 @@ const $d85ad1457a3f1a83$export$161d4a74df65fc08 = {
26957
27339
  [(Environment$1).SANDBOX]: "https://checkout-api.sandbox.immutable.com",
26958
27340
  [(Environment$1).PRODUCTION]: "https://checkout-api.immutable.com"
26959
27341
  };
27342
+ const $d85ad1457a3f1a83$export$fc55ed5a42b458ba = {
27343
+ [($0472f23319457bfb$export$c06e1e7429de6283).IMTBL_ZKEVM_TESTNET]: "https://explorer.testnet.immutable.com"
27344
+ };
26960
27345
  const $d85ad1457a3f1a83$export$6f24f3cef7d501c4 = new Map([
26961
27346
  [
26962
27347
  ($0472f23319457bfb$export$c06e1e7429de6283).ETHEREUM,
@@ -27276,13 +27661,6 @@ var $4b58188d47aafe8d$export$537fa3efd10ed435;
27276
27661
  GasTokenType["NATIVE"] = "NATIVE";
27277
27662
  GasTokenType["ERC20"] = "ERC20";
27278
27663
  })($4b58188d47aafe8d$export$537fa3efd10ed435 || ($4b58188d47aafe8d$export$537fa3efd10ed435 = {}));
27279
- var $4b58188d47aafe8d$export$5d3b0ad129b9b98e;
27280
- (function(TransactionRequirementType) {
27281
- TransactionRequirementType["GAS"] = "GAS";
27282
- TransactionRequirementType["NATIVE"] = "NATIVE";
27283
- TransactionRequirementType["ERC20"] = "ERC20";
27284
- TransactionRequirementType["ERC721"] = "ERC721";
27285
- })($4b58188d47aafe8d$export$5d3b0ad129b9b98e || ($4b58188d47aafe8d$export$5d3b0ad129b9b98e = {}));
27286
27664
 
27287
27665
 
27288
27666
 
@@ -27296,6 +27674,7 @@ var $4b58188d47aafe8d$export$5d3b0ad129b9b98e;
27296
27674
  CheckoutErrorType["DEFAULT_PROVIDER_ERROR"] = "DEFAULT_PROVIDER_ERROR";
27297
27675
  CheckoutErrorType["CONNECT_PROVIDER_ERROR"] = "CONNECT_PROVIDER_ERROR";
27298
27676
  CheckoutErrorType["GET_BALANCE_ERROR"] = "GET_BALANCE_ERROR";
27677
+ CheckoutErrorType["GET_INDEXER_BALANCE_ERROR"] = "GET_INDEXER_BALANCE_ERROR";
27299
27678
  CheckoutErrorType["GET_ERC20_BALANCE_ERROR"] = "GET_ERC20_BALANCE_ERROR";
27300
27679
  CheckoutErrorType["GET_ERC721_BALANCE_ERROR"] = "GET_ERC721_BALANCE_ERROR";
27301
27680
  CheckoutErrorType["GET_NETWORK_INFO_ERROR"] = "GET_NETWORK_INFO_ERROR";
@@ -27311,6 +27690,7 @@ var $4b58188d47aafe8d$export$5d3b0ad129b9b98e;
27311
27690
  CheckoutErrorType["UNSUPPORTED_TOKEN_TYPE_ERROR"] = "UNSUPPORTED_TOKEN_TYPE_ERROR";
27312
27691
  CheckoutErrorType["UNSUPPORTED_BALANCE_REQUIREMENT_ERROR"] = "UNSUPPORTED_BALANCE_REQUIREMENT_ERROR";
27313
27692
  CheckoutErrorType["GET_ORDER_LISTING_ERROR"] = "GET_ORDER_LISTING_ERROR";
27693
+ CheckoutErrorType["PREPARE_ORDER_LISTING_ERROR"] = "PREPARE_ORDER_LISTING_ERROR";
27314
27694
  CheckoutErrorType["SWITCH_NETWORK_UNSUPPORTED"] = "SWITCH_NETWORK_UNSUPPORTED";
27315
27695
  CheckoutErrorType["GET_ERC20_ALLOWANCE_ERROR"] = "GET_ERC20_ALLOWANCE_ERROR";
27316
27696
  CheckoutErrorType["GET_ERC721_ALLOWANCE_ERROR"] = "GET_ERC721_ALLOWANCE_ERROR";
@@ -27501,7 +27881,7 @@ const $efe60cea83bfc4e8$export$473cec51305fdae8 = async (config, { type: type =
27501
27881
  case ($08d5ddc39acd6833$export$fd9b17d87f4121d2).BRIDGE:
27502
27882
  case ($08d5ddc39acd6833$export$fd9b17d87f4121d2).ALL:
27503
27883
  default:
27504
- tokens = await config.remote.getTokens(chainId);
27884
+ tokens = (await config.remote.getTokensConfig(chainId)).allowed;
27505
27885
  }
27506
27886
  if (!exclude || exclude?.length === 0) return {
27507
27887
  tokens: tokens
@@ -27514,6 +27894,90 @@ const $efe60cea83bfc4e8$export$473cec51305fdae8 = async (config, { type: type =
27514
27894
 
27515
27895
 
27516
27896
 
27897
+
27898
+
27899
+ const $fd8a8472dcc3ec2b$var$CACHE_DATA_TTL = 60; // seconds
27900
+ class $fd8a8472dcc3ec2b$export$ef140a6b05dfc786 {
27901
+ url;
27902
+ ttl;
27903
+ chainId;
27904
+ cacheMap;
27905
+ static async makeHttpRequest(url) {
27906
+ return (globalAxios$1).get(url);
27907
+ }
27908
+ setCache(key, data) {
27909
+ this.cacheMap[key] = {
27910
+ data: data,
27911
+ ttl: new Date().getTime() + this.ttl * 1000
27912
+ };
27913
+ }
27914
+ getCache(key) {
27915
+ const d = this.cacheMap[key];
27916
+ if (!d || d.ttl <= new Date().getTime()) return null;
27917
+ return d.data;
27918
+ }
27919
+ /**
27920
+ * Blockscout constructor
27921
+ * @param chainId target chain
27922
+ * @param ttl cache TTL
27923
+ */ constructor(params){
27924
+ this.chainId = params.chainId;
27925
+ this.url = ($d85ad1457a3f1a83$export$fc55ed5a42b458ba)[this.chainId];
27926
+ this.cacheMap = {};
27927
+ this.ttl = params.ttl !== undefined ? params.ttl : $fd8a8472dcc3ec2b$var$CACHE_DATA_TTL;
27928
+ }
27929
+ /**
27930
+ * isChainSupported verifies if the chain is supported by Blockscout
27931
+ * @param chainId
27932
+ */ static isChainSupported = (chainId)=>Boolean(($d85ad1457a3f1a83$export$fc55ed5a42b458ba)[chainId]);
27933
+ /**
27934
+ * isBlockscoutError verifies if the error is a Blockscout client error
27935
+ * @param err error to evaluate
27936
+ */ static isBlockscoutError = (err)=>"code" in err;
27937
+ /**
27938
+ * getAddressTokens fetches the list of tokens (by type) owned by the wallet address.
27939
+ * @param walletAddress wallet address
27940
+ * @param tokenType token types
27941
+ * @param nextPage parameters for the next page, to be provided along side walletAddress and tokenType
27942
+ * @returns list of tokens given the wallet address and the token types
27943
+ */ async getAddressTokens(params) {
27944
+ try {
27945
+ let url = `${this.url}/api/v2/addresses/${params.walletAddress}/tokens?type=${params.tokenType.join(",")}`;
27946
+ if (params.nextPage) url += `&${new URLSearchParams(params.nextPage)}`;
27947
+ // Cache response data to prevent unnecessary requests
27948
+ const cached = this.getCache(url);
27949
+ if (cached && cached.status < 400) return Promise.resolve(cached.data);
27950
+ const response = await $fd8a8472dcc3ec2b$export$ef140a6b05dfc786.makeHttpRequest(url);
27951
+ if (response.status >= 400) return Promise.reject({
27952
+ code: response.status,
27953
+ message: response.statusText
27954
+ });
27955
+ this.setCache(url, response);
27956
+ return Promise.resolve(response.data);
27957
+ } catch (err) {
27958
+ let code = (globalAxios$1.HttpStatusCode).InternalServerError;
27959
+ let message = "InternalServerError";
27960
+ if ((globalAxios$1).isAxiosError(err)) {
27961
+ code = err.response?.status || code;
27962
+ message = err.message;
27963
+ }
27964
+ return Promise.reject({
27965
+ code: code,
27966
+ message: message
27967
+ });
27968
+ }
27969
+ }
27970
+ }
27971
+
27972
+
27973
+ /* eslint @typescript-eslint/naming-convention: off */ var $887a00f8f72d61f0$export$5bd1ea2b3d18210;
27974
+ (function(BlockscoutTokenType) {
27975
+ BlockscoutTokenType["ERC20"] = "ERC-20";
27976
+ })($887a00f8f72d61f0$export$5bd1ea2b3d18210 || ($887a00f8f72d61f0$export$5bd1ea2b3d18210 = {}));
27977
+
27978
+
27979
+
27980
+
27517
27981
  const $1564e43dde50bb61$export$df96cd8d56be0ab1 = async (config, web3Provider, walletAddress)=>await ($a8bc256d81a5e2c1$export$bacc563de539c6c3)(async ()=>{
27518
27982
  const networkInfo = await ($de192de6ef100f9f$export$79f13b4cfaaf0d09)(config, web3Provider);
27519
27983
  if (!networkInfo.isSupported) throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)(`Chain:${networkInfo.chainId} is not a supported chain`, ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).CHAIN_NOT_SUPPORTED_ERROR, {
@@ -27553,6 +28017,59 @@ async function $1564e43dde50bb61$export$60e0fe116a0e6ed0(web3Provider, walletAdd
27553
28017
  type: ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).GET_ERC20_BALANCE_ERROR
27554
28018
  });
27555
28019
  }
28020
+ // Blockscout client singleton
28021
+ let $1564e43dde50bb61$var$blockscoutClient;
28022
+ const $1564e43dde50bb61$export$8c978679845804d4 = async (walletAddress, chainId, rename)=>{
28023
+ // Shuffle the mapping of the tokens configuration so it is a hashmap
28024
+ // for faster access to tokens config objects.
28025
+ const mapRename = Object.assign({}, ...rename.map((t)=>({
28026
+ [t.address || ""]: t
28027
+ })));
28028
+ // Ensure singleton is present and match the selected chain
28029
+ if (!$1564e43dde50bb61$var$blockscoutClient || $1564e43dde50bb61$var$blockscoutClient.chainId !== chainId) $1564e43dde50bb61$var$blockscoutClient = new ($fd8a8472dcc3ec2b$export$ef140a6b05dfc786)({
28030
+ chainId: chainId
28031
+ });
28032
+ // Hold the items in an array for post-fetching processing
28033
+ const items = [];
28034
+ const tokenType = [
28035
+ ($887a00f8f72d61f0$export$5bd1ea2b3d18210).ERC20
28036
+ ];
28037
+ // Given that the widgets aren't yet designed to support pagination,
28038
+ // fetch all the possible tokens associated to a given wallet address.
28039
+ let resp;
28040
+ try {
28041
+ do {
28042
+ // eslint-disable-next-line no-await-in-loop
28043
+ resp = await $1564e43dde50bb61$var$blockscoutClient.getAddressTokens({
28044
+ walletAddress: walletAddress,
28045
+ tokenType: tokenType,
28046
+ nextPage: resp?.next_page_params
28047
+ });
28048
+ items.push(...resp.items);
28049
+ }while (resp.next_page_params);
28050
+ } catch (err) {
28051
+ throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)(err.message || "InternalServerError", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).GET_INDEXER_BALANCE_ERROR, err);
28052
+ }
28053
+ return {
28054
+ balances: items.map((item)=>{
28055
+ const tokenData = item.token || {};
28056
+ const balance = (ethers.BigNumber).from(item.value);
28057
+ const renamed = mapRename[tokenData.address] || {};
28058
+ const token = {
28059
+ ...tokenData,
28060
+ name: renamed.name ?? tokenData.name,
28061
+ symbol: renamed.symbol ?? tokenData.symbol,
28062
+ decimals: parseInt(tokenData.decimals, 10)
28063
+ };
28064
+ const formattedBalance = (ethers.utils).formatUnits(item.value, token.decimals);
28065
+ return {
28066
+ balance: balance,
28067
+ formattedBalance: formattedBalance,
28068
+ token: token
28069
+ };
28070
+ })
28071
+ };
28072
+ };
27556
28073
  const $1564e43dde50bb61$export$a3238cee431627c6 = async (config, web3Provider, walletAddress, tokens)=>{
27557
28074
  const allBalancePromises = [];
27558
28075
  tokens.forEach((token)=>{
@@ -27571,6 +28088,17 @@ const $1564e43dde50bb61$export$fee49741664a4d7e = async (config, web3Provider, w
27571
28088
  type: ($08d5ddc39acd6833$export$fd9b17d87f4121d2).ALL,
27572
28089
  chainId: chainId
27573
28090
  });
28091
+ // In order to prevent unnecessary RPC calls
28092
+ // let's use the Indexer if available for the
28093
+ // given chain.
28094
+ let flag = false;
28095
+ try {
28096
+ flag = (await config.remote.getTokensConfig(chainId)).blockscout || flag;
28097
+ } catch (err) {
28098
+ // eslint-disable-next-line no-console
28099
+ console.error(err);
28100
+ }
28101
+ if (flag && ($fd8a8472dcc3ec2b$export$ef140a6b05dfc786).isChainSupported(chainId)) return await $1564e43dde50bb61$export$8c978679845804d4(walletAddress, chainId, tokens);
27574
28102
  return await $1564e43dde50bb61$export$a3238cee431627c6(config, web3Provider, walletAddress, tokens);
27575
28103
  };
27576
28104
 
@@ -27736,13 +28264,19 @@ const $dbe95599a4661140$export$8e0e7ffc78696d30 = async (web3Provider, transacti
27736
28264
 
27737
28265
 
27738
28266
 
28267
+ const $dff2555fa96dda9a$var$doesChainSupportEIP1559 = (feeData)=>!!feeData.maxFeePerGas && !!feeData.maxPriorityFeePerGas;
28268
+ const $dff2555fa96dda9a$export$aa28f3111c524ec5 = (feeData)=>{
28269
+ if ($dff2555fa96dda9a$var$doesChainSupportEIP1559(feeData)) return (ethers.BigNumber).from(feeData.maxFeePerGas).add((ethers.BigNumber).from(feeData.maxPriorityFeePerGas));
28270
+ if (feeData.gasPrice) return (ethers.BigNumber).from(feeData.gasPrice);
28271
+ return null;
28272
+ };
28273
+
28274
+
27739
28275
  const $570856c68db0bd36$var$GAS_LIMIT = 140000;
27740
- const $570856c68db0bd36$var$doesChainSupportEIP1559 = (feeData)=>!!feeData.maxFeePerGas && !!feeData.maxPriorityFeePerGas;
27741
- const $570856c68db0bd36$var$getGasPriceInWei = (feeData)=>$570856c68db0bd36$var$doesChainSupportEIP1559(feeData) ? (ethers.BigNumber).from(feeData.maxFeePerGas).add((ethers.BigNumber).from(feeData.maxPriorityFeePerGas)) : feeData.gasPrice && (ethers.BigNumber).from(feeData.gasPrice);
27742
28276
  const $570856c68db0bd36$var$getGasEstimates = async (provider)=>{
27743
28277
  const txnGasLimitInWei = $570856c68db0bd36$var$GAS_LIMIT; // todo: fetch gasLimit from bridgeSDK when they add new fn
27744
28278
  const feeData = await provider.getFeeData();
27745
- const gasPriceInWei = $570856c68db0bd36$var$getGasPriceInWei(feeData);
28279
+ const gasPriceInWei = ($dff2555fa96dda9a$export$aa28f3111c524ec5)(feeData);
27746
28280
  if (!gasPriceInWei) return undefined;
27747
28281
  return gasPriceInWei.mul(txnGasLimitInWei);
27748
28282
  };
@@ -27863,10 +28397,10 @@ class $a492ee374ae7b613$export$d902b56530cd5f87 {
27863
28397
  if (!key) return config;
27864
28398
  return config[key];
27865
28399
  }
27866
- async getTokens(chainId) {
28400
+ async getTokensConfig(chainId) {
27867
28401
  const config = await this.loadConfigTokens();
27868
- if (!config) return [];
27869
- return config[chainId]?.allowed ?? [];
28402
+ if (!config || !config[chainId]) return {};
28403
+ return config[chainId] ?? [];
27870
28404
  }
27871
28405
  }
27872
28406
 
@@ -28019,8 +28553,6 @@ async function $2e7bf45a7c9a9570$export$942c8de7174809fc(params, readOnlyProvide
28019
28553
 
28020
28554
 
28021
28555
 
28022
-
28023
-
28024
28556
  const $ddc6bcd0896481e5$export$2fbfa41a4de56a89 = (erc20allowances, erc721allowances)=>{
28025
28557
  const aggregatedAllowances = [];
28026
28558
  if (!erc20allowances.sufficient) {
@@ -28191,7 +28723,9 @@ const $35c3fc7013888ba5$export$90366d6b714c6f69 = async (provider, ownerAddress,
28191
28723
  return await contract.isApprovedForAll(ownerAddress, spenderAddress);
28192
28724
  } catch (err) {
28193
28725
  throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("Failed to check approval for all ERC721s of collection", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).GET_ERC721_ALLOWANCE_ERROR, {
28194
- contractAddress: contractAddress
28726
+ ownerAddress: ownerAddress,
28727
+ contractAddress: contractAddress,
28728
+ spenderAddress: spenderAddress
28195
28729
  });
28196
28730
  }
28197
28731
  };
@@ -28203,7 +28737,10 @@ const $35c3fc7013888ba5$export$ebb2a35f2b4cf5f6 = async (provider, ownerAddress,
28203
28737
  return transaction;
28204
28738
  } catch (err) {
28205
28739
  throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("Failed to get the approval transaction for ERC721", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).GET_ERC721_ALLOWANCE_ERROR, {
28206
- contractAddress: contractAddress
28740
+ id: id.toString(),
28741
+ contractAddress: contractAddress,
28742
+ spenderAddress: spenderAddress,
28743
+ ownerAddress: ownerAddress
28207
28744
  });
28208
28745
  }
28209
28746
  };
@@ -28213,6 +28750,7 @@ const $35c3fc7013888ba5$export$c4605a8dd415eeea = async (provider, contractAddre
28213
28750
  return await contract.getApproved(id);
28214
28751
  } catch (err) {
28215
28752
  throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("Failed to get approved address for ERC721", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).GET_ERC721_ALLOWANCE_ERROR, {
28753
+ id: id.toString(),
28216
28754
  contractAddress: contractAddress
28217
28755
  });
28218
28756
  }
@@ -28389,12 +28927,9 @@ const $aa6caea9a60d18c7$export$f96d1c819a615a64 = (itemRequirements)=>$aa6caea9a
28389
28927
 
28390
28928
  const $73d2282a108cc7e2$export$ed7929b58bab85da = (itemRequirements)=>itemRequirements.map((itemRequirement)=>{
28391
28929
  if (itemRequirement.type === ($4b58188d47aafe8d$export$1fc8f52ad1810e52).NATIVE) return {
28392
- name: "IMX",
28393
- symbol: "IMX",
28394
28930
  address: ($d85ad1457a3f1a83$export$b80040cb173ba6e9)
28395
28931
  };
28396
28932
  return {
28397
- name: itemRequirement.type,
28398
28933
  address: itemRequirement.contractAddress
28399
28934
  };
28400
28935
  });
@@ -28410,6 +28945,7 @@ const $73d2282a108cc7e2$export$9b757e40b19984c3 = (itemRequirement, balances)=>{
28410
28945
  const delta = requiredBalance.sub(itemBalanceResult?.balance ?? (ethers.BigNumber).from(0));
28411
28946
  let erc721BalanceResult = itemBalanceResult;
28412
28947
  if (!erc721BalanceResult) erc721BalanceResult = {
28948
+ type: ($4b58188d47aafe8d$export$1fc8f52ad1810e52).ERC721,
28413
28949
  balance: (ethers.BigNumber).from(0),
28414
28950
  formattedBalance: "0",
28415
28951
  contractAddress: itemRequirement.contractAddress,
@@ -28417,7 +28953,7 @@ const $73d2282a108cc7e2$export$9b757e40b19984c3 = (itemRequirement, balances)=>{
28417
28953
  };
28418
28954
  return {
28419
28955
  sufficient: sufficient,
28420
- type: itemRequirement.type,
28956
+ type: ($4b58188d47aafe8d$export$1fc8f52ad1810e52).ERC721,
28421
28957
  delta: {
28422
28958
  balance: delta,
28423
28959
  formattedBalance: delta.toString()
@@ -28437,23 +28973,30 @@ const $73d2282a108cc7e2$export$6ab9757fda54db7e = (itemRequirement, balances)=>{
28437
28973
  return balance.token?.address === itemRequirement.contractAddress;
28438
28974
  });
28439
28975
  else if (itemRequirement.type === ($4b58188d47aafe8d$export$1fc8f52ad1810e52).NATIVE) itemBalanceResult = balances.find((balance)=>{
28440
- return !("address" in balance.token) || balance.token?.address === ($d85ad1457a3f1a83$export$b80040cb173ba6e9);
28976
+ return balance.token?.address === "" || balance.token?.address === ($d85ad1457a3f1a83$export$b80040cb173ba6e9);
28441
28977
  });
28442
28978
  // Calculate the balance delta
28443
28979
  const requiredBalance = itemRequirement.amount;
28444
28980
  const sufficient = requiredBalance.isNegative() || requiredBalance.isZero() || (itemBalanceResult?.balance.gte(requiredBalance) ?? false);
28445
28981
  const delta = requiredBalance.sub(itemBalanceResult?.balance ?? (ethers.BigNumber).from(0));
28982
+ let name = "";
28983
+ let symbol = "";
28446
28984
  let decimals = ($d85ad1457a3f1a83$export$903389470ba9433c);
28447
- if (itemBalanceResult) decimals = itemBalanceResult.token?.decimals ?? ($d85ad1457a3f1a83$export$903389470ba9433c);
28985
+ if (itemBalanceResult) {
28986
+ decimals = itemBalanceResult.token?.decimals ?? ($d85ad1457a3f1a83$export$903389470ba9433c);
28987
+ name = itemBalanceResult.token.name;
28988
+ symbol = itemBalanceResult.token.symbol;
28989
+ }
28448
28990
  let tokenBalanceResult = itemBalanceResult;
28449
28991
  if (itemRequirement.type === ($4b58188d47aafe8d$export$1fc8f52ad1810e52).NATIVE) {
28450
28992
  // No token balance so mark as zero native
28451
28993
  if (!tokenBalanceResult) tokenBalanceResult = {
28994
+ type: ($4b58188d47aafe8d$export$1fc8f52ad1810e52).NATIVE,
28452
28995
  balance: (ethers.BigNumber).from(0),
28453
28996
  formattedBalance: "0",
28454
28997
  token: {
28455
- name: "IMX",
28456
- symbol: "IMX",
28998
+ name: name,
28999
+ symbol: symbol,
28457
29000
  decimals: ($d85ad1457a3f1a83$export$903389470ba9433c),
28458
29001
  address: ($d85ad1457a3f1a83$export$b80040cb173ba6e9)
28459
29002
  }
@@ -28465,9 +29008,13 @@ const $73d2282a108cc7e2$export$6ab9757fda54db7e = (itemRequirement, balances)=>{
28465
29008
  balance: delta,
28466
29009
  formattedBalance: (ethers.utils).formatUnits(delta, decimals)
28467
29010
  },
28468
- current: tokenBalanceResult,
29011
+ current: {
29012
+ ...tokenBalanceResult,
29013
+ type: ($4b58188d47aafe8d$export$1fc8f52ad1810e52).NATIVE
29014
+ },
28469
29015
  required: {
28470
29016
  ...tokenBalanceResult,
29017
+ type: ($4b58188d47aafe8d$export$1fc8f52ad1810e52).NATIVE,
28471
29018
  balance: (ethers.BigNumber).from(itemRequirement.amount),
28472
29019
  formattedBalance: (ethers.utils).formatUnits(itemRequirement.amount, decimals)
28473
29020
  }
@@ -28475,10 +29022,14 @@ const $73d2282a108cc7e2$export$6ab9757fda54db7e = (itemRequirement, balances)=>{
28475
29022
  }
28476
29023
  // No token balance so mark as zero
28477
29024
  if (!tokenBalanceResult) tokenBalanceResult = {
29025
+ type: itemRequirement.type,
28478
29026
  balance: (ethers.BigNumber).from(0),
28479
29027
  formattedBalance: "0",
28480
29028
  token: {
28481
- address: itemRequirement.contractAddress
29029
+ name: name,
29030
+ symbol: symbol,
29031
+ address: itemRequirement.contractAddress,
29032
+ decimals: decimals
28482
29033
  }
28483
29034
  };
28484
29035
  return {
@@ -28520,11 +29071,11 @@ const $73d2282a108cc7e2$export$6ab9757fda54db7e = (itemRequirement, balances)=>{
28520
29071
  // Setup maps to be able to link data back to the associated promises
28521
29072
  const erc721s = new Map();
28522
29073
  const erc721OwnershipPromises = new Map();
28523
- itemRequirements.filter((itemRequirement)=>itemRequirement.type === ($4b58188d47aafe8d$export$1fc8f52ad1810e52).ERC721).forEach((itemRequirement)=>{
28524
- const erc721Requirement = itemRequirement;
28525
- const contract = new (ethers.Contract)(erc721Requirement.contractAddress, JSON.stringify(($d85ad1457a3f1a83$export$8b8be7a2a654f23e)), provider);
28526
- erc721s.set(erc721Requirement.contractAddress, itemRequirement);
28527
- erc721OwnershipPromises.set(erc721Requirement.contractAddress, contract.ownerOf(erc721Requirement.id));
29074
+ itemRequirements.forEach((itemRequirement)=>{
29075
+ if (itemRequirement.type !== ($4b58188d47aafe8d$export$1fc8f52ad1810e52).ERC721) return;
29076
+ const contract = new (ethers.Contract)(itemRequirement.contractAddress, JSON.stringify(($d85ad1457a3f1a83$export$8b8be7a2a654f23e)), provider);
29077
+ erc721s.set(itemRequirement.contractAddress, itemRequirement);
29078
+ erc721OwnershipPromises.set(itemRequirement.contractAddress, contract.ownerOf(itemRequirement.id));
28528
29079
  });
28529
29080
  try {
28530
29081
  // Convert ERC721 ownership into a balance result
@@ -28535,6 +29086,7 @@ const $73d2282a108cc7e2$export$6ab9757fda54db7e = (itemRequirement, balances)=>{
28535
29086
  let itemCount = 0;
28536
29087
  if (itemRequirement && ownerAddress === erc721OwnerAddress) itemCount = 1;
28537
29088
  erc721Balances.push({
29089
+ type: (0, $4b58188d47aafe8d$export$1fc8f52ad1810e52).ERC721,
28538
29090
  balance: (0, ethers.BigNumber).from(itemCount),
28539
29091
  formattedBalance: itemCount.toString(),
28540
29092
  contractAddress: itemRequirement.contractAddress,
@@ -28586,7 +29138,7 @@ const $beb896e098e41faf$export$ddfc885f43c3cb6e = async (config, provider, owner
28586
29138
  }, true);
28587
29139
  return {
28588
29140
  sufficient: sufficient,
28589
- itemRequirements: balanceRequirements
29141
+ balanceRequirements: balanceRequirements
28590
29142
  };
28591
29143
  };
28592
29144
 
@@ -28597,12 +29149,7 @@ const $beb896e098e41faf$export$ddfc885f43c3cb6e = async (config, provider, owner
28597
29149
 
28598
29150
 
28599
29151
 
28600
- const $7d1bfafb81e64d74$var$doesChainSupportEIP1559 = (feeData)=>!!feeData.maxFeePerGas && !!feeData.maxPriorityFeePerGas;
28601
- const $7d1bfafb81e64d74$var$getGasPriceInWei = (feeData)=>{
28602
- if ($7d1bfafb81e64d74$var$doesChainSupportEIP1559(feeData)) return (ethers.BigNumber).from(feeData.maxFeePerGas).add((ethers.BigNumber).from(feeData.maxPriorityFeePerGas));
28603
- if (feeData.gasPrice) return (ethers.BigNumber).from(feeData.gasPrice);
28604
- return undefined;
28605
- };
29152
+
28606
29153
  const $7d1bfafb81e64d74$export$e0580ae1f48db848 = async (provider, transaction)=>{
28607
29154
  try {
28608
29155
  return await provider.estimateGas(transaction);
@@ -28635,9 +29182,11 @@ const $7d1bfafb81e64d74$export$3a4140bd9e983e4e = async (provider, insufficientI
28635
29182
  if (transactionOrGas.type === ($4b58188d47aafe8d$export$65c64e46348ee3c1).TRANSACTION) estimateGasPromises.push($7d1bfafb81e64d74$export$e0580ae1f48db848(provider, transactionOrGas.transaction));
28636
29183
  else {
28637
29184
  const feeData = await provider.getFeeData();
28638
- const gasPrice = $7d1bfafb81e64d74$var$getGasPriceInWei(feeData);
28639
- const gas = gasPrice?.mul(transactionOrGas.gasToken.limit);
28640
- if (gas) totalGas = totalGas.add(gas);
29185
+ const gasPrice = ($dff2555fa96dda9a$export$aa28f3111c524ec5)(feeData);
29186
+ if (gasPrice !== null) {
29187
+ const gas = gasPrice?.mul(transactionOrGas.gasToken.limit);
29188
+ if (gas) totalGas = totalGas.add(gas);
29189
+ }
28641
29190
  }
28642
29191
  // Get the gas estimates for all the transactions and calculate the total gas
28643
29192
  const gasEstimatePromises = await Promise.all(estimateGasPromises);
@@ -28649,57 +29198,39 @@ const $7d1bfafb81e64d74$export$3a4140bd9e983e4e = async (provider, insufficientI
28649
29198
  };
28650
29199
 
28651
29200
 
29201
+
29202
+
29203
+ const $0e7419077c373b24$export$4a2a19d99fef3b1b = (balanceCheckResult)=>{
29204
+ let sufficient = true;
29205
+ const transactionRequirements = [];
29206
+ for (const balance of balanceCheckResult.balanceRequirements){
29207
+ if (!balance.sufficient) sufficient = false;
29208
+ transactionRequirements.push({
29209
+ type: balance.type,
29210
+ sufficient: balance.sufficient,
29211
+ required: balance.required,
29212
+ current: balance.current,
29213
+ delta: balance.delta
29214
+ });
29215
+ }
29216
+ return {
29217
+ sufficient: sufficient,
29218
+ transactionRequirements: transactionRequirements
29219
+ };
29220
+ };
28652
29221
  const $0e7419077c373b24$export$9e073f9ada8c81e6 = async (config, provider, itemRequirements, transactionOrGasAmount)=>{
28653
- // eslint-disable-next-line no-console
28654
- console.log(provider, itemRequirements, transactionOrGasAmount);
28655
29222
  const ownerAddress = await provider.getSigner().getAddress();
28656
29223
  let aggregatedItems = ($074f75878f618031$export$c804c9ade5c28607)(itemRequirements);
28657
29224
  const erc20Allowances = await ($fc8b338399d890f3$export$d93c00812189e36)(provider, ownerAddress, aggregatedItems);
28658
29225
  const erc721Allowances = await ($35c3fc7013888ba5$export$be546c525d418988)(provider, ownerAddress, aggregatedItems);
28659
- // eslint-disable-next-line no-console
28660
- console.log("ERC20 Allowances", erc20Allowances);
28661
- // eslint-disable-next-line no-console
28662
- console.log("ERC721 Allowances", erc721Allowances);
28663
29226
  const aggregatedAllowances = ($ddc6bcd0896481e5$export$2fbfa41a4de56a89)(erc20Allowances, erc721Allowances);
28664
29227
  const gasItem = await ($7d1bfafb81e64d74$export$3a4140bd9e983e4e)(provider, aggregatedAllowances, transactionOrGasAmount);
28665
29228
  if (gasItem !== null) {
28666
29229
  aggregatedItems.push(gasItem);
28667
29230
  aggregatedItems = ($074f75878f618031$export$c804c9ade5c28607)(aggregatedItems);
28668
29231
  }
28669
- // eslint-disable-next-line no-console
28670
- console.log("Aggregated Items", aggregatedItems);
28671
29232
  const balanceRequirements = await ($beb896e098e41faf$export$ddfc885f43c3cb6e)(config, provider, ownerAddress, aggregatedItems);
28672
- // eslint-disable-next-line no-console
28673
- console.log("Balance Requirements", balanceRequirements);
28674
- return {
28675
- sufficient: true,
28676
- transactionRequirements: [
28677
- {
28678
- type: ($4b58188d47aafe8d$export$5d3b0ad129b9b98e).GAS,
28679
- sufficient: true,
28680
- required: {
28681
- balance: (ethers.BigNumber).from(0),
28682
- formattedBalance: "0",
28683
- token: {
28684
- name: "IMX",
28685
- symbol: "IMX",
28686
- address: "0x0",
28687
- decimals: 18
28688
- }
28689
- },
28690
- current: {
28691
- balance: (ethers.BigNumber).from(1),
28692
- formattedBalance: "1",
28693
- token: {
28694
- name: "IMX",
28695
- symbol: "IMX",
28696
- address: "0x0",
28697
- decimals: 18
28698
- }
28699
- }
28700
- }
28701
- ]
28702
- };
29233
+ return $0e7419077c373b24$export$4a2a19d99fef3b1b(balanceRequirements);
28703
29234
  };
28704
29235
 
28705
29236
 
@@ -28809,6 +29340,81 @@ const $64863c39386de592$export$7f8e2b98eca5a7f0 = async (config, provider, order
28809
29340
 
28810
29341
 
28811
29342
 
29343
+
29344
+ const $9085b221b72ac69e$export$af768ccdf17d5c04 = (id, contractAddress, spenderAddress)=>({
29345
+ type: ($4b58188d47aafe8d$export$1fc8f52ad1810e52).ERC721,
29346
+ id: id,
29347
+ contractAddress: contractAddress,
29348
+ spenderAddress: spenderAddress
29349
+ });
29350
+ const $9085b221b72ac69e$export$d2da5a4d143c85e5 = (buyToken)=>{
29351
+ if (buyToken.type === ($4b58188d47aafe8d$export$1fc8f52ad1810e52).NATIVE) return {
29352
+ type: ($4b58188d47aafe8d$export$1fc8f52ad1810e52).NATIVE,
29353
+ amount: buyToken.amount.toString()
29354
+ };
29355
+ return {
29356
+ type: ($4b58188d47aafe8d$export$1fc8f52ad1810e52).ERC20,
29357
+ amount: buyToken.amount.toString(),
29358
+ contractAddress: buyToken.contractAddress
29359
+ };
29360
+ };
29361
+ const $9085b221b72ac69e$export$e761f9e0703de895 = async (config, provider, id, contractAddress, buyToken)=>{
29362
+ let orderbook;
29363
+ let listing;
29364
+ let spenderAddress = "";
29365
+ try {
29366
+ const walletAddress = await provider.getSigner().getAddress();
29367
+ orderbook = await $67fc622a2b913d5f$export$c60ce6c6a92bc2ff(config);
29368
+ const { seaportContractAddress: seaportContractAddress } = orderbook.config();
29369
+ spenderAddress = seaportContractAddress;
29370
+ listing = await orderbook.prepareListing({
29371
+ makerAddress: walletAddress,
29372
+ buy: $9085b221b72ac69e$export$d2da5a4d143c85e5(buyToken),
29373
+ sell: {
29374
+ type: (0, $4b58188d47aafe8d$export$1fc8f52ad1810e52).ERC721,
29375
+ contractAddress: contractAddress,
29376
+ tokenId: id
29377
+ }
29378
+ });
29379
+ } catch (err) {
29380
+ throw new ($a8bc256d81a5e2c1$export$b722478a3cbfa3bc)("An error occurred while preparing the listing", ($a8bc256d81a5e2c1$export$e3dc0620abde7f5a).PREPARE_ORDER_LISTING_ERROR, {
29381
+ message: err.message,
29382
+ id: id,
29383
+ collectionAddress: contractAddress
29384
+ });
29385
+ }
29386
+ const itemRequirements = [
29387
+ $9085b221b72ac69e$export$af768ccdf17d5c04(id, contractAddress, spenderAddress)
29388
+ ];
29389
+ // eslint-disable-next-line no-console
29390
+ console.log(listing); // TODO: Get order signature, provider.getSigner()._signTypedData to sign
29391
+ const smartCheckoutResult = await ($0e7419077c373b24$export$9e073f9ada8c81e6)(config, provider, itemRequirements, {
29392
+ type: ($4b58188d47aafe8d$export$65c64e46348ee3c1).GAS,
29393
+ gasToken: {
29394
+ type: ($4b58188d47aafe8d$export$537fa3efd10ed435).NATIVE,
29395
+ limit: (ethers.BigNumber).from((constants).estimatedFulfillmentGasGwei)
29396
+ }
29397
+ });
29398
+ // eslint-disable-next-line no-console
29399
+ console.log("transactionRequirements", smartCheckoutResult);
29400
+ return {
29401
+ itemRequirements: itemRequirements,
29402
+ gasToken: {
29403
+ type: ($4b58188d47aafe8d$export$537fa3efd10ed435).NATIVE,
29404
+ limit: (ethers.BigNumber).from((constants).estimatedFulfillmentGasGwei)
29405
+ },
29406
+ smartCheckoutResult: smartCheckoutResult
29407
+ };
29408
+ };
29409
+
29410
+
29411
+
29412
+
29413
+
29414
+
29415
+
29416
+
29417
+
28812
29418
  async function $0e0060cb42e136d2$export$339cb2be73677b30(config, existingReadOnlyProviders) {
28813
29419
  if (config.isProduction && existingReadOnlyProviders?.has(($0472f23319457bfb$export$c06e1e7429de6283).ETHEREUM)) return existingReadOnlyProviders;
28814
29420
  if (existingReadOnlyProviders?.has(($0472f23319457bfb$export$c06e1e7429de6283).SEPOLIA)) return existingReadOnlyProviders;
@@ -28953,6 +29559,16 @@ class $a8cb37a3fc8eb863$export$1f60ba4ec72508a0 {
28953
29559
  await $64863c39386de592$export$7f8e2b98eca5a7f0(this.config, web3Provider, params.orderId);
28954
29560
  }
28955
29561
  /**
29562
+ * Determines the requirements for performing a sell.
29563
+ * @param {SellParams} params - The parameters for the sell.
29564
+ */ async sell(params) {
29565
+ if (this.config.isProduction) throw new Error("This endpoint is not currently available.");
29566
+ // eslint-disable-next-line no-console
29567
+ console.warn("This endpoint is currently under construction.");
29568
+ const web3Provider = await $bb88265fe45a0393$export$9e1fd9cc88c637a0(this.config, params.provider);
29569
+ await $9085b221b72ac69e$export$e761f9e0703de895(this.config, web3Provider, params.id, params.collectionAddress, params.buyToken);
29570
+ }
29571
+ /**
28956
29572
  * Determines the transaction requirements to complete a purchase.
28957
29573
  * @params {SmartCheckoutParams} params - The parameters for smart checkout.
28958
29574
  */ async smartCheckout(params) {
@@ -28999,7 +29615,7 @@ var checkout_sdk = /*#__PURE__*/Object.freeze({
28999
29615
  function $parcel$export(e, n, v, s) {
29000
29616
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
29001
29617
  }
29002
- const $d663162fd5a0853f$export$38a083d9fb5551ca = "0.15.1-alpha";
29618
+ const $d663162fd5a0853f$export$38a083d9fb5551ca = "0.16.0-alpha.1";
29003
29619
  const $d663162fd5a0853f$export$83bf90b30cdfd29f = ()=>false;
29004
29620
  const $d663162fd5a0853f$export$1169f5475725171b = ()=>$d663162fd5a0853f$export$38a083d9fb5551ca;
29005
29621
 
@@ -29692,7 +30308,7 @@ const _abi$2 = [
29692
30308
  },
29693
30309
  {
29694
30310
  internalType: "address",
29695
- name: "royaltyAllowlist_",
30311
+ name: "operatorAllowlist_",
29696
30312
  type: "address",
29697
30313
  },
29698
30314
  {
@@ -29709,6 +30325,11 @@ const _abi$2 = [
29709
30325
  stateMutability: "nonpayable",
29710
30326
  type: "constructor",
29711
30327
  },
30328
+ {
30329
+ inputs: [],
30330
+ name: "AllowlistDoesNotImplementIOperatorAllowlist",
30331
+ type: "error",
30332
+ },
29712
30333
  {
29713
30334
  inputs: [
29714
30335
  {
@@ -29801,11 +30422,6 @@ const _abi$2 = [
29801
30422
  name: "IImmutableERC721TokenAlreadyBurned",
29802
30423
  type: "error",
29803
30424
  },
29804
- {
29805
- inputs: [],
29806
- name: "RoyaltyEnforcementDoesNotImplementRequiredInterface",
29807
- type: "error",
29808
- },
29809
30425
  {
29810
30426
  inputs: [
29811
30427
  {
@@ -29878,6 +30494,25 @@ const _abi$2 = [
29878
30494
  name: "ApprovalForAll",
29879
30495
  type: "event",
29880
30496
  },
30497
+ {
30498
+ anonymous: false,
30499
+ inputs: [
30500
+ {
30501
+ indexed: false,
30502
+ internalType: "address",
30503
+ name: "oldRegistry",
30504
+ type: "address",
30505
+ },
30506
+ {
30507
+ indexed: false,
30508
+ internalType: "address",
30509
+ name: "newRegistry",
30510
+ type: "address",
30511
+ },
30512
+ ],
30513
+ name: "OperatorAllowlistRegistryUpdated",
30514
+ type: "event",
30515
+ },
29881
30516
  {
29882
30517
  anonymous: false,
29883
30518
  inputs: [
@@ -29953,25 +30588,6 @@ const _abi$2 = [
29953
30588
  name: "RoleRevoked",
29954
30589
  type: "event",
29955
30590
  },
29956
- {
29957
- anonymous: false,
29958
- inputs: [
29959
- {
29960
- indexed: false,
29961
- internalType: "address",
29962
- name: "oldRegistry",
29963
- type: "address",
29964
- },
29965
- {
29966
- indexed: false,
29967
- internalType: "address",
29968
- name: "newRegistry",
29969
- type: "address",
29970
- },
29971
- ],
29972
- name: "RoyaltyAllowlistRegistryUpdated",
29973
- type: "event",
29974
- },
29975
30591
  {
29976
30592
  anonymous: false,
29977
30593
  inputs: [
@@ -30416,6 +31032,19 @@ const _abi$2 = [
30416
31032
  stateMutability: "view",
30417
31033
  type: "function",
30418
31034
  },
31035
+ {
31036
+ inputs: [],
31037
+ name: "operatorAllowlist",
31038
+ outputs: [
31039
+ {
31040
+ internalType: "contract IOperatorAllowlist",
31041
+ name: "",
31042
+ type: "address",
31043
+ },
31044
+ ],
31045
+ stateMutability: "view",
31046
+ type: "function",
31047
+ },
30419
31048
  {
30420
31049
  inputs: [
30421
31050
  {
@@ -30484,19 +31113,6 @@ const _abi$2 = [
30484
31113
  stateMutability: "nonpayable",
30485
31114
  type: "function",
30486
31115
  },
30487
- {
30488
- inputs: [],
30489
- name: "royaltyAllowlist",
30490
- outputs: [
30491
- {
30492
- internalType: "contract IRoyaltyAllowlist",
30493
- name: "",
30494
- type: "address",
30495
- },
30496
- ],
30497
- stateMutability: "view",
30498
- type: "function",
30499
- },
30500
31116
  {
30501
31117
  inputs: [
30502
31118
  {
@@ -30848,11 +31464,11 @@ const _abi$2 = [
30848
31464
  inputs: [
30849
31465
  {
30850
31466
  internalType: "address",
30851
- name: "_royaltyAllowlist",
31467
+ name: "_operatorAllowlist",
30852
31468
  type: "address",
30853
31469
  },
30854
31470
  ],
30855
- name: "setRoyaltyAllowlistRegistry",
31471
+ name: "setOperatorAllowlistRegistry",
30856
31472
  outputs: [],
30857
31473
  stateMutability: "nonpayable",
30858
31474
  type: "function",
@@ -30945,7 +31561,7 @@ const _abi$2 = [
30945
31561
  type: "function",
30946
31562
  },
30947
31563
  ];
30948
- const _bytecode$2 = "0x608060405260006013553480156200001657600080fd5b50604051620052f1380380620052f18339810160408190526200003991620007cd565b8787878787878787868681818181600662000055838262000960565b50600762000064828262000960565b50506801000000000000000060095550600d62000082838262000960565b50600e62000091828262000960565b50620000a69350600092508b915050620000f1565b620000b2828262000134565b620000bd8362000239565b6016620000cb868262000960565b506015620000da858262000960565b505050505050505050505050505050505062000b74565b6200010882826200025560201b620011e11760201c565b60008281526001602090815260409091206200012f91839062001265620002f5821b17901c565b505050565b6127106001600160601b0382161115620001a85760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b038216620002005760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016200019f565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600355565b6000620002468162000315565b620002518262000324565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000251576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002b13390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006200030c836001600160a01b0384166200041d565b90505b92915050565b6200032181336200046f565b50565b6040516301ffc9a760e01b81526305a3b80960e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000396919062000a2c565b620003b457604051631353be1160e11b815260040160405180910390fd5b600254604080516001600160a01b03928316815291831660208301527ff499b54d61d3fcb40299e3299af3ffe9ef1ee6e47194240f3cc5b6e09f7f6796910160405180910390a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b600081815260018301602052604081205462000466575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200030f565b5060006200030f565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200025157620004ae81620004ff60201b6200127a1760201c565b620004c48360206200128c62000512821b17811c565b604051602001620004d792919062000a50565b60408051601f198184030181529082905262461bcd60e51b82526200019f9160040162000ac9565b60606200030f6001600160a01b03831660145b606060006200052383600262000b14565b6200053090600262000b2e565b6001600160401b038111156200054a576200054a620006e8565b6040519080825280601f01601f19166020018201604052801562000575576020820181803683370190505b509050600360fc1b8160008151811062000593576200059362000b44565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110620005c557620005c562000b44565b60200101906001600160f81b031916908160001a9053506000620005eb84600262000b14565b620005f890600162000b2e565b90505b60018111156200067a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062000630576200063062000b44565b1a60f81b82828151811062000649576200064962000b44565b60200101906001600160f81b031916908160001a90535060049490941c93620006728162000b5a565b9050620005fb565b5083156200030c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016200019f565b80516001600160a01b0381168114620006e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200071b57818101518382015260200162000701565b50506000910152565b600082601f8301126200073657600080fd5b81516001600160401b0380821115620007535762000753620006e8565b604051601f8301601f19908116603f011681019082821181831017156200077e576200077e620006e8565b816040528381528660208588010111156200079857600080fd5b620007ab846020830160208901620006fe565b9695505050505050565b80516001600160601b0381168114620006e357600080fd5b600080600080600080600080610100898b031215620007eb57600080fd5b620007f689620006cb565b60208a01519098506001600160401b03808211156200081457600080fd5b620008228c838d0162000724565b985060408b01519150808211156200083957600080fd5b620008478c838d0162000724565b975060608b01519150808211156200085e57600080fd5b6200086c8c838d0162000724565b965060808b01519150808211156200088357600080fd5b50620008928b828c0162000724565b945050620008a360a08a01620006cb565b9250620008b360c08a01620006cb565b9150620008c360e08a01620007b5565b90509295985092959890939650565b600181811c90821680620008e757607f821691505b6020821081036200090857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012f57600081815260208120601f850160051c81016020861015620009375750805b601f850160051c820191505b81811015620009585782815560010162000943565b505050505050565b81516001600160401b038111156200097c576200097c620006e8565b62000994816200098d8454620008d2565b846200090e565b602080601f831160018114620009cc5760008415620009b35750858301515b600019600386901b1c1916600185901b17855562000958565b600085815260208120601f198616915b82811015620009fd57888601518255948401946001909101908401620009dc565b508582101562000a1c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a3f57600080fd5b815180151581146200030c57600080fd5b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162000a8a816017850160208801620006fe565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835162000abd816028840160208801620006fe565b01602801949350505050565b602081526000825180602084015262000aea816040850160208701620006fe565b601f01601f19169190910160400192915050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200030f576200030f62000afe565b808201808211156200030f576200030f62000afe565b634e487b7160e01b600052603260045260246000fd5b60008162000b6c5762000b6c62000afe565b506000190190565b61476d8062000b846000396000f3fe608060405234801561001057600080fd5b50600436106102f05760003560e01c806369e2f0fb1161019d578063a217fddf116100e9578063d5391393116100a2578063e4623c1b1161007c578063e4623c1b146106af578063e8a3d485146106c2578063e985e9c5146106ca578063eea98768146106dd57600080fd5b8063d539139314610674578063d547741f14610689578063e19278591461069c57600080fd5b8063a217fddf1461060d578063a22cb46514610615578063a701281614610628578063b88d4fde1461063b578063c87b56dd1461064e578063ca15c8731461066157600080fd5b80639010d07c1161015657806395d89b411161013057806395d89b41146105cc5780639e2641a3146105d45780639f15d700146105e7578063a1448194146105fa57600080fd5b80639010d07c1461059357806391d14854146105a6578063938e3d7b146105b957600080fd5b806369e2f0fb1461052c5780636b3a06321461053f5780636c0360eb1461055257806370a082311461055a57806374f16a811461056d578063885e7a081461058057600080fd5b80632f2ff15d1161025c57806342966c681161021557806355f804b3116101ef57806355f804b3146104e0578063567e4075146104f35780636352211e146105065780636588962a1461051957600080fd5b806342966c68146104a7578063439aed34146104ba5780634f558e79146104cd57600080fd5b80632f2ff15d1461043357806331ae450b1461044657806336568abe1461045b5780633dd1eb611461046e57806340c10f191461048157806342842e0e1461049457600080fd5b80631f8ebbd1116102ae5780631f8ebbd11461039b578063234af046146103a557806323b872dd146103b8578063248a9ca3146103cb5780632a55205a146103ee5780632d2c5a8b1461042057600080fd5b80628ad946146102f557806301ffc9a71461030a57806306fdde0314610332578063081812fc14610347578063095ea7b31461037257806318160ddd14610385575b600080fd5b61030861030336600461391b565b6106f0565b005b61031d61031836600461396b565b6107c6565b60405190151581526020015b60405180910390f35b61033a6107d7565b60405161032991906139d8565b61035a6103553660046139eb565b6107e6565b6040516001600160a01b039091168152602001610329565b610308610380366004613a1b565b610806565b61038d610961565b604051908152602001610329565b600160401b61038d565b6103086103b3366004613be7565b610978565b6103086103c6366004613c2f565b610999565b61038d6103d93660046139eb565b60009081526020819052604090206001015490565b6104016103fc366004613c6b565b6109bb565b604080516001600160a01b039093168352602083019190915201610329565b61030861042e366004613c8d565b610a69565b610308610441366004613d49565b610a8a565b61044e610aaf565b6040516103299190613d75565b610308610469366004613d49565b610b5d565b61030861047c366004613dc2565b610bd7565b61030861048f366004613a1b565b610bfa565b6103086104a2366004613c2f565b610c1c565b6103086104b53660046139eb565b610c37565b6103086104c8366004613df4565b610c6e565b61031d6104db3660046139eb565b610c97565b6103086104ee366004613e87565b610ca2565b610308610501366004613a1b565b610cb9565b61035a6105143660046139eb565b610cdb565b610308610527366004613dc2565b610cfb565b61030861053a366004613dc2565b610d0f565b60025461035a906001600160a01b031681565b61033a610d32565b61038d610568366004613dc2565b610dc0565b61030861057b366004613be7565b610dde565b61030861058e366004613ecf565b610de7565b61035a6105a1366004613c6b565b610dfc565b61031d6105b4366004613d49565b610e1b565b6103086105c7366004613e87565b610e44565b61033a610e5b565b6103086105e2366004613be7565b610e65565b6103086105f5366004613a1b565b610e86565b610308610608366004613a1b565b610ee0565b61038d600081565b610308610623366004613f07565b610f02565b610308610636366004613f82565b611053565b610308610649366004613fe6565b6110b3565b61033a61065c3660046139eb565b6110dc565b61038d61066f3660046139eb565b6110e7565b61038d6a4d494e5445525f524f4c4560a81b81565b610308610697366004613d49565b6110fe565b6103086106aa366004613c8d565b611123565b6103086106bd366004614061565b611144565b61033a611182565b61031d6106d83660046140a2565b61118f565b6103086106eb366004613a1b565b6111bf565b6106fd60208201826140cc565b905061070c60408301836140cc565b90501461072c5760405163359a1bc360e01b815260040160405180910390fd5b60005b61073c60408301836140cc565b90508110156107c2576107b06107556020840184613dc2565b61076260208501856140cc565b8481811061077257610772614115565b90506020020160208101906107879190613dc2565b61079460408601866140cc565b858181106107a4576107a4614115565b90506020020135610c1c565b806107ba81614141565b91505061072f565b5050565b60006107d182611427565b92915050565b60606107e1611432565b905090565b6000600160401b8210156107fd576107d1826114c4565b6107d1826114eb565b81333b1580159061088057506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa15801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e919061415a565b155b156108a55760405163f6fa4cbd60e01b81523360048201526024015b60405180910390fd5b6001600160a01b0381163b1580159061092957506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa158015610903573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610927919061415a565b155b15610952576040516341b8d58160e11b81526001600160a01b038216600482015260240161089c565b61095c8383611576565b505050565b600060135461096e611596565b6107e19190614177565b6a4d494e5445525f524f4c4560a81b610990816115b2565b6107c2826115bc565b600160401b8110156109b05761095c83838361160b565b61095c83838361163b565b60008281526004602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610a305750604080518082019091526003546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610a4f906001600160601b03168761418a565b610a5991906141a1565b91519350909150505b9250929050565b6a4d494e5445525f524f4c4560a81b610a81816115b2565b6107c282611660565b600082815260208190526040902060010154610aa5816115b2565b61095c83836116af565b60606000610abc816110e7565b90506000816001600160401b03811115610ad857610ad8613a45565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50905060005b82811015610b5657610b1a600082610dfc565b828281518110610b2c57610b2c614115565b6001600160a01b039092166020928302919091019091015280610b4e81614141565b915050610b07565b5092915050565b6001600160a01b0381163314610bcd5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161089c565b6107c282826116d1565b6000610be2816115b2565b6107c26a4d494e5445525f524f4c4560a81b83610a8a565b6a4d494e5445525f524f4c4560a81b610c12816115b2565b61095c83836116f3565b61095c838383604051806020016040528060008152506110b3565b610c42335b8261177a565b610c6257604051630247e3a960e01b81526004810182905260240161089c565b610c6b816117a3565b50565b6a4d494e5445525f524f4c4560a81b610c86816115b2565b610c918484846117f6565b50505050565b60006107d1826118c1565b6000610cad816115b2565b601661095c8382614243565b6a4d494e5445525f524f4c4560a81b610cd1816115b2565b61095c838361191e565b6000600160401b821015610cf2576107d182611928565b6107d182611988565b6000610d06816115b2565b6107c28261199c565b6000610d1a816115b2565b6107c26a4d494e5445525f524f4c4560a81b836110fe565b60168054610d3f906141c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6b906141c3565b8015610db85780601f10610d8d57610100808354040283529160200191610db8565b820191906000526020600020905b815481529060010190602001808311610d9b57829003601f168201915b505050505081565b6000610dcb82611a91565b610dd483611b5c565b6107d19190614177565b610c6b81611be2565b6000610df2816115b2565b61095c8383611c6e565b6000828152600160205260408120610e149083611d28565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610e4f816115b2565b601561095c8382614243565b60606107e1611d34565b6a4d494e5445525f524f4c4560a81b610e7d816115b2565b6107c282611d43565b6000610e9182610cdb565b9050826001600160a01b0316816001600160a01b031614610ed757604051634fefd56160e01b8152600481018390526001600160a01b038216602482015260440161089c565b61095c82610c37565b6a4d494e5445525f524f4c4560a81b610ef8816115b2565b61095c8383611d92565b81333b15801590610f7c57506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa158015610f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7a919061415a565b155b15610f9c5760405163f6fa4cbd60e01b815233600482015260240161089c565b6001600160a01b0381163b1580159061102057506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e919061415a565b155b15611049576040516341b8d58160e11b81526001600160a01b038216600482015260240161089c565b61095c8383611e00565b6a4d494e5445525f524f4c4560a81b61106b816115b2565b60005b848110156110ab5761109986868381811061108b5761108b614115565b9050602002013585856117f6565b806110a381614141565b91505061106e565b505050505050565b600160401b8210156110d0576110cb84848484611e0a565b610c91565b610c9184848484611e3d565b60606107d182611e62565b60008181526001602052604081206107d190611ec8565b600082815260208190526040902060010154611119816115b2565b61095c83836116d1565b6a4d494e5445525f524f4c4560a81b61113b816115b2565b6107c282611ed2565b60005b8181101561095c5761117083838381811061116457611164614115565b90506020020135610c37565b8061117a81614141565b915050611147565b60158054610d3f906141c3565b6001600160a01b03808316600090815260126020908152604080832093851683529290529081205460ff16610e14565b6a4d494e5445525f524f4c4560a81b6111d7816115b2565b61095c8383611f21565b6111eb8282610e1b565b6107c2576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556112213390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610e14836001600160a01b038416611f2b565b60606107d16001600160a01b03831660145b6060600061129b83600261418a565b6112a6906002614177565b6001600160401b038111156112bd576112bd613a45565b6040519080825280601f01601f1916602001820160405280156112e7576020820181803683370190505b509050600360fc1b8160008151811061130257611302614115565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061133157611331614115565b60200101906001600160f81b031916908160001a905350600061135584600261418a565b611360906001614177565b90505b60018111156113d8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061139457611394614115565b1a60f81b8282815181106113aa576113aa614115565b60200101906001600160f81b031916908160001a90535060049490941c936113d181614302565b9050611363565b508315610e145760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161089c565b60006107d182611f7a565b6060600d8054611441906141c3565b80601f016020809104026020016040519081016040528092919081815260200182805461146d906141c3565b80156114ba5780601f1061148f576101008083540402835291602001916114ba565b820191906000526020600020905b81548152906001019060200180831161149d57829003601f168201915b5050505050905090565b60006114cf82611fba565b506000908152601160205260409020546001600160a01b031690565b60006114f6826118c1565b61155a5760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a20617070726f76656420717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161089c565b506000908152600a60205260409020546001600160a01b031690565b600160401b81101561158c576107c2828261200a565b6107c2828261211a565b60006115a0612222565b6115a861228c565b6107e19190614319565b610c6b81336122a0565b60005b81518110156107c25760008282815181106115dc576115dc614115565b602002602001015190506115f8816000015182602001516122f9565b508061160381614141565b9150506115bf565b61161433610c3c565b6116305760405162461bcd60e51b815260040161089c9061432c565b61095c83838361233a565b61164433610c3c565b6116305760405162461bcd60e51b815260040161089c90614379565b60005b81518110156107c257600082828151811061168057611680614115565b6020026020010151905061169c8160000151826020015161191e565b50806116a781614141565b915050611663565b6116b982826111e1565b600082815260016020526040902061095c9082611265565b6116db8282612541565b600082815260016020526040902061095c90826125a6565b600160401b811061171a5760405163b73c99f560e01b81526004810182905260240161089c565b600881901c600090815260146020526040902054600160ff83161b1615611757576040516305dcda1160e51b81526004810182905260240161089c565b61176182826125bb565b6013805490600061177183614141565b91905055505050565b6000600160401b821015611799576117928383612716565b90506107d1565b610e148383612775565b600160401b8110156117ed576117b88161283a565b600881901c60009081526014602052604081208054600160ff85161b17905560138054916117e583614302565b919050555050565b610c6b816128bd565b6127106001600160601b03821611156118215760405162461bcd60e51b815260040161089c906143cd565b6001600160a01b0382166118775760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d65746572730000000000604482015260640161089c565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600490529190942093519051909116600160a01b029116179055565b6000600160401b821015611915576000828152600f60205260409020546001600160a01b0316158015906107d15750600882901c600090815260146020526040902054600160ff84161b1615151592915050565b6107d1826128ff565b6107c28282612934565b6000818152600f60205260408120546001600160a01b0316806107d15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161089c565b6000806119948361294e565b509392505050565b6040516301ffc9a760e01b81526305a3b80960e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa1580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b919061415a565b611a2857604051631353be1160e11b815260040160405180910390fd5b600254604080516001600160a01b03928316815291831660208301527ff499b54d61d3fcb40299e3299af3ffe9ef1ee6e47194240f3cc5b6e09f7f6796910160405180910390a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b038216611aff5760405162461bcd60e51b815260206004820152602d60248201527f4552433732315073693a2062616c616e636520717565727920666f722074686560448201526c207a65726f206164647265737360981b606482015260840161089c565b6000600160401b5b600954811015610b5657611b1a816118c1565b15611b4c57611b2881610cdb565b6001600160a01b0316846001600160a01b031603611b4c57611b4982614141565b91505b611b5581614141565b9050611b07565b60006001600160a01b038216611bc65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161089c565b506001600160a01b031660009081526010602052604090205490565b60005b81518110156107c2576000828281518110611c0257611c02614115565b6020026020010151905060005b816020015151811015611c5957611c47826000015183602001518381518110611c3a57611c3a614115565b6020026020010151610e86565b80611c5181614141565b915050611c0f565b50508080611c6690614141565b915050611be5565b6127106001600160601b0382161115611c995760405162461bcd60e51b815260040161089c906143cd565b6001600160a01b038216611cef5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640161089c565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600355565b6000610e1483836129e5565b6060600e8054611441906141c3565b60005b81518110156107c2576000828281518110611d6357611d63614115565b60200260200101519050611d7f81600001518260200151612a0f565b5080611d8a81614141565b915050611d46565b600160401b8110611db95760405163b73c99f560e01b81526004810182905260240161089c565b600881901c600090815260146020526040902054600160ff83161b1615611df6576040516305dcda1160e51b81526004810182905260240161089c565b6117618282612a50565b6107c28282612a6a565b611e15335b8361177a565b611e315760405162461bcd60e51b815260040161089c9061432c565b610c9184848484612a75565b611e4633611e0f565b611e315760405162461bcd60e51b815260040161089c90614379565b6060611e6d82611fba565b6000611e77612a99565b90506000815111611e975760405180602001604052806000815250610e14565b80611ea184612aa8565b604051602001611eb2929190614417565b6040516020818303038152906040529392505050565b60006107d1825490565b60005b81518110156107c2576000828281518110611ef257611ef2614115565b60200260200101519050611f0e81600001518260200151611f21565b5080611f1981614141565b915050611ed5565b6107c28282612b3a565b6000818152600183016020526040812054611f72575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107d1565b5060006107d1565b60006001600160e01b031982166380ac58cd60e01b1480611fab57506001600160e01b03198216635b5e139f60e01b145b806107d157506107d182612cb3565b611fc3816118c1565b610c6b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161089c565b600061201582611928565b9050806001600160a01b0316836001600160a01b0316036120825760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161089c565b336001600160a01b038216148061209e575061209e813361118f565b6121105760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161089c565b61095c8383612cf3565b600061212582610cdb565b9050806001600160a01b0316836001600160a01b0316036121945760405162461bcd60e51b8152602060048201526024808201527f4552433732315073693a20617070726f76616c20746f2063757272656e74206f6044820152633bb732b960e11b606482015260840161089c565b336001600160a01b03821614806121b057506121b0813361118f565b6121105760405162461bcd60e51b815260206004820152603b60248201527f4552433732315073693a20617070726f76652063616c6c6572206973206e6f7460448201527f206f776e6572206e6f7220617070726f76656420666f7220616c6c0000000000606482015260840161089c565b6009546000906701000000000000009082906122429060081c6001614177565b9050815b81811015612286576000818152600c602052604090205461226681612d13565b6122709086614177565b945050808061227e90614141565b915050612246565b50505090565b6000600160401b6009546107e19190614319565b6122aa8282610e1b565b6107c2576122b78161127a565b6122c283602061128c565b6040516020016122d3929190614446565b60408051601f198184030181529082905262461bcd60e51b825261089c916004016139d8565b60005b815181101561095c576123288383838151811061231b5761231b614115565b6020026020010151611d92565b8061233281614141565b9150506122fc565b82823332148015906123b557506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa15801561238f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b3919061415a565b155b156123d55760405163937db65f60e01b815233600482015260240161089c565b6001600160a01b0382163b1580159061245957506002546040516305a3b80960e01b81526001600160a01b038481166004830152909116906305a3b80990602401602060405180830381865afa158015612433573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612457919061415a565b155b156124825760405163f934453160e01b81526001600160a01b038316600482015260240161089c565b6001600160a01b0381163b1580159061250657506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa1580156124e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612504919061415a565b155b1561252f57604051632a67242160e11b81526001600160a01b038216600482015260240161089c565b61253a858585612d32565b5050505050565b61254b8282610e1b565b156107c2576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610e14836001600160a01b038416612d54565b6001600160a01b0382166126115760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161089c565b61261a816118c1565b156126675760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161089c565b612670816118c1565b156126bd5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161089c565b6001600160a01b038216600081815260106020908152604080832080546001019055848352600f90915280822080546001600160a01b031916841790555183929190600080516020614618833981519152908290a45050565b60008061272283611928565b9050806001600160a01b0316846001600160a01b031614806127495750612749818561118f565b8061276d5750836001600160a01b0316612762846107e6565b6001600160a01b0316145b949350505050565b6000612780826118c1565b6127e45760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a206f70657261746f7220717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161089c565b60006127ef83610cdb565b9050806001600160a01b0316846001600160a01b0316148061282a5750836001600160a01b031661281f846107e6565b6001600160a01b0316145b8061276d575061276d818561118f565b600061284582611928565b905061285082611928565b600083815260116020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552601084528285208054600019019055878552600f90935281842080549091169055519293508492600080516020614618833981519152908390a45050565b60006128c882610cdb565b90506128d5600c83612e47565b60405182906000906001600160a01b03841690600080516020614618833981519152908390a45050565b600881901c6000908152600c6020526040812054600160ff1b60ff84161c161561292b57506000919050565b6107d182612e73565b6107c2828260405180602001604052806000815250612e92565b60008061295a836118c1565b6129bb5760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a206f776e657220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161089c565b6129c483612ed3565b6000818152600860205260409020546001600160a01b031694909350915050565b60008260000182815481106129fc576129fc614115565b9060005260206000200154905092915050565b60005b815181101561095c57612a3e83838381518110612a3157612a31614115565b60200260200101516116f3565b80612a4881614141565b915050612a12565b6107c2828260405180602001604052806000815250612ee0565b6107c2338383612eeb565b600160401b821015612a8d576110cb84848484612fb9565b610c9184848484612fec565b606060168054611441906141c3565b60606000612ab583613005565b60010190506000816001600160401b03811115612ad457612ad4613a45565b6040519080825280601f01601f191660200182016040528015612afe576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612b0857509392505050565b6000612b4560095490565b905060008211612ba55760405162461bcd60e51b815260206004820152602560248201527f4552433732315073693a207175616e74697479206d7573742062652067726561604482015264074657220360dc1b606482015260840161089c565b6001600160a01b038316612c075760405162461bcd60e51b815260206004820152602360248201527f4552433732315073693a206d696e7420746f20746865207a65726f206164647260448201526265737360e81b606482015260840161089c565b8160096000828254612c199190614177565b9091555050600081815260086020526040902080546001600160a01b0319166001600160a01b038516179055612c50600582612e47565b600080612c5d8484614177565b90506001600160a01b038516915082826000600080516020614618833981519152600080a4600183015b818114612cad5780836000600080516020614618833981519152600080a4600101612c87565b5061253a565b60006001600160e01b031982166380ac58cd60e01b1480612ce457506001600160e01b03198216635b5e139f60e01b145b806107d157506107d1826130dd565b600160401b811015612d09576107c28282613102565b6107c28282613170565b60005b8115612d2d57600019820190911690600101612d16565b919050565b600160401b811015612d495761095c8383836131a5565b61095c8383836132f7565b60008181526001830160205260408120548015612e3d576000612d78600183614319565b8554909150600090612d8c90600190614319565b9050818114612df1576000866000018281548110612dac57612dac614115565b9060005260206000200154905080876000018481548110612dcf57612dcf614115565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612e0257612e026144bb565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107d1565b60009150506107d1565b600881901c600090815260209290925260409091208054600160ff1b60ff9093169290921c9091179055565b6000612e7e60095490565b821080156107d1575050600160401b111590565b6000612e9d60095490565b9050612ea98484612b3a565b612eb76000858386866134cf565b610c915760405162461bcd60e51b815260040161089c906144d1565b60006107d1600583613606565b61095c8383836136fe565b816001600160a01b0316836001600160a01b031603612f4c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161089c565b6001600160a01b03838116600081815260126020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612fc484848461233a565b612fd084848484613731565b610c915760405162461bcd60e51b815260040161089c90614526565b612ff784848461233a565b612eb78484846001856134cf565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106130445772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613070576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061308e57662386f26fc10000830492506010015b6305f5e10083106130a6576305f5e100830492506008015b61271083106130ba57612710830492506004015b606483106130cc576064830492506002015b600a83106107d15760010192915050565b60006001600160e01b0319821663152a902d60e11b14806107d157506107d18261382a565b600081815260116020526040902080546001600160a01b0319166001600160a01b038416908117909155819061313782611928565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600a6020526040902080546001600160a01b0319166001600160a01b038416908117909155819061313782610cdb565b826001600160a01b03166131b882611928565b6001600160a01b0316146131de5760405162461bcd60e51b815260040161089c90614578565b6001600160a01b0382166132405760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161089c565b826001600160a01b031661325382611928565b6001600160a01b0316146132795760405162461bcd60e51b815260040161089c90614578565b600081815260116020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260108552838620805460001901905590871680865283862080546001019055868652600f909452828520805490921684179091559051849360008051602061461883398151915291a4505050565b6000806133038361294e565b91509150846001600160a01b0316826001600160a01b03161461337d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a207472616e73666572206f6620746f6b656e2074686160448201526b3a1034b9903737ba1037bbb760a11b606482015260840161089c565b6001600160a01b0384166133e35760405162461bcd60e51b815260206004820152602760248201527f4552433732315073693a207472616e7366657220746f20746865207a65726f206044820152666164647265737360c81b606482015260840161089c565b6133ee600084612cf3565b60006133fb846001614177565b600881901c600090815260056020526040902054909150600160ff1b60ff83161c1615801561342b575060095481105b1561346257600081815260086020526040902080546001600160a01b0319166001600160a01b038816179055613462600582612e47565b600084815260086020526040902080546001600160a01b0319166001600160a01b03871617905581841461349b5761349b600585612e47565b83856001600160a01b0316876001600160a01b031660008051602061461883398151915260405160405180910390a46110ab565b60006001600160a01b0385163b156135f957506001835b6134f08486614177565b8110156135f357604051630a85bd0160e11b81526001600160a01b0387169063150b7a02906135299033908b90869089906004016145bd565b6020604051808303816000875af1925050508015613564575060408051601f3d908101601f19168201909252613561918101906145fa565b60015b6135c1573d808015613592576040519150601f19603f3d011682016040523d82523d6000602084013e613597565b606091505b5080516000036135b95760405162461bcd60e51b815260040161089c906144d1565b805181602001fd5b8280156135de57506001600160e01b03198116630a85bd0160e11b145b925050806135eb81614141565b9150506134e6565b506135fd565b5060015b95945050505050565b600881901c60008181526020849052604081205490919060ff808516919082181c80156136485761363681613835565b60ff168203600884901b1793506136f5565b600083116136b55760405162461bcd60e51b815260206004820152603460248201527f4269744d6170733a205468652073657420626974206265666f7265207468652060448201527334b73232bc103237b2b9b713ba1032bc34b9ba1760611b606482015260840161089c565b5060001990910160008181526020869052604090205490919080156136f0576136dd81613835565b60ff0360ff16600884901b1793506136f5565b613648565b50505092915050565b613708838361389f565b6137156000848484613731565b61095c5760405162461bcd60e51b815260040161089c90614526565b60006001600160a01b0384163b1561381f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906137759033908990889088906004016145bd565b6020604051808303816000875af19250505080156137b0575060408051601f3d908101601f191682019092526137ad918101906145fa565b60015b613805573d8080156137de576040519150601f19603f3d011682016040523d82523d6000602084013e6137e3565b606091505b5080516000036135b95760405162461bcd60e51b815260040161089c90614526565b6001600160e01b031916630a85bd0160e11b14905061276d565b506001949350505050565b60006107d1826138a9565b60006040518061012001604052806101008152602001614638610100913960f87e818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff61387e856138ce565b02901c8151811061389157613891614115565b016020015160f81c92915050565b6107c282826125bb565b60006001600160e01b03198216635a05180f60e01b14806107d157506107d1826138e6565b60008082116138dc57600080fd5b5060008190031690565b60006001600160e01b03198216637965db0b60e01b14806107d157506301ffc9a760e01b6001600160e01b03198316146107d1565b60006020828403121561392d57600080fd5b81356001600160401b0381111561394357600080fd5b820160608185031215610e1457600080fd5b6001600160e01b031981168114610c6b57600080fd5b60006020828403121561397d57600080fd5b8135610e1481613955565b60005b838110156139a357818101518382015260200161398b565b50506000910152565b600081518084526139c4816020860160208601613988565b601f01601f19169290920160200192915050565b602081526000610e1460208301846139ac565b6000602082840312156139fd57600080fd5b5035919050565b80356001600160a01b0381168114612d2d57600080fd5b60008060408385031215613a2e57600080fd5b613a3783613a04565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613a7d57613a7d613a45565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613aab57613aab613a45565b604052919050565b60006001600160401b03821115613acc57613acc613a45565b5060051b60200190565b6000613ae9613ae484613ab3565b613a83565b8381529050602080820190600585811b850187811115613b0857600080fd5b855b81811015613bdb5780356001600160401b0380821115613b2a5760008081fd5b908801906040828c031215613b3f5760008081fd5b613b47613a5b565b613b5083613a04565b81528683013582811115613b645760008081fd5b8084019350508b601f840112613b7c57600091508182fd5b82359150613b8c613ae483613ab3565b82815291861b8301870191878101908d841115613ba95760008081fd5b938801935b83851015613bc757843582529388019390880190613bae565b828901525087525050938301938301613b0a565b50505050509392505050565b600060208284031215613bf957600080fd5b81356001600160401b03811115613c0f57600080fd5b8201601f81018413613c2057600080fd5b61276d84823560208401613ad6565b600080600060608486031215613c4457600080fd5b613c4d84613a04565b9250613c5b60208501613a04565b9150604084013590509250925092565b60008060408385031215613c7e57600080fd5b50508035926020909101359150565b60006020808385031215613ca057600080fd5b82356001600160401b03811115613cb657600080fd5b8301601f81018513613cc757600080fd5b8035613cd5613ae482613ab3565b81815260069190911b82018301908381019087831115613cf457600080fd5b928401925b82841015613d3e5760408489031215613d125760008081fd5b613d1a613a5b565b613d2385613a04565b81528486013586820152825260409093019290840190613cf9565b979650505050505050565b60008060408385031215613d5c57600080fd5b82359150613d6c60208401613a04565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613db65783516001600160a01b031683529284019291840191600101613d91565b50909695505050505050565b600060208284031215613dd457600080fd5b610e1482613a04565b80356001600160601b0381168114612d2d57600080fd5b600080600060608486031215613e0957600080fd5b83359250613e1960208501613a04565b9150613e2760408501613ddd565b90509250925092565b60006001600160401b03831115613e4957613e49613a45565b613e5c601f8401601f1916602001613a83565b9050828152838383011115613e7057600080fd5b828260208301376000602084830101529392505050565b600060208284031215613e9957600080fd5b81356001600160401b03811115613eaf57600080fd5b8201601f81018413613ec057600080fd5b61276d84823560208401613e30565b60008060408385031215613ee257600080fd5b613eeb83613a04565b9150613d6c60208401613ddd565b8015158114610c6b57600080fd5b60008060408385031215613f1a57600080fd5b613f2383613a04565b91506020830135613f3381613ef9565b809150509250929050565b60008083601f840112613f5057600080fd5b5081356001600160401b03811115613f6757600080fd5b6020830191508360208260051b8501011115610a6257600080fd5b60008060008060608587031215613f9857600080fd5b84356001600160401b03811115613fae57600080fd5b613fba87828801613f3e565b9095509350613fcd905060208601613a04565b9150613fdb60408601613ddd565b905092959194509250565b60008060008060808587031215613ffc57600080fd5b61400585613a04565b935061401360208601613a04565b92506040850135915060608501356001600160401b0381111561403557600080fd5b8501601f8101871361404657600080fd5b61405587823560208401613e30565b91505092959194509250565b6000806020838503121561407457600080fd5b82356001600160401b0381111561408a57600080fd5b61409685828601613f3e565b90969095509350505050565b600080604083850312156140b557600080fd5b6140be83613a04565b9150613d6c60208401613a04565b6000808335601e198436030181126140e357600080fd5b8301803591506001600160401b038211156140fd57600080fd5b6020019150600581901b3603821315610a6257600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016141535761415361412b565b5060010190565b60006020828403121561416c57600080fd5b8151610e1481613ef9565b808201808211156107d1576107d161412b565b80820281158282048414176107d1576107d161412b565b6000826141be57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806141d757607f821691505b6020821081036141f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561095c57600081815260208120601f850160051c810160208610156142245750805b601f850160051c820191505b818110156110ab57828155600101614230565b81516001600160401b0381111561425c5761425c613a45565b6142708161426a84546141c3565b846141fd565b602080601f8311600181146142a5576000841561428d5750858301515b600019600386901b1c1916600185901b1785556110ab565b600085815260208120601f198616915b828110156142d4578886015182559484019460019091019084016142b5565b50858210156142f25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000816143115761431161412b565b506000190190565b818103818111156107d1576107d161412b565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526034908201527f4552433732315073693a207472616e736665722063616c6c6572206973206e6f6040820152731d081bdddb995c881b9bdc88185c1c1c9bdd995960621b606082015260800190565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b60008351614429818460208801613988565b83519083019061443d818360208801613988565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161447e816017850160208801613988565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516144af816028840160208801613988565b01602801949350505050565b634e487b7160e01b600052603160045260246000fd5b60208082526035908201527f4552433732315073693a207472616e7366657220746f206e6f6e20455243373260408201527418a932b1b2b4bb32b91034b6b83632b6b2b73a32b960591b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906145f0908301846139ac565b9695505050505050565b60006020828403121561460c57600080fd5b8151610e148161395556feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0001020903110a19042112290b311a3905412245134d2a550c5d32651b6d3a7506264262237d468514804e8d2b95569d0d495ea533a966b11c886eb93bc176c9071727374353637324837e9b47af86c7155181ad4fd18ed32c9096db57d59ee30e2e4a6a5f92a6be3498aae067ddb2eb1d5989b56fd7baf33ca0c2ee77e5caf7ff0810182028303840444c545c646c7425617c847f8c949c48a4a8b087b8c0c816365272829aaec650acd0d28fdad4e22d6991bd97dfdcea58b4d6f29fede4f6fe0f1f2f3f4b5b6b607b8b93a3a7b7bf357199c5abcfd9e168bcdee9b3f1ecf5fd1e3e5a7a8aa2b670c4ced8bbe8f0f4fc3d79a1c3cde7effb78cce6facbf9f8a2646970667358221220f8fc88cc156435797aa3d9dc642f5ee1307c4e518ce35c0cb8a9c26fb3f4f44064736f6c63430008110033";
31564
+ const _bytecode$2 = "0x608060405260006013553480156200001657600080fd5b50604051620052f1380380620052f18339810160408190526200003991620007cd565b8787878787878787868681818181600662000055838262000960565b50600762000064828262000960565b50506801000000000000000060095550600d62000082838262000960565b50600e62000091828262000960565b50620000a69350600092508b915050620000f1565b620000b2828262000134565b620000bd8362000239565b6016620000cb868262000960565b506015620000da858262000960565b505050505050505050505050505050505062000b74565b6200010882826200025560201b620011e11760201c565b60008281526001602090815260409091206200012f91839062001265620002f5821b17901c565b505050565b6127106001600160601b0382161115620001a85760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b038216620002005760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016200019f565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600355565b6000620002468162000315565b620002518262000324565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000251576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002b13390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006200030c836001600160a01b0384166200041d565b90505b92915050565b6200032181336200046f565b50565b6040516301ffc9a760e01b81526305a3b80960e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa15801562000370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000396919062000a2c565b620003b45760405163d6f93fb760e01b815260040160405180910390fd5b600254604080516001600160a01b03928316815291831660208301527f3edc37a14cc8047c7c8a3f354311efe86c14848efd4e3765a3e1e57eea04ea76910160405180910390a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b600081815260018301602052604081205462000466575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200030f565b5060006200030f565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200025157620004ae81620004ff60201b6200127a1760201c565b620004c48360206200128c62000512821b17811c565b604051602001620004d792919062000a50565b60408051601f198184030181529082905262461bcd60e51b82526200019f9160040162000ac9565b60606200030f6001600160a01b03831660145b606060006200052383600262000b14565b6200053090600262000b2e565b6001600160401b038111156200054a576200054a620006e8565b6040519080825280601f01601f19166020018201604052801562000575576020820181803683370190505b509050600360fc1b8160008151811062000593576200059362000b44565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110620005c557620005c562000b44565b60200101906001600160f81b031916908160001a9053506000620005eb84600262000b14565b620005f890600162000b2e565b90505b60018111156200067a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062000630576200063062000b44565b1a60f81b82828151811062000649576200064962000b44565b60200101906001600160f81b031916908160001a90535060049490941c93620006728162000b5a565b9050620005fb565b5083156200030c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016200019f565b80516001600160a01b0381168114620006e357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200071b57818101518382015260200162000701565b50506000910152565b600082601f8301126200073657600080fd5b81516001600160401b0380821115620007535762000753620006e8565b604051601f8301601f19908116603f011681019082821181831017156200077e576200077e620006e8565b816040528381528660208588010111156200079857600080fd5b620007ab846020830160208901620006fe565b9695505050505050565b80516001600160601b0381168114620006e357600080fd5b600080600080600080600080610100898b031215620007eb57600080fd5b620007f689620006cb565b60208a01519098506001600160401b03808211156200081457600080fd5b620008228c838d0162000724565b985060408b01519150808211156200083957600080fd5b620008478c838d0162000724565b975060608b01519150808211156200085e57600080fd5b6200086c8c838d0162000724565b965060808b01519150808211156200088357600080fd5b50620008928b828c0162000724565b945050620008a360a08a01620006cb565b9250620008b360c08a01620006cb565b9150620008c360e08a01620007b5565b90509295985092959890939650565b600181811c90821680620008e757607f821691505b6020821081036200090857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012f57600081815260208120601f850160051c81016020861015620009375750805b601f850160051c820191505b81811015620009585782815560010162000943565b505050505050565b81516001600160401b038111156200097c576200097c620006e8565b62000994816200098d8454620008d2565b846200090e565b602080601f831160018114620009cc5760008415620009b35750858301515b600019600386901b1c1916600185901b17855562000958565b600085815260208120601f198616915b82811015620009fd57888601518255948401946001909101908401620009dc565b508582101562000a1c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a3f57600080fd5b815180151581146200030c57600080fd5b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162000a8a816017850160208801620006fe565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835162000abd816028840160208801620006fe565b01602801949350505050565b602081526000825180602084015262000aea816040850160208701620006fe565b601f01601f19169190910160400192915050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200030f576200030f62000afe565b808201808211156200030f576200030f62000afe565b634e487b7160e01b600052603260045260246000fd5b60008162000b6c5762000b6c62000afe565b506000190190565b61476d8062000b846000396000f3fe608060405234801561001057600080fd5b50600436106102f05760003560e01c806369e2f0fb1161019d578063a22cb465116100e9578063d547741f116100a2578063e4e18f6d1161007c578063e4e18f6d146106af578063e8a3d485146106c2578063e985e9c5146106ca578063eea98768146106dd57600080fd5b8063d547741f14610676578063e192785914610689578063e4623c1b1461069c57600080fd5b8063a22cb46514610602578063a701281614610615578063b88d4fde14610628578063c87b56dd1461063b578063ca15c8731461064e578063d53913931461066157600080fd5b806391d14854116101565780639e2641a3116101305780639e2641a3146105c15780639f15d700146105d4578063a1448194146105e7578063a217fddf146105fa57600080fd5b806391d1485414610593578063938e3d7b146105a657806395d89b41146105b957600080fd5b806369e2f0fb1461052c5780636c0360eb1461053f57806370a082311461054757806374f16a811461055a578063885e7a081461056d5780639010d07c1461058057600080fd5b80632d2c5a8b1161025c57806342842e0e116102155780634f558e79116101ef5780634f558e79146104e057806355f804b3146104f3578063567e4075146105065780636352211e1461051957600080fd5b806342842e0e146104a757806342966c68146104ba578063439aed34146104cd57600080fd5b80632d2c5a8b146104335780632f2ff15d1461044657806331ae450b1461045957806336568abe1461046e5780633dd1eb611461048157806340c10f191461049457600080fd5b80631f8ebbd1116102ae5780631f8ebbd11461039b578063234af046146103a557806323b872dd146103b8578063248a9ca3146103cb57806329326f29146103ee5780632a55205a1461040157600080fd5b80628ad946146102f557806301ffc9a71461030a57806306fdde0314610332578063081812fc14610347578063095ea7b31461037257806318160ddd14610385575b600080fd5b61030861030336600461391b565b6106f0565b005b61031d61031836600461396b565b6107c6565b60405190151581526020015b60405180910390f35b61033a6107d7565b60405161032991906139d8565b61035a6103553660046139eb565b6107e6565b6040516001600160a01b039091168152602001610329565b610308610380366004613a1b565b610806565b61038d610961565b604051908152602001610329565b600160401b61038d565b6103086103b3366004613be7565b610978565b6103086103c6366004613c2f565b610999565b61038d6103d93660046139eb565b60009081526020819052604090206001015490565b60025461035a906001600160a01b031681565b61041461040f366004613c6b565b6109bb565b604080516001600160a01b039093168352602083019190915201610329565b610308610441366004613c8d565b610a69565b610308610454366004613d49565b610a8a565b610461610aaf565b6040516103299190613d75565b61030861047c366004613d49565b610b5d565b61030861048f366004613dc2565b610bd7565b6103086104a2366004613a1b565b610bfa565b6103086104b5366004613c2f565b610c1c565b6103086104c83660046139eb565b610c37565b6103086104db366004613df4565b610c6e565b61031d6104ee3660046139eb565b610c97565b610308610501366004613e87565b610ca2565b610308610514366004613a1b565b610cb9565b61035a6105273660046139eb565b610cdb565b61030861053a366004613dc2565b610cfb565b61033a610d1e565b61038d610555366004613dc2565b610dac565b610308610568366004613be7565b610dca565b61030861057b366004613ecf565b610dd3565b61035a61058e366004613c6b565b610de8565b61031d6105a1366004613d49565b610e07565b6103086105b4366004613e87565b610e30565b61033a610e47565b6103086105cf366004613be7565b610e51565b6103086105e2366004613a1b565b610e72565b6103086105f5366004613a1b565b610ecc565b61038d600081565b610308610610366004613f07565b610eee565b610308610623366004613f82565b61103f565b610308610636366004613fe6565b61109f565b61033a6106493660046139eb565b6110c8565b61038d61065c3660046139eb565b6110d3565b61038d6a4d494e5445525f524f4c4560a81b81565b610308610684366004613d49565b6110ea565b610308610697366004613c8d565b61110f565b6103086106aa366004614061565b611130565b6103086106bd366004613dc2565b61116e565b61033a611182565b61031d6106d83660046140a2565b61118f565b6103086106eb366004613a1b565b6111bf565b6106fd60208201826140cc565b905061070c60408301836140cc565b90501461072c5760405163359a1bc360e01b815260040160405180910390fd5b60005b61073c60408301836140cc565b90508110156107c2576107b06107556020840184613dc2565b61076260208501856140cc565b8481811061077257610772614115565b90506020020160208101906107879190613dc2565b61079460408601866140cc565b858181106107a4576107a4614115565b90506020020135610c1c565b806107ba81614141565b91505061072f565b5050565b60006107d182611427565b92915050565b60606107e1611432565b905090565b6000600160401b8210156107fd576107d1826114c4565b6107d1826114eb565b81333b1580159061088057506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa15801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e919061415a565b155b156108a55760405163f6fa4cbd60e01b81523360048201526024015b60405180910390fd5b6001600160a01b0381163b1580159061092957506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa158015610903573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610927919061415a565b155b15610952576040516341b8d58160e11b81526001600160a01b038216600482015260240161089c565b61095c8383611576565b505050565b600060135461096e611596565b6107e19190614177565b6a4d494e5445525f524f4c4560a81b610990816115b2565b6107c2826115bc565b600160401b8110156109b05761095c83838361160b565b61095c83838361163b565b60008281526004602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610a305750604080518082019091526003546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610a4f906001600160601b03168761418a565b610a5991906141a1565b91519350909150505b9250929050565b6a4d494e5445525f524f4c4560a81b610a81816115b2565b6107c282611660565b600082815260208190526040902060010154610aa5816115b2565b61095c83836116af565b60606000610abc816110d3565b90506000816001600160401b03811115610ad857610ad8613a45565b604051908082528060200260200182016040528015610b01578160200160208202803683370190505b50905060005b82811015610b5657610b1a600082610de8565b828281518110610b2c57610b2c614115565b6001600160a01b039092166020928302919091019091015280610b4e81614141565b915050610b07565b5092915050565b6001600160a01b0381163314610bcd5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161089c565b6107c282826116d1565b6000610be2816115b2565b6107c26a4d494e5445525f524f4c4560a81b83610a8a565b6a4d494e5445525f524f4c4560a81b610c12816115b2565b61095c83836116f3565b61095c8383836040518060200160405280600081525061109f565b610c42335b8261177a565b610c6257604051630247e3a960e01b81526004810182905260240161089c565b610c6b816117a3565b50565b6a4d494e5445525f524f4c4560a81b610c86816115b2565b610c918484846117f6565b50505050565b60006107d1826118c1565b6000610cad816115b2565b601661095c8382614243565b6a4d494e5445525f524f4c4560a81b610cd1816115b2565b61095c838361191e565b6000600160401b821015610cf2576107d182611928565b6107d182611988565b6000610d06816115b2565b6107c26a4d494e5445525f524f4c4560a81b836110ea565b60168054610d2b906141c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d57906141c3565b8015610da45780601f10610d7957610100808354040283529160200191610da4565b820191906000526020600020905b815481529060010190602001808311610d8757829003601f168201915b505050505081565b6000610db78261199c565b610dc083611a67565b6107d19190614177565b610c6b81611aed565b6000610dde816115b2565b61095c8383611b79565b6000828152600160205260408120610e009083611c33565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610e3b816115b2565b601561095c8382614243565b60606107e1611c3f565b6a4d494e5445525f524f4c4560a81b610e69816115b2565b6107c282611c4e565b6000610e7d82610cdb565b9050826001600160a01b0316816001600160a01b031614610ec357604051634fefd56160e01b8152600481018390526001600160a01b038216602482015260440161089c565b61095c82610c37565b6a4d494e5445525f524f4c4560a81b610ee4816115b2565b61095c8383611c9d565b81333b15801590610f6857506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa158015610f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f66919061415a565b155b15610f885760405163f6fa4cbd60e01b815233600482015260240161089c565b6001600160a01b0381163b1580159061100c57506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa158015610fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100a919061415a565b155b15611035576040516341b8d58160e11b81526001600160a01b038216600482015260240161089c565b61095c8383611d0b565b6a4d494e5445525f524f4c4560a81b611057816115b2565b60005b848110156110975761108586868381811061107757611077614115565b9050602002013585856117f6565b8061108f81614141565b91505061105a565b505050505050565b600160401b8210156110bc576110b784848484611d15565b610c91565b610c9184848484611d48565b60606107d182611d6d565b60008181526001602052604081206107d190611dd3565b600082815260208190526040902060010154611105816115b2565b61095c83836116d1565b6a4d494e5445525f524f4c4560a81b611127816115b2565b6107c282611ddd565b60005b8181101561095c5761115c83838381811061115057611150614115565b90506020020135610c37565b8061116681614141565b915050611133565b6000611179816115b2565b6107c282611e2c565b60158054610d2b906141c3565b6001600160a01b03808316600090815260126020908152604080832093851683529290529081205460ff16610e00565b6a4d494e5445525f524f4c4560a81b6111d7816115b2565b61095c8383611f21565b6111eb8282610e07565b6107c2576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556112213390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610e00836001600160a01b038416611f2b565b60606107d16001600160a01b03831660145b6060600061129b83600261418a565b6112a6906002614177565b6001600160401b038111156112bd576112bd613a45565b6040519080825280601f01601f1916602001820160405280156112e7576020820181803683370190505b509050600360fc1b8160008151811061130257611302614115565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061133157611331614115565b60200101906001600160f81b031916908160001a905350600061135584600261418a565b611360906001614177565b90505b60018111156113d8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061139457611394614115565b1a60f81b8282815181106113aa576113aa614115565b60200101906001600160f81b031916908160001a90535060049490941c936113d181614302565b9050611363565b508315610e005760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161089c565b60006107d182611f7a565b6060600d8054611441906141c3565b80601f016020809104026020016040519081016040528092919081815260200182805461146d906141c3565b80156114ba5780601f1061148f576101008083540402835291602001916114ba565b820191906000526020600020905b81548152906001019060200180831161149d57829003601f168201915b5050505050905090565b60006114cf82611fba565b506000908152601160205260409020546001600160a01b031690565b60006114f6826118c1565b61155a5760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a20617070726f76656420717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161089c565b506000908152600a60205260409020546001600160a01b031690565b600160401b81101561158c576107c2828261200a565b6107c2828261211a565b60006115a0612222565b6115a861228c565b6107e19190614319565b610c6b81336122a0565b60005b81518110156107c25760008282815181106115dc576115dc614115565b602002602001015190506115f8816000015182602001516122f9565b508061160381614141565b9150506115bf565b61161433610c3c565b6116305760405162461bcd60e51b815260040161089c9061432c565b61095c83838361233a565b61164433610c3c565b6116305760405162461bcd60e51b815260040161089c90614379565b60005b81518110156107c257600082828151811061168057611680614115565b6020026020010151905061169c8160000151826020015161191e565b50806116a781614141565b915050611663565b6116b982826111e1565b600082815260016020526040902061095c9082611265565b6116db8282612541565b600082815260016020526040902061095c90826125a6565b600160401b811061171a5760405163b73c99f560e01b81526004810182905260240161089c565b600881901c600090815260146020526040902054600160ff83161b1615611757576040516305dcda1160e51b81526004810182905260240161089c565b61176182826125bb565b6013805490600061177183614141565b91905055505050565b6000600160401b821015611799576117928383612716565b90506107d1565b610e008383612775565b600160401b8110156117ed576117b88161283a565b600881901c60009081526014602052604081208054600160ff85161b17905560138054916117e583614302565b919050555050565b610c6b816128bd565b6127106001600160601b03821611156118215760405162461bcd60e51b815260040161089c906143cd565b6001600160a01b0382166118775760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d65746572730000000000604482015260640161089c565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600490529190942093519051909116600160a01b029116179055565b6000600160401b821015611915576000828152600f60205260409020546001600160a01b0316158015906107d15750600882901c600090815260146020526040902054600160ff84161b1615151592915050565b6107d1826128ff565b6107c28282612934565b6000818152600f60205260408120546001600160a01b0316806107d15760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161089c565b6000806119948361294e565b509392505050565b60006001600160a01b038216611a0a5760405162461bcd60e51b815260206004820152602d60248201527f4552433732315073693a2062616c616e636520717565727920666f722074686560448201526c207a65726f206164647265737360981b606482015260840161089c565b6000600160401b5b600954811015610b5657611a25816118c1565b15611a5757611a3381610cdb565b6001600160a01b0316846001600160a01b031603611a5757611a5482614141565b91505b611a6081614141565b9050611a12565b60006001600160a01b038216611ad15760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161089c565b506001600160a01b031660009081526010602052604090205490565b60005b81518110156107c2576000828281518110611b0d57611b0d614115565b6020026020010151905060005b816020015151811015611b6457611b52826000015183602001518381518110611b4557611b45614115565b6020026020010151610e72565b80611b5c81614141565b915050611b1a565b50508080611b7190614141565b915050611af0565b6127106001600160601b0382161115611ba45760405162461bcd60e51b815260040161089c906143cd565b6001600160a01b038216611bfa5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640161089c565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600355565b6000610e0083836129e5565b6060600e8054611441906141c3565b60005b81518110156107c2576000828281518110611c6e57611c6e614115565b60200260200101519050611c8a81600001518260200151612a0f565b5080611c9581614141565b915050611c51565b600160401b8110611cc45760405163b73c99f560e01b81526004810182905260240161089c565b600881901c600090815260146020526040902054600160ff83161b1615611d01576040516305dcda1160e51b81526004810182905260240161089c565b6117618282612a50565b6107c28282612a6a565b611d20335b8361177a565b611d3c5760405162461bcd60e51b815260040161089c9061432c565b610c9184848484612a75565b611d5133611d1a565b611d3c5760405162461bcd60e51b815260040161089c90614379565b6060611d7882611fba565b6000611d82612a99565b90506000815111611da25760405180602001604052806000815250610e00565b80611dac84612aa8565b604051602001611dbd929190614417565b6040516020818303038152906040529392505050565b60006107d1825490565b60005b81518110156107c2576000828281518110611dfd57611dfd614115565b60200260200101519050611e1981600001518260200151611f21565b5080611e2481614141565b915050611de0565b6040516301ffc9a760e01b81526305a3b80960e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015611e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9b919061415a565b611eb85760405163d6f93fb760e01b815260040160405180910390fd5b600254604080516001600160a01b03928316815291831660208301527f3edc37a14cc8047c7c8a3f354311efe86c14848efd4e3765a3e1e57eea04ea76910160405180910390a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b6107c28282612b3a565b6000818152600183016020526040812054611f72575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107d1565b5060006107d1565b60006001600160e01b031982166380ac58cd60e01b1480611fab57506001600160e01b03198216635b5e139f60e01b145b806107d157506107d182612cb3565b611fc3816118c1565b610c6b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161089c565b600061201582611928565b9050806001600160a01b0316836001600160a01b0316036120825760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161089c565b336001600160a01b038216148061209e575061209e813361118f565b6121105760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161089c565b61095c8383612cf3565b600061212582610cdb565b9050806001600160a01b0316836001600160a01b0316036121945760405162461bcd60e51b8152602060048201526024808201527f4552433732315073693a20617070726f76616c20746f2063757272656e74206f6044820152633bb732b960e11b606482015260840161089c565b336001600160a01b03821614806121b057506121b0813361118f565b6121105760405162461bcd60e51b815260206004820152603b60248201527f4552433732315073693a20617070726f76652063616c6c6572206973206e6f7460448201527f206f776e6572206e6f7220617070726f76656420666f7220616c6c0000000000606482015260840161089c565b6009546000906701000000000000009082906122429060081c6001614177565b9050815b81811015612286576000818152600c602052604090205461226681612d13565b6122709086614177565b945050808061227e90614141565b915050612246565b50505090565b6000600160401b6009546107e19190614319565b6122aa8282610e07565b6107c2576122b78161127a565b6122c283602061128c565b6040516020016122d3929190614446565b60408051601f198184030181529082905262461bcd60e51b825261089c916004016139d8565b60005b815181101561095c576123288383838151811061231b5761231b614115565b6020026020010151611c9d565b8061233281614141565b9150506122fc565b82823332148015906123b557506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa15801561238f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b3919061415a565b155b156123d55760405163937db65f60e01b815233600482015260240161089c565b6001600160a01b0382163b1580159061245957506002546040516305a3b80960e01b81526001600160a01b038481166004830152909116906305a3b80990602401602060405180830381865afa158015612433573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612457919061415a565b155b156124825760405163f934453160e01b81526001600160a01b038316600482015260240161089c565b6001600160a01b0381163b1580159061250657506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa1580156124e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612504919061415a565b155b1561252f57604051632a67242160e11b81526001600160a01b038216600482015260240161089c565b61253a858585612d32565b5050505050565b61254b8282610e07565b156107c2576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610e00836001600160a01b038416612d54565b6001600160a01b0382166126115760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161089c565b61261a816118c1565b156126675760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161089c565b612670816118c1565b156126bd5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161089c565b6001600160a01b038216600081815260106020908152604080832080546001019055848352600f90915280822080546001600160a01b031916841790555183929190600080516020614618833981519152908290a45050565b60008061272283611928565b9050806001600160a01b0316846001600160a01b031614806127495750612749818561118f565b8061276d5750836001600160a01b0316612762846107e6565b6001600160a01b0316145b949350505050565b6000612780826118c1565b6127e45760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a206f70657261746f7220717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161089c565b60006127ef83610cdb565b9050806001600160a01b0316846001600160a01b0316148061282a5750836001600160a01b031661281f846107e6565b6001600160a01b0316145b8061276d575061276d818561118f565b600061284582611928565b905061285082611928565b600083815260116020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552601084528285208054600019019055878552600f90935281842080549091169055519293508492600080516020614618833981519152908390a45050565b60006128c882610cdb565b90506128d5600c83612e47565b60405182906000906001600160a01b03841690600080516020614618833981519152908390a45050565b600881901c6000908152600c6020526040812054600160ff1b60ff84161c161561292b57506000919050565b6107d182612e73565b6107c2828260405180602001604052806000815250612e92565b60008061295a836118c1565b6129bb5760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a206f776e657220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161089c565b6129c483612ed3565b6000818152600860205260409020546001600160a01b031694909350915050565b60008260000182815481106129fc576129fc614115565b9060005260206000200154905092915050565b60005b815181101561095c57612a3e83838381518110612a3157612a31614115565b60200260200101516116f3565b80612a4881614141565b915050612a12565b6107c2828260405180602001604052806000815250612ee0565b6107c2338383612eeb565b600160401b821015612a8d576110b784848484612fb9565b610c9184848484612fec565b606060168054611441906141c3565b60606000612ab583613005565b60010190506000816001600160401b03811115612ad457612ad4613a45565b6040519080825280601f01601f191660200182016040528015612afe576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612b0857509392505050565b6000612b4560095490565b905060008211612ba55760405162461bcd60e51b815260206004820152602560248201527f4552433732315073693a207175616e74697479206d7573742062652067726561604482015264074657220360dc1b606482015260840161089c565b6001600160a01b038316612c075760405162461bcd60e51b815260206004820152602360248201527f4552433732315073693a206d696e7420746f20746865207a65726f206164647260448201526265737360e81b606482015260840161089c565b8160096000828254612c199190614177565b9091555050600081815260086020526040902080546001600160a01b0319166001600160a01b038516179055612c50600582612e47565b600080612c5d8484614177565b90506001600160a01b038516915082826000600080516020614618833981519152600080a4600183015b818114612cad5780836000600080516020614618833981519152600080a4600101612c87565b5061253a565b60006001600160e01b031982166380ac58cd60e01b1480612ce457506001600160e01b03198216635b5e139f60e01b145b806107d157506107d1826130dd565b600160401b811015612d09576107c28282613102565b6107c28282613170565b60005b8115612d2d57600019820190911690600101612d16565b919050565b600160401b811015612d495761095c8383836131a5565b61095c8383836132f7565b60008181526001830160205260408120548015612e3d576000612d78600183614319565b8554909150600090612d8c90600190614319565b9050818114612df1576000866000018281548110612dac57612dac614115565b9060005260206000200154905080876000018481548110612dcf57612dcf614115565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612e0257612e026144bb565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107d1565b60009150506107d1565b600881901c600090815260209290925260409091208054600160ff1b60ff9093169290921c9091179055565b6000612e7e60095490565b821080156107d1575050600160401b111590565b6000612e9d60095490565b9050612ea98484612b3a565b612eb76000858386866134cf565b610c915760405162461bcd60e51b815260040161089c906144d1565b60006107d1600583613606565b61095c8383836136fe565b816001600160a01b0316836001600160a01b031603612f4c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161089c565b6001600160a01b03838116600081815260126020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612fc484848461233a565b612fd084848484613731565b610c915760405162461bcd60e51b815260040161089c90614526565b612ff784848461233a565b612eb78484846001856134cf565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106130445772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613070576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061308e57662386f26fc10000830492506010015b6305f5e10083106130a6576305f5e100830492506008015b61271083106130ba57612710830492506004015b606483106130cc576064830492506002015b600a83106107d15760010192915050565b60006001600160e01b0319821663152a902d60e11b14806107d157506107d18261382a565b600081815260116020526040902080546001600160a01b0319166001600160a01b038416908117909155819061313782611928565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600a6020526040902080546001600160a01b0319166001600160a01b038416908117909155819061313782610cdb565b826001600160a01b03166131b882611928565b6001600160a01b0316146131de5760405162461bcd60e51b815260040161089c90614578565b6001600160a01b0382166132405760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161089c565b826001600160a01b031661325382611928565b6001600160a01b0316146132795760405162461bcd60e51b815260040161089c90614578565b600081815260116020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260108552838620805460001901905590871680865283862080546001019055868652600f909452828520805490921684179091559051849360008051602061461883398151915291a4505050565b6000806133038361294e565b91509150846001600160a01b0316826001600160a01b03161461337d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a207472616e73666572206f6620746f6b656e2074686160448201526b3a1034b9903737ba1037bbb760a11b606482015260840161089c565b6001600160a01b0384166133e35760405162461bcd60e51b815260206004820152602760248201527f4552433732315073693a207472616e7366657220746f20746865207a65726f206044820152666164647265737360c81b606482015260840161089c565b6133ee600084612cf3565b60006133fb846001614177565b600881901c600090815260056020526040902054909150600160ff1b60ff83161c1615801561342b575060095481105b1561346257600081815260086020526040902080546001600160a01b0319166001600160a01b038816179055613462600582612e47565b600084815260086020526040902080546001600160a01b0319166001600160a01b03871617905581841461349b5761349b600585612e47565b83856001600160a01b0316876001600160a01b031660008051602061461883398151915260405160405180910390a4611097565b60006001600160a01b0385163b156135f957506001835b6134f08486614177565b8110156135f357604051630a85bd0160e11b81526001600160a01b0387169063150b7a02906135299033908b90869089906004016145bd565b6020604051808303816000875af1925050508015613564575060408051601f3d908101601f19168201909252613561918101906145fa565b60015b6135c1573d808015613592576040519150601f19603f3d011682016040523d82523d6000602084013e613597565b606091505b5080516000036135b95760405162461bcd60e51b815260040161089c906144d1565b805181602001fd5b8280156135de57506001600160e01b03198116630a85bd0160e11b145b925050806135eb81614141565b9150506134e6565b506135fd565b5060015b95945050505050565b600881901c60008181526020849052604081205490919060ff808516919082181c80156136485761363681613835565b60ff168203600884901b1793506136f5565b600083116136b55760405162461bcd60e51b815260206004820152603460248201527f4269744d6170733a205468652073657420626974206265666f7265207468652060448201527334b73232bc103237b2b9b713ba1032bc34b9ba1760611b606482015260840161089c565b5060001990910160008181526020869052604090205490919080156136f0576136dd81613835565b60ff0360ff16600884901b1793506136f5565b613648565b50505092915050565b613708838361389f565b6137156000848484613731565b61095c5760405162461bcd60e51b815260040161089c90614526565b60006001600160a01b0384163b1561381f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906137759033908990889088906004016145bd565b6020604051808303816000875af19250505080156137b0575060408051601f3d908101601f191682019092526137ad918101906145fa565b60015b613805573d8080156137de576040519150601f19603f3d011682016040523d82523d6000602084013e6137e3565b606091505b5080516000036135b95760405162461bcd60e51b815260040161089c90614526565b6001600160e01b031916630a85bd0160e11b14905061276d565b506001949350505050565b60006107d1826138a9565b60006040518061012001604052806101008152602001614638610100913960f87e818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff61387e856138ce565b02901c8151811061389157613891614115565b016020015160f81c92915050565b6107c282826125bb565b60006001600160e01b03198216635a05180f60e01b14806107d157506107d1826138e6565b60008082116138dc57600080fd5b5060008190031690565b60006001600160e01b03198216637965db0b60e01b14806107d157506301ffc9a760e01b6001600160e01b03198316146107d1565b60006020828403121561392d57600080fd5b81356001600160401b0381111561394357600080fd5b820160608185031215610e0057600080fd5b6001600160e01b031981168114610c6b57600080fd5b60006020828403121561397d57600080fd5b8135610e0081613955565b60005b838110156139a357818101518382015260200161398b565b50506000910152565b600081518084526139c4816020860160208601613988565b601f01601f19169290920160200192915050565b602081526000610e0060208301846139ac565b6000602082840312156139fd57600080fd5b5035919050565b80356001600160a01b0381168114612d2d57600080fd5b60008060408385031215613a2e57600080fd5b613a3783613a04565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613a7d57613a7d613a45565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613aab57613aab613a45565b604052919050565b60006001600160401b03821115613acc57613acc613a45565b5060051b60200190565b6000613ae9613ae484613ab3565b613a83565b8381529050602080820190600585811b850187811115613b0857600080fd5b855b81811015613bdb5780356001600160401b0380821115613b2a5760008081fd5b908801906040828c031215613b3f5760008081fd5b613b47613a5b565b613b5083613a04565b81528683013582811115613b645760008081fd5b8084019350508b601f840112613b7c57600091508182fd5b82359150613b8c613ae483613ab3565b82815291861b8301870191878101908d841115613ba95760008081fd5b938801935b83851015613bc757843582529388019390880190613bae565b828901525087525050938301938301613b0a565b50505050509392505050565b600060208284031215613bf957600080fd5b81356001600160401b03811115613c0f57600080fd5b8201601f81018413613c2057600080fd5b61276d84823560208401613ad6565b600080600060608486031215613c4457600080fd5b613c4d84613a04565b9250613c5b60208501613a04565b9150604084013590509250925092565b60008060408385031215613c7e57600080fd5b50508035926020909101359150565b60006020808385031215613ca057600080fd5b82356001600160401b03811115613cb657600080fd5b8301601f81018513613cc757600080fd5b8035613cd5613ae482613ab3565b81815260069190911b82018301908381019087831115613cf457600080fd5b928401925b82841015613d3e5760408489031215613d125760008081fd5b613d1a613a5b565b613d2385613a04565b81528486013586820152825260409093019290840190613cf9565b979650505050505050565b60008060408385031215613d5c57600080fd5b82359150613d6c60208401613a04565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613db65783516001600160a01b031683529284019291840191600101613d91565b50909695505050505050565b600060208284031215613dd457600080fd5b610e0082613a04565b80356001600160601b0381168114612d2d57600080fd5b600080600060608486031215613e0957600080fd5b83359250613e1960208501613a04565b9150613e2760408501613ddd565b90509250925092565b60006001600160401b03831115613e4957613e49613a45565b613e5c601f8401601f1916602001613a83565b9050828152838383011115613e7057600080fd5b828260208301376000602084830101529392505050565b600060208284031215613e9957600080fd5b81356001600160401b03811115613eaf57600080fd5b8201601f81018413613ec057600080fd5b61276d84823560208401613e30565b60008060408385031215613ee257600080fd5b613eeb83613a04565b9150613d6c60208401613ddd565b8015158114610c6b57600080fd5b60008060408385031215613f1a57600080fd5b613f2383613a04565b91506020830135613f3381613ef9565b809150509250929050565b60008083601f840112613f5057600080fd5b5081356001600160401b03811115613f6757600080fd5b6020830191508360208260051b8501011115610a6257600080fd5b60008060008060608587031215613f9857600080fd5b84356001600160401b03811115613fae57600080fd5b613fba87828801613f3e565b9095509350613fcd905060208601613a04565b9150613fdb60408601613ddd565b905092959194509250565b60008060008060808587031215613ffc57600080fd5b61400585613a04565b935061401360208601613a04565b92506040850135915060608501356001600160401b0381111561403557600080fd5b8501601f8101871361404657600080fd5b61405587823560208401613e30565b91505092959194509250565b6000806020838503121561407457600080fd5b82356001600160401b0381111561408a57600080fd5b61409685828601613f3e565b90969095509350505050565b600080604083850312156140b557600080fd5b6140be83613a04565b9150613d6c60208401613a04565b6000808335601e198436030181126140e357600080fd5b8301803591506001600160401b038211156140fd57600080fd5b6020019150600581901b3603821315610a6257600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016141535761415361412b565b5060010190565b60006020828403121561416c57600080fd5b8151610e0081613ef9565b808201808211156107d1576107d161412b565b80820281158282048414176107d1576107d161412b565b6000826141be57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806141d757607f821691505b6020821081036141f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561095c57600081815260208120601f850160051c810160208610156142245750805b601f850160051c820191505b8181101561109757828155600101614230565b81516001600160401b0381111561425c5761425c613a45565b6142708161426a84546141c3565b846141fd565b602080601f8311600181146142a5576000841561428d5750858301515b600019600386901b1c1916600185901b178555611097565b600085815260208120601f198616915b828110156142d4578886015182559484019460019091019084016142b5565b50858210156142f25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000816143115761431161412b565b506000190190565b818103818111156107d1576107d161412b565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526034908201527f4552433732315073693a207472616e736665722063616c6c6572206973206e6f6040820152731d081bdddb995c881b9bdc88185c1c1c9bdd995960621b606082015260800190565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b60008351614429818460208801613988565b83519083019061443d818360208801613988565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161447e816017850160208801613988565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516144af816028840160208801613988565b01602801949350505050565b634e487b7160e01b600052603160045260246000fd5b60208082526035908201527f4552433732315073693a207472616e7366657220746f206e6f6e20455243373260408201527418a932b1b2b4bb32b91034b6b83632b6b2b73a32b960591b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906145f0908301846139ac565b9695505050505050565b60006020828403121561460c57600080fd5b8151610e008161395556feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0001020903110a19042112290b311a3905412245134d2a550c5d32651b6d3a7506264262237d468514804e8d2b95569d0d495ea533a966b11c886eb93bc176c9071727374353637324837e9b47af86c7155181ad4fd18ed32c9096db57d59ee30e2e4a6a5f92a6be3498aae067ddb2eb1d5989b56fd7baf33ca0c2ee77e5caf7ff0810182028303840444c545c646c7425617c847f8c949c48a4a8b087b8c0c816365272829aaec650acd0d28fdad4e22d6991bd97dfdcea58b4d6f29fede4f6fe0f1f2f3f4b5b6b607b8b93a3a7b7bf357199c5abcfd9e168bcdee9b3f1ecf5fd1e3e5a7a8aa2b670c4ced8bbe8f0f4fc3d79a1c3cde7effb78cce6facbf9f8a264697066735822122069f1e7de30c125031cf14dee918b767ccf0b99363cb74ee4a00c68cea975db1b64736f6c63430008110033";
30949
31565
  const isSuperArgs$2 = (xs) => xs.length > 1;
30950
31566
  class ImmutableERC721__factory extends ethers.ContractFactory {
30951
31567
  constructor(...args) {
@@ -30956,11 +31572,11 @@ class ImmutableERC721__factory extends ethers.ContractFactory {
30956
31572
  super(_abi$2, _bytecode$2, args[0]);
30957
31573
  }
30958
31574
  }
30959
- deploy(owner_, name_, symbol_, baseURI_, contractURI_, royaltyAllowlist_, royaltyReceiver_, feeNumerator_, overrides) {
30960
- return super.deploy(owner_, name_, symbol_, baseURI_, contractURI_, royaltyAllowlist_, royaltyReceiver_, feeNumerator_, overrides || {});
31575
+ deploy(owner_, name_, symbol_, baseURI_, contractURI_, operatorAllowlist_, royaltyReceiver_, feeNumerator_, overrides) {
31576
+ return super.deploy(owner_, name_, symbol_, baseURI_, contractURI_, operatorAllowlist_, royaltyReceiver_, feeNumerator_, overrides || {});
30961
31577
  }
30962
- getDeployTransaction(owner_, name_, symbol_, baseURI_, contractURI_, royaltyAllowlist_, royaltyReceiver_, feeNumerator_, overrides) {
30963
- return super.getDeployTransaction(owner_, name_, symbol_, baseURI_, contractURI_, royaltyAllowlist_, royaltyReceiver_, feeNumerator_, overrides || {});
31578
+ getDeployTransaction(owner_, name_, symbol_, baseURI_, contractURI_, operatorAllowlist_, royaltyReceiver_, feeNumerator_, overrides) {
31579
+ return super.getDeployTransaction(owner_, name_, symbol_, baseURI_, contractURI_, operatorAllowlist_, royaltyReceiver_, feeNumerator_, overrides || {});
30964
31580
  }
30965
31581
  attach(address) {
30966
31582
  return super.attach(address);
@@ -31011,7 +31627,7 @@ const _abi$1 = [
31011
31627
  },
31012
31628
  {
31013
31629
  internalType: "address",
31014
- name: "_royaltyAllowlist",
31630
+ name: "_operatorAllowlist",
31015
31631
  type: "address",
31016
31632
  },
31017
31633
  {
@@ -31028,6 +31644,11 @@ const _abi$1 = [
31028
31644
  stateMutability: "nonpayable",
31029
31645
  type: "constructor",
31030
31646
  },
31647
+ {
31648
+ inputs: [],
31649
+ name: "AllowlistDoesNotImplementIOperatorAllowlist",
31650
+ type: "error",
31651
+ },
31031
31652
  {
31032
31653
  inputs: [
31033
31654
  {
@@ -31120,11 +31741,6 @@ const _abi$1 = [
31120
31741
  name: "IImmutableERC721TokenAlreadyBurned",
31121
31742
  type: "error",
31122
31743
  },
31123
- {
31124
- inputs: [],
31125
- name: "RoyaltyEnforcementDoesNotImplementRequiredInterface",
31126
- type: "error",
31127
- },
31128
31744
  {
31129
31745
  inputs: [
31130
31746
  {
@@ -31197,6 +31813,25 @@ const _abi$1 = [
31197
31813
  name: "ApprovalForAll",
31198
31814
  type: "event",
31199
31815
  },
31816
+ {
31817
+ anonymous: false,
31818
+ inputs: [
31819
+ {
31820
+ indexed: false,
31821
+ internalType: "address",
31822
+ name: "oldRegistry",
31823
+ type: "address",
31824
+ },
31825
+ {
31826
+ indexed: false,
31827
+ internalType: "address",
31828
+ name: "newRegistry",
31829
+ type: "address",
31830
+ },
31831
+ ],
31832
+ name: "OperatorAllowlistRegistryUpdated",
31833
+ type: "event",
31834
+ },
31200
31835
  {
31201
31836
  anonymous: false,
31202
31837
  inputs: [
@@ -31272,25 +31907,6 @@ const _abi$1 = [
31272
31907
  name: "RoleRevoked",
31273
31908
  type: "event",
31274
31909
  },
31275
- {
31276
- anonymous: false,
31277
- inputs: [
31278
- {
31279
- indexed: false,
31280
- internalType: "address",
31281
- name: "oldRegistry",
31282
- type: "address",
31283
- },
31284
- {
31285
- indexed: false,
31286
- internalType: "address",
31287
- name: "newRegistry",
31288
- type: "address",
31289
- },
31290
- ],
31291
- name: "RoyaltyAllowlistRegistryUpdated",
31292
- type: "event",
31293
- },
31294
31910
  {
31295
31911
  anonymous: false,
31296
31912
  inputs: [
@@ -31698,6 +32314,19 @@ const _abi$1 = [
31698
32314
  stateMutability: "view",
31699
32315
  type: "function",
31700
32316
  },
32317
+ {
32318
+ inputs: [],
32319
+ name: "operatorAllowlist",
32320
+ outputs: [
32321
+ {
32322
+ internalType: "contract IOperatorAllowlist",
32323
+ name: "",
32324
+ type: "address",
32325
+ },
32326
+ ],
32327
+ stateMutability: "view",
32328
+ type: "function",
32329
+ },
31701
32330
  {
31702
32331
  inputs: [
31703
32332
  {
@@ -31766,19 +32395,6 @@ const _abi$1 = [
31766
32395
  stateMutability: "nonpayable",
31767
32396
  type: "function",
31768
32397
  },
31769
- {
31770
- inputs: [],
31771
- name: "royaltyAllowlist",
31772
- outputs: [
31773
- {
31774
- internalType: "contract IRoyaltyAllowlist",
31775
- name: "",
31776
- type: "address",
31777
- },
31778
- ],
31779
- stateMutability: "view",
31780
- type: "function",
31781
- },
31782
32398
  {
31783
32399
  inputs: [
31784
32400
  {
@@ -32087,11 +32703,11 @@ const _abi$1 = [
32087
32703
  inputs: [
32088
32704
  {
32089
32705
  internalType: "address",
32090
- name: "_royaltyAllowlist",
32706
+ name: "_operatorAllowlist",
32091
32707
  type: "address",
32092
32708
  },
32093
32709
  ],
32094
- name: "setRoyaltyAllowlistRegistry",
32710
+ name: "setOperatorAllowlistRegistry",
32095
32711
  outputs: [],
32096
32712
  stateMutability: "nonpayable",
32097
32713
  type: "function",
@@ -32184,7 +32800,7 @@ const _abi$1 = [
32184
32800
  type: "function",
32185
32801
  },
32186
32802
  ];
32187
- const _bytecode$1 = "0x60806040523480156200001157600080fd5b5060405162003c7938038062003c79833981016040819052620000349162000506565b8787878787878787868660036200004c838262000699565b5060046200005b828262000699565b506200006d91506000905089620000b8565b620000798282620000fb565b620000848362000200565b600c62000092868262000699565b50600b620000a1858262000699565b505050505050505050505050505050505062000790565b620000cf8282620002f960201b6200135e1760201c565b6000828152600160209081526040909120620000f6918390620013e26200039a821b17901c565b505050565b6127106001600160601b03821611156200016f5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b038216620001c75760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640162000166565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600955565b6040516301ffc9a760e01b81526305a3b80960e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa1580156200024c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000272919062000765565b6200029057604051631353be1160e11b815260040160405180910390fd5b600254604080516001600160a01b03928316815291831660208301527ff499b54d61d3fcb40299e3299af3ffe9ef1ee6e47194240f3cc5b6e09f7f6796910160405180910390a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000396576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620003553390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620003b1836001600160a01b038416620003ba565b90505b92915050565b60008181526001830160205260408120546200040357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620003b4565b506000620003b4565b80516001600160a01b03811681146200042457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200045157600080fd5b81516001600160401b03808211156200046e576200046e62000429565b604051601f8301601f19908116603f0116810190828211818310171562000499576200049962000429565b81604052838152602092508683858801011115620004b657600080fd5b600091505b83821015620004da5785820183015181830184015290820190620004bb565b600093810190920192909252949350505050565b80516001600160601b03811681146200042457600080fd5b600080600080600080600080610100898b0312156200052457600080fd5b6200052f896200040c565b60208a01519098506001600160401b03808211156200054d57600080fd5b6200055b8c838d016200043f565b985060408b01519150808211156200057257600080fd5b620005808c838d016200043f565b975060608b01519150808211156200059757600080fd5b620005a58c838d016200043f565b965060808b0151915080821115620005bc57600080fd5b50620005cb8b828c016200043f565b945050620005dc60a08a016200040c565b9250620005ec60c08a016200040c565b9150620005fc60e08a01620004ee565b90509295985092959890939650565b600181811c908216806200062057607f821691505b6020821081036200064157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620000f657600081815260208120601f850160051c81016020861015620006705750805b601f850160051c820191505b8181101562000691578281556001016200067c565b505050505050565b81516001600160401b03811115620006b557620006b562000429565b620006cd81620006c684546200060b565b8462000647565b602080601f831160018114620007055760008415620006ec5750858301515b600019600386901b1c1916600185901b17855562000691565b600085815260208120601f198616915b82811015620007365788860151825594840194600190910190840162000715565b5085821015620007555787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200077857600080fd5b815180151581146200078957600080fd5b9392505050565b6134d980620007a06000396000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c806369e2f0fb11610167578063a1448194116100ce578063ca15c87311610087578063ca15c873146105da578063d5391393146105ed578063d547741f14610602578063e4623c1b14610615578063e8a3d48514610628578063e985e9c51461063057600080fd5b8063a144819414610573578063a217fddf14610586578063a22cb4651461058e578063a7012816146105a1578063b88d4fde146105b4578063c87b56dd146105c757600080fd5b80639010d07c116101205780639010d07c1461050c57806391d148541461051f578063938e3d7b1461053257806395d89b41146105455780639e2641a31461054d5780639f15d7001461056057600080fd5b806369e2f0fb146104a55780636b3a0632146104b85780636c0360eb146104cb57806370a08231146104d357806374f16a81146104e6578063885e7a08146104f957600080fd5b806331ae450b1161020b57806342842e0e116101c457806342842e0e1461043357806342966c6814610446578063439aed341461045957806355f804b31461046c5780636352211e1461047f5780636588962a1461049257600080fd5b806331ae450b146103c957806336568abe146103de5780633dd1eb61146103f15780633e769acd146104045780633eaaf86b1461041757806340c10f191461042057600080fd5b806318160ddd1161025d57806318160ddd14610329578063234af0461461033b57806323b872dd1461034e578063248a9ca3146103615780632a55205a146103845780632f2ff15d146103b657600080fd5b80628ad9461461029957806301ffc9a7146102ae57806306fdde03146102d6578063081812fc146102eb578063095ea7b314610316575b600080fd5b6102ac6102a7366004612907565b61066c565b005b6102c16102bc366004612957565b610742565b60405190151581526020015b60405180910390f35b6102de610753565b6040516102cd91906129c4565b6102fe6102f93660046129d7565b6107e5565b6040516001600160a01b0390911681526020016102cd565b6102ac610324366004612a0c565b61080c565b600d545b6040519081526020016102cd565b6102ac610349366004612bd8565b610967565b6102ac61035c366004612c20565b6109bf565b61032d61036f3660046129d7565b60009081526020819052604090206001015490565b610397610392366004612c5c565b6109f1565b604080516001600160a01b0390931683526020830191909152016102cd565b6102ac6103c4366004612c7e565b610a9f565b6103d1610ac4565b6040516102cd9190612caa565b6102ac6103ec366004612c7e565b610b72565b6102ac6103ff366004612cf7565b610bec565b6102ac610412366004612bd8565b610c0f565b61032d600d5481565b6102ac61042e366004612a0c565b610c9b565b6102ac610441366004612c20565b610cd7565b6102ac6104543660046129d7565b610cf2565b6102ac610467366004612d29565b610d30565b6102ac61047a366004612dbc565b610d59565b6102fe61048d3660046129d7565b610d70565b6102ac6104a0366004612cf7565b610dd0565b6102ac6104b3366004612cf7565b610de4565b6002546102fe906001600160a01b031681565b6102de610e07565b61032d6104e1366004612cf7565b610e95565b6102ac6104f4366004612bd8565b610f1b565b6102ac610507366004612e04565b610f27565b6102fe61051a366004612c5c565b610f3c565b6102c161052d366004612c7e565b610f5b565b6102ac610540366004612dbc565b610f84565b6102de610f9b565b6102ac61055b366004612bd8565b610faa565b6102ac61056e366004612a0c565b611002565b6102ac610581366004612a0c565b61105c565b61032d600081565b6102ac61059c366004612e3c565b61108e565b6102ac6105af366004612eb7565b6111df565b6102ac6105c2366004612f1b565b61123f565b6102de6105d53660046129d7565b611271565b61032d6105e83660046129d7565b6112d7565b61032d6a4d494e5445525f524f4c4560a81b81565b6102ac610610366004612c7e565b6112ee565b6102ac610623366004612f96565b611313565b6102de611351565b6102c161063e366004612fd7565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b6106796020820182613001565b90506106886040830183613001565b9050146106a85760405163359a1bc360e01b815260040160405180910390fd5b60005b6106b86040830183613001565b905081101561073e5761072c6106d16020840184612cf7565b6106de6020850185613001565b848181106106ee576106ee61304a565b90506020020160208101906107039190612cf7565b6107106040860186613001565b858181106107205761072061304a565b90506020020135610cd7565b8061073681613076565b9150506106ab565b5050565b600061074d826113f7565b92915050565b6060600380546107629061308f565b80601f016020809104026020016040519081016040528092919081815260200182805461078e9061308f565b80156107db5780601f106107b0576101008083540402835291602001916107db565b820191906000526020600020905b8154815290600101906020018083116107be57829003601f168201915b5050505050905090565b60006107f082611402565b506000908152600760205260409020546001600160a01b031690565b81333b1580159061088657506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa158015610860573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088491906130c9565b155b156108ab5760405163f6fa4cbd60e01b81523360048201526024015b60405180910390fd5b6001600160a01b0381163b1580159061092f57506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa158015610909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092d91906130c9565b155b15610958576040516341b8d58160e11b81526001600160a01b03821660048201526024016108a2565b6109628383611461565b505050565b6a4d494e5445525f524f4c4560a81b61097f81611571565b60005b8251811015610962576109ad8382815181106109a0576109a061304a565b602002602001015161157b565b806109b781613076565b915050610982565b6109ca335b8261160a565b6109e65760405162461bcd60e51b81526004016108a2906130e6565b610962838383611689565b6000828152600a602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610a665750604080518082019091526009546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610a85906001600160601b031687613133565b610a8f919061314a565b91519350909150505b9250929050565b600082815260208190526040902060010154610aba81611571565b6109628383611890565b60606000610ad1816112d7565b90506000816001600160401b03811115610aed57610aed612a36565b604051908082528060200260200182016040528015610b16578160200160208202803683370190505b50905060005b82811015610b6b57610b2f600082610f3c565b828281518110610b4157610b4161304a565b6001600160a01b039092166020928302919091019091015280610b6381613076565b915050610b1c565b5092915050565b6001600160a01b0381163314610be25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108a2565b61073e82826118b2565b6000610bf781611571565b61073e6a4d494e5445525f524f4c4560a81b83610a9f565b60005b815181101561073e576000828281518110610c2f57610c2f61304a565b6020026020010151905060005b816020015151811015610c8657610c74826000015183602001518381518110610c6757610c6761304a565b6020026020010151611002565b80610c7e81613076565b915050610c3c565b50508080610c9390613076565b915050610c12565b6a4d494e5445525f524f4c4560a81b610cb381611571565b610cbd83836118d4565b600d8054906000610ccd83613076565b9190505550505050565b6109628383836040518060200160405280600081525061123f565b610cfb8161191b565b600881901c6000908152600e602052604081208054600160ff85161b179055600d805491610d288361316c565b919050555050565b6a4d494e5445525f524f4c4560a81b610d4881611571565b610d53848484611949565b50505050565b6000610d6481611571565b600c61096283826131c9565b6000818152600560205260408120546001600160a01b03168061074d5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108a2565b6000610ddb81611571565b61073e82611a14565b6000610def81611571565b61073e6a4d494e5445525f524f4c4560a81b836112ee565b600c8054610e149061308f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e409061308f565b8015610e8d5780601f10610e6257610100808354040283529160200191610e8d565b820191906000526020600020905b815481529060010190602001808311610e7057829003601f168201915b505050505081565b60006001600160a01b038216610eff5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108a2565b506001600160a01b031660009081526006602052604090205490565b610f2481610c0f565b50565b6000610f3281611571565b6109628383611b09565b6000828152600160205260408120610f549083611bc3565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610f8f81611571565b600b61096283826131c9565b6060600480546107629061308f565b6a4d494e5445525f524f4c4560a81b610fc281611571565b60005b825181101561096257610ff0838281518110610fe357610fe361304a565b6020026020010151611bcf565b80610ffa81613076565b915050610fc5565b600061100d82610d70565b9050826001600160a01b0316816001600160a01b03161461105357604051634fefd56160e01b8152600481018390526001600160a01b03821660248201526044016108a2565b61096282610cf2565b6a4d494e5445525f524f4c4560a81b61107481611571565b610cbd838360405180602001604052806000815250611c45565b81333b1580159061110857506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa1580156110e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110691906130c9565b155b156111285760405163f6fa4cbd60e01b81523360048201526024016108a2565b6001600160a01b0381163b158015906111ac57506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa158015611186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111aa91906130c9565b155b156111d5576040516341b8d58160e11b81526001600160a01b03821660048201526024016108a2565b6109628383611c78565b6a4d494e5445525f524f4c4560a81b6111f781611571565b60005b84811015611237576112258686838181106112175761121761304a565b905060200201358585611949565b8061122f81613076565b9150506111fa565b505050505050565b611249338361160a565b6112655760405162461bcd60e51b81526004016108a2906130e6565b610d5384848484611c83565b606061127c82611402565b6000611286611cb6565b905060008151116112a65760405180602001604052806000815250610f54565b806112b084611cc5565b6040516020016112c1929190613288565b6040516020818303038152906040529392505050565b600081815260016020526040812061074d90611d57565b60008281526020819052604090206001015461130981611571565b61096283836118b2565b60005b818110156109625761133f8383838181106113335761133361304a565b90506020020135610cf2565b8061134981613076565b915050611316565b600b8054610e149061308f565b6113688282610f5b565b61073e576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561139e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610f54836001600160a01b038416611d61565b600061074d82611db0565b6000818152600560205260409020546001600160a01b0316610f245760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108a2565b600061146c82610d70565b9050806001600160a01b0316836001600160a01b0316036114d95760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016108a2565b336001600160a01b03821614806114f557506114f5813361063e565b6115675760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016108a2565b6109628383611dd5565b610f248133611e43565b80516001600160a01b03166115a3576040516331c3e52960e11b815260040160405180910390fd5b60005b8160200151518110156115f0576115de8260000151836020015183815181106115d1576115d161304a565b6020026020010151611e9c565b806115e881613076565b9150506115a6565b50806020015151600d5461160491906132b7565b600d5550565b60008061161683610d70565b9050806001600160a01b0316846001600160a01b0316148061165d57506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff165b806116815750836001600160a01b0316611676846107e5565b6001600160a01b0316145b949350505050565b828233321480159061170457506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa1580156116de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170291906130c9565b155b156117245760405163937db65f60e01b81523360048201526024016108a2565b6001600160a01b0382163b158015906117a857506002546040516305a3b80960e01b81526001600160a01b038481166004830152909116906305a3b80990602401602060405180830381865afa158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a691906130c9565b155b156117d15760405163f934453160e01b81526001600160a01b03831660048201526024016108a2565b6001600160a01b0381163b1580159061185557506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa15801561182f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185391906130c9565b155b1561187e57604051632a67242160e11b81526001600160a01b03821660048201526024016108a2565b611889858585611ee3565b5050505050565b61189a828261135e565b600082815260016020526040902061096290826113e2565b6118bc8282612047565b600082815260016020526040902061096290826120ac565b600881901c6000908152600e6020526040902054600160ff83161b1615611911576040516305dcda1160e51b8152600481018290526024016108a2565b61073e82826120c1565b611924336109c4565b6119405760405162461bcd60e51b81526004016108a2906130e6565b610f248161224c565b6127106001600160601b03821611156119745760405162461bcd60e51b81526004016108a2906132ca565b6001600160a01b0382166119ca5760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d6574657273000000000060448201526064016108a2565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600a90529190942093519051909116600160a01b029116179055565b6040516301ffc9a760e01b81526305a3b80960e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015611a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8391906130c9565b611aa057604051631353be1160e11b815260040160405180910390fd5b600254604080516001600160a01b03928316815291831660208301527ff499b54d61d3fcb40299e3299af3ffe9ef1ee6e47194240f3cc5b6e09f7f6796910160405180910390a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b6127106001600160601b0382161115611b345760405162461bcd60e51b81526004016108a2906132ca565b6001600160a01b038216611b8a5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016108a2565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600955565b6000610f5483836122e1565b80516001600160a01b031615611bf8576040516331c3e52960e11b815260040160405180910390fd5b60005b8160200151518110156115f057611c33826000015183602001518381518110611c2657611c2661304a565b60200260200101516118d4565b80611c3d81613076565b915050611bfb565b611c4f83836118d4565b611c5c600084848461230b565b6109625760405162461bcd60e51b81526004016108a290613314565b61073e33838361240c565b611c8e848484611689565b611c9a8484848461230b565b610d535760405162461bcd60e51b81526004016108a290613314565b6060600c80546107629061308f565b60606000611cd2836124da565b60010190506000816001600160401b03811115611cf157611cf1612a36565b6040519080825280601f01601f191660200182016040528015611d1b576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611d2557509392505050565b600061074d825490565b6000818152600183016020526040812054611da85750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561074d565b50600061074d565b60006001600160e01b0319821663152a902d60e11b148061074d575061074d826125b2565b600081815260076020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611e0a82610d70565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611e4d8282610f5b565b61073e57611e5a816125f2565b611e65836020612604565b604051602001611e76929190613366565b60408051601f198184030181529082905262461bcd60e51b82526108a2916004016129c4565b600881901c6000908152600e6020526040902054600160ff83161b1615611ed9576040516305dcda1160e51b8152600481018290526024016108a2565b61073e828261279f565b826001600160a01b0316611ef682610d70565b6001600160a01b031614611f1c5760405162461bcd60e51b81526004016108a2906133db565b6001600160a01b038216611f7e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108a2565b826001600160a01b0316611f9182610d70565b6001600160a01b031614611fb75760405162461bcd60e51b81526004016108a2906133db565b600081815260076020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260068552838620805460001901905590871680865283862080546001019055868652600590945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6120518282610f5b565b1561073e576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610f54836001600160a01b0384166127b9565b6001600160a01b0382166121175760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108a2565b6000818152600560205260409020546001600160a01b03161561217c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108a2565b6000818152600560205260409020546001600160a01b0316156121e15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108a2565b6001600160a01b038216600081815260066020908152604080832080546001019055848352600590915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600061225782610d70565b905061226282610d70565b600083815260076020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526006845282852080546000190190558785526005909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60008260000182815481106122f8576122f861304a565b9060005260206000200154905092915050565b60006001600160a01b0384163b1561240157604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061234f903390899088908890600401613420565b6020604051808303816000875af192505050801561238a575060408051601f3d908101601f191682019092526123879181019061345d565b60015b6123e7573d8080156123b8576040519150601f19603f3d011682016040523d82523d6000602084013e6123bd565b606091505b5080516000036123df5760405162461bcd60e51b81526004016108a290613314565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611681565b506001949350505050565b816001600160a01b0316836001600160a01b03160361246d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108a2565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106125195772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612545576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061256357662386f26fc10000830492506010015b6305f5e100831061257b576305f5e100830492506008015b612710831061258f57612710830492506004015b606483106125a1576064830492506002015b600a831061074d5760010192915050565b60006001600160e01b031982166380ac58cd60e01b14806125e357506001600160e01b03198216635b5e139f60e01b145b8061074d575061074d826128ac565b606061074d6001600160a01b03831660145b60606000612613836002613133565b61261e9060026132b7565b6001600160401b0381111561263557612635612a36565b6040519080825280601f01601f19166020018201604052801561265f576020820181803683370190505b509050600360fc1b8160008151811061267a5761267a61304a565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106126a9576126a961304a565b60200101906001600160f81b031916908160001a90535060006126cd846002613133565b6126d89060016132b7565b90505b6001811115612750576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061270c5761270c61304a565b1a60f81b8282815181106127225761272261304a565b60200101906001600160f81b031916908160001a90535060049490941c936127498161316c565b90506126db565b508315610f545760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108a2565b61073e828260405180602001604052806000815250611c45565b600081815260018301602052604081205480156128a25760006127dd60018361347a565b85549091506000906127f19060019061347a565b90508181146128565760008660000182815481106128115761281161304a565b90600052602060002001549050808760000184815481106128345761283461304a565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128675761286761348d565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061074d565b600091505061074d565b600061074d8260006001600160e01b03198216635a05180f60e01b148061074d575061074d8260006001600160e01b03198216637965db0b60e01b148061074d57506301ffc9a760e01b6001600160e01b031983161461074d565b60006020828403121561291957600080fd5b81356001600160401b0381111561292f57600080fd5b820160608185031215610f5457600080fd5b6001600160e01b031981168114610f2457600080fd5b60006020828403121561296957600080fd5b8135610f5481612941565b60005b8381101561298f578181015183820152602001612977565b50506000910152565b600081518084526129b0816020860160208601612974565b601f01601f19169290920160200192915050565b602081526000610f546020830184612998565b6000602082840312156129e957600080fd5b5035919050565b80356001600160a01b0381168114612a0757600080fd5b919050565b60008060408385031215612a1f57600080fd5b612a28836129f0565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612a6e57612a6e612a36565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a9c57612a9c612a36565b604052919050565b60006001600160401b03821115612abd57612abd612a36565b5060051b60200190565b6000612ada612ad584612aa4565b612a74565b8381529050602080820190600585811b850187811115612af957600080fd5b855b81811015612bcc5780356001600160401b0380821115612b1b5760008081fd5b908801906040828c031215612b305760008081fd5b612b38612a4c565b612b41836129f0565b81528683013582811115612b555760008081fd5b8084019350508b601f840112612b6d57600091508182fd5b82359150612b7d612ad583612aa4565b82815291861b8301870191878101908d841115612b9a5760008081fd5b938801935b83851015612bb857843582529388019390880190612b9f565b828901525087525050938301938301612afb565b50505050509392505050565b600060208284031215612bea57600080fd5b81356001600160401b03811115612c0057600080fd5b8201601f81018413612c1157600080fd5b61168184823560208401612ac7565b600080600060608486031215612c3557600080fd5b612c3e846129f0565b9250612c4c602085016129f0565b9150604084013590509250925092565b60008060408385031215612c6f57600080fd5b50508035926020909101359150565b60008060408385031215612c9157600080fd5b82359150612ca1602084016129f0565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612ceb5783516001600160a01b031683529284019291840191600101612cc6565b50909695505050505050565b600060208284031215612d0957600080fd5b610f54826129f0565b80356001600160601b0381168114612a0757600080fd5b600080600060608486031215612d3e57600080fd5b83359250612d4e602085016129f0565b9150612d5c60408501612d12565b90509250925092565b60006001600160401b03831115612d7e57612d7e612a36565b612d91601f8401601f1916602001612a74565b9050828152838383011115612da557600080fd5b828260208301376000602084830101529392505050565b600060208284031215612dce57600080fd5b81356001600160401b03811115612de457600080fd5b8201601f81018413612df557600080fd5b61168184823560208401612d65565b60008060408385031215612e1757600080fd5b612e20836129f0565b9150612ca160208401612d12565b8015158114610f2457600080fd5b60008060408385031215612e4f57600080fd5b612e58836129f0565b91506020830135612e6881612e2e565b809150509250929050565b60008083601f840112612e8557600080fd5b5081356001600160401b03811115612e9c57600080fd5b6020830191508360208260051b8501011115610a9857600080fd5b60008060008060608587031215612ecd57600080fd5b84356001600160401b03811115612ee357600080fd5b612eef87828801612e73565b9095509350612f029050602086016129f0565b9150612f1060408601612d12565b905092959194509250565b60008060008060808587031215612f3157600080fd5b612f3a856129f0565b9350612f48602086016129f0565b92506040850135915060608501356001600160401b03811115612f6a57600080fd5b8501601f81018713612f7b57600080fd5b612f8a87823560208401612d65565b91505092959194509250565b60008060208385031215612fa957600080fd5b82356001600160401b03811115612fbf57600080fd5b612fcb85828601612e73565b90969095509350505050565b60008060408385031215612fea57600080fd5b612ff3836129f0565b9150612ca1602084016129f0565b6000808335601e1984360301811261301857600080fd5b8301803591506001600160401b0382111561303257600080fd5b6020019150600581901b3603821315610a9857600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161308857613088613060565b5060010190565b600181811c908216806130a357607f821691505b6020821081036130c357634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156130db57600080fd5b8151610f5481612e2e565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b808202811582820484141761074d5761074d613060565b60008261316757634e487b7160e01b600052601260045260246000fd5b500490565b60008161317b5761317b613060565b506000190190565b601f82111561096257600081815260208120601f850160051c810160208610156131aa5750805b601f850160051c820191505b81811015611237578281556001016131b6565b81516001600160401b038111156131e2576131e2612a36565b6131f6816131f0845461308f565b84613183565b602080601f83116001811461322b57600084156132135750858301515b600019600386901b1c1916600185901b178555611237565b600085815260208120601f198616915b8281101561325a5788860151825594840194600190910190840161323b565b50858210156132785787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000835161329a818460208801612974565b8351908301906132ae818360208801612974565b01949350505050565b8082018082111561074d5761074d613060565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161339e816017850160208801612974565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516133cf816028840160208801612974565b01602801949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061345390830184612998565b9695505050505050565b60006020828403121561346f57600080fd5b8151610f5481612941565b8181038181111561074d5761074d613060565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b011c76f17319aab20d598a27be80ad3891d73e102d2a5a5fca6210f067ce45564736f6c63430008110033";
32803
+ const _bytecode$1 = "0x60806040523480156200001157600080fd5b5060405162003c7338038062003c73833981016040819052620000349162000506565b8787878787878787868660036200004c838262000699565b5060046200005b828262000699565b506200006d91506000905089620000b8565b620000798282620000fb565b620000848362000200565b600c62000092868262000699565b50600b620000a1858262000699565b505050505050505050505050505050505062000790565b620000cf8282620002f960201b6200135e1760201c565b6000828152600160209081526040909120620000f6918390620013e26200039a821b17901c565b505050565b6127106001600160601b03821611156200016f5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b038216620001c75760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640162000166565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600955565b6040516301ffc9a760e01b81526305a3b80960e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa1580156200024c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000272919062000765565b620002905760405163d6f93fb760e01b815260040160405180910390fd5b600254604080516001600160a01b03928316815291831660208301527f3edc37a14cc8047c7c8a3f354311efe86c14848efd4e3765a3e1e57eea04ea76910160405180910390a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000396576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620003553390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620003b1836001600160a01b038416620003ba565b90505b92915050565b60008181526001830160205260408120546200040357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620003b4565b506000620003b4565b80516001600160a01b03811681146200042457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200045157600080fd5b81516001600160401b03808211156200046e576200046e62000429565b604051601f8301601f19908116603f0116810190828211818310171562000499576200049962000429565b81604052838152602092508683858801011115620004b657600080fd5b600091505b83821015620004da5785820183015181830184015290820190620004bb565b600093810190920192909252949350505050565b80516001600160601b03811681146200042457600080fd5b600080600080600080600080610100898b0312156200052457600080fd5b6200052f896200040c565b60208a01519098506001600160401b03808211156200054d57600080fd5b6200055b8c838d016200043f565b985060408b01519150808211156200057257600080fd5b620005808c838d016200043f565b975060608b01519150808211156200059757600080fd5b620005a58c838d016200043f565b965060808b0151915080821115620005bc57600080fd5b50620005cb8b828c016200043f565b945050620005dc60a08a016200040c565b9250620005ec60c08a016200040c565b9150620005fc60e08a01620004ee565b90509295985092959890939650565b600181811c908216806200062057607f821691505b6020821081036200064157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620000f657600081815260208120601f850160051c81016020861015620006705750805b601f850160051c820191505b8181101562000691578281556001016200067c565b505050505050565b81516001600160401b03811115620006b557620006b562000429565b620006cd81620006c684546200060b565b8462000647565b602080601f831160018114620007055760008415620006ec5750858301515b600019600386901b1c1916600185901b17855562000691565b600085815260208120601f198616915b82811015620007365788860151825594840194600190910190840162000715565b5085821015620007555787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200077857600080fd5b815180151581146200078957600080fd5b9392505050565b6134d380620007a06000396000f3fe608060405234801561001057600080fd5b50600436106102945760003560e01c806369e2f0fb11610167578063a217fddf116100ce578063d539139311610087578063d5391393146105da578063d547741f146105ef578063e4623c1b14610602578063e4e18f6d14610615578063e8a3d48514610628578063e985e9c51461063057600080fd5b8063a217fddf14610573578063a22cb4651461057b578063a70128161461058e578063b88d4fde146105a1578063c87b56dd146105b4578063ca15c873146105c757600080fd5b806391d148541161012057806391d148541461050c578063938e3d7b1461051f57806395d89b41146105325780639e2641a31461053a5780639f15d7001461054d578063a14481941461056057600080fd5b806369e2f0fb146104a55780636c0360eb146104b857806370a08231146104c057806374f16a81146104d3578063885e7a08146104e65780639010d07c146104f957600080fd5b80632f2ff15d1161020b57806340c10f19116101c457806340c10f191461043357806342842e0e1461044657806342966c6814610459578063439aed341461046c57806355f804b31461047f5780636352211e1461049257600080fd5b80632f2ff15d146103c957806331ae450b146103dc57806336568abe146103f15780633dd1eb61146104045780633e769acd146104175780633eaaf86b1461042a57600080fd5b806318160ddd1161025d57806318160ddd14610329578063234af0461461033b57806323b872dd1461034e578063248a9ca31461036157806329326f29146103845780632a55205a1461039757600080fd5b80628ad9461461029957806301ffc9a7146102ae57806306fdde03146102d6578063081812fc146102eb578063095ea7b314610316575b600080fd5b6102ac6102a7366004612901565b61066c565b005b6102c16102bc366004612951565b610742565b60405190151581526020015b60405180910390f35b6102de610753565b6040516102cd91906129be565b6102fe6102f93660046129d1565b6107e5565b6040516001600160a01b0390911681526020016102cd565b6102ac610324366004612a06565b61080c565b600d545b6040519081526020016102cd565b6102ac610349366004612bd2565b610967565b6102ac61035c366004612c1a565b6109bf565b61032d61036f3660046129d1565b60009081526020819052604090206001015490565b6002546102fe906001600160a01b031681565b6103aa6103a5366004612c56565b6109f1565b604080516001600160a01b0390931683526020830191909152016102cd565b6102ac6103d7366004612c78565b610a9f565b6103e4610ac4565b6040516102cd9190612ca4565b6102ac6103ff366004612c78565b610b72565b6102ac610412366004612cf1565b610bec565b6102ac610425366004612bd2565b610c0f565b61032d600d5481565b6102ac610441366004612a06565b610c9b565b6102ac610454366004612c1a565b610cd7565b6102ac6104673660046129d1565b610cf2565b6102ac61047a366004612d23565b610d30565b6102ac61048d366004612db6565b610d59565b6102fe6104a03660046129d1565b610d70565b6102ac6104b3366004612cf1565b610dd0565b6102de610df3565b61032d6104ce366004612cf1565b610e81565b6102ac6104e1366004612bd2565b610f07565b6102ac6104f4366004612dfe565b610f13565b6102fe610507366004612c56565b610f28565b6102c161051a366004612c78565b610f47565b6102ac61052d366004612db6565b610f70565b6102de610f87565b6102ac610548366004612bd2565b610f96565b6102ac61055b366004612a06565b610fee565b6102ac61056e366004612a06565b611048565b61032d600081565b6102ac610589366004612e36565b61107a565b6102ac61059c366004612eb1565b6111cb565b6102ac6105af366004612f15565b61122b565b6102de6105c23660046129d1565b61125d565b61032d6105d53660046129d1565b6112c3565b61032d6a4d494e5445525f524f4c4560a81b81565b6102ac6105fd366004612c78565b6112da565b6102ac610610366004612f90565b6112ff565b6102ac610623366004612cf1565b61133d565b6102de611351565b6102c161063e366004612fd1565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b6106796020820182612ffb565b90506106886040830183612ffb565b9050146106a85760405163359a1bc360e01b815260040160405180910390fd5b60005b6106b86040830183612ffb565b905081101561073e5761072c6106d16020840184612cf1565b6106de6020850185612ffb565b848181106106ee576106ee613044565b90506020020160208101906107039190612cf1565b6107106040860186612ffb565b8581811061072057610720613044565b90506020020135610cd7565b8061073681613070565b9150506106ab565b5050565b600061074d826113f7565b92915050565b60606003805461076290613089565b80601f016020809104026020016040519081016040528092919081815260200182805461078e90613089565b80156107db5780601f106107b0576101008083540402835291602001916107db565b820191906000526020600020905b8154815290600101906020018083116107be57829003601f168201915b5050505050905090565b60006107f08261141c565b506000908152600760205260409020546001600160a01b031690565b81333b1580159061088657506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa158015610860573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088491906130c3565b155b156108ab5760405163f6fa4cbd60e01b81523360048201526024015b60405180910390fd5b6001600160a01b0381163b1580159061092f57506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa158015610909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092d91906130c3565b155b15610958576040516341b8d58160e11b81526001600160a01b03821660048201526024016108a2565b610962838361147b565b505050565b6a4d494e5445525f524f4c4560a81b61097f8161158b565b60005b8251811015610962576109ad8382815181106109a0576109a0613044565b6020026020010151611595565b806109b781613070565b915050610982565b6109ca335b82611624565b6109e65760405162461bcd60e51b81526004016108a2906130e0565b6109628383836116a3565b6000828152600a602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291610a665750604080518082019091526009546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610a85906001600160601b03168761312d565b610a8f9190613144565b91519350909150505b9250929050565b600082815260208190526040902060010154610aba8161158b565b61096283836118aa565b60606000610ad1816112c3565b90506000816001600160401b03811115610aed57610aed612a30565b604051908082528060200260200182016040528015610b16578160200160208202803683370190505b50905060005b82811015610b6b57610b2f600082610f28565b828281518110610b4157610b41613044565b6001600160a01b039092166020928302919091019091015280610b6381613070565b915050610b1c565b5092915050565b6001600160a01b0381163314610be25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108a2565b61073e82826118cc565b6000610bf78161158b565b61073e6a4d494e5445525f524f4c4560a81b83610a9f565b60005b815181101561073e576000828281518110610c2f57610c2f613044565b6020026020010151905060005b816020015151811015610c8657610c74826000015183602001518381518110610c6757610c67613044565b6020026020010151610fee565b80610c7e81613070565b915050610c3c565b50508080610c9390613070565b915050610c12565b6a4d494e5445525f524f4c4560a81b610cb38161158b565b610cbd83836118ee565b600d8054906000610ccd83613070565b9190505550505050565b6109628383836040518060200160405280600081525061122b565b610cfb81611935565b600881901c6000908152600e602052604081208054600160ff85161b179055600d805491610d2883613166565b919050555050565b6a4d494e5445525f524f4c4560a81b610d488161158b565b610d53848484611963565b50505050565b6000610d648161158b565b600c61096283826131c3565b6000818152600560205260408120546001600160a01b03168061074d5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108a2565b6000610ddb8161158b565b61073e6a4d494e5445525f524f4c4560a81b836112da565b600c8054610e0090613089565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2c90613089565b8015610e795780601f10610e4e57610100808354040283529160200191610e79565b820191906000526020600020905b815481529060010190602001808311610e5c57829003601f168201915b505050505081565b60006001600160a01b038216610eeb5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016108a2565b506001600160a01b031660009081526006602052604090205490565b610f1081610c0f565b50565b6000610f1e8161158b565b6109628383611a2e565b6000828152600160205260408120610f409083611ae8565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610f7b8161158b565b600b61096283826131c3565b60606004805461076290613089565b6a4d494e5445525f524f4c4560a81b610fae8161158b565b60005b825181101561096257610fdc838281518110610fcf57610fcf613044565b6020026020010151611af4565b80610fe681613070565b915050610fb1565b6000610ff982610d70565b9050826001600160a01b0316816001600160a01b03161461103f57604051634fefd56160e01b8152600481018390526001600160a01b03821660248201526044016108a2565b61096282610cf2565b6a4d494e5445525f524f4c4560a81b6110608161158b565b610cbd838360405180602001604052806000815250611b6a565b81333b158015906110f457506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa1580156110ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f291906130c3565b155b156111145760405163f6fa4cbd60e01b81523360048201526024016108a2565b6001600160a01b0381163b1580159061119857506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa158015611172573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119691906130c3565b155b156111c1576040516341b8d58160e11b81526001600160a01b03821660048201526024016108a2565b6109628383611b9d565b6a4d494e5445525f524f4c4560a81b6111e38161158b565b60005b848110156112235761121186868381811061120357611203613044565b905060200201358585611963565b8061121b81613070565b9150506111e6565b505050505050565b6112353383611624565b6112515760405162461bcd60e51b81526004016108a2906130e0565b610d5384848484611ba8565b60606112688261141c565b6000611272611bdb565b905060008151116112925760405180602001604052806000815250610f40565b8061129c84611bea565b6040516020016112ad929190613282565b6040516020818303038152906040529392505050565b600081815260016020526040812061074d90611c7c565b6000828152602081905260409020600101546112f58161158b565b61096283836118cc565b60005b818110156109625761132b83838381811061131f5761131f613044565b90506020020135610cf2565b8061133581613070565b915050611302565b60006113488161158b565b61073e82611c86565b600b8054610e0090613089565b6113688282610f47565b61073e576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561139e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610f40836001600160a01b038416611d7b565b60006001600160e01b0319821663152a902d60e11b148061074d575061074d82611dca565b6000818152600560205260409020546001600160a01b0316610f105760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016108a2565b600061148682610d70565b9050806001600160a01b0316836001600160a01b0316036114f35760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016108a2565b336001600160a01b038216148061150f575061150f813361063e565b6115815760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016108a2565b6109628383611e0a565b610f108133611e78565b80516001600160a01b03166115bd576040516331c3e52960e11b815260040160405180910390fd5b60005b81602001515181101561160a576115f88260000151836020015183815181106115eb576115eb613044565b6020026020010151611ed1565b8061160281613070565b9150506115c0565b50806020015151600d5461161e91906132b1565b600d5550565b60008061163083610d70565b9050806001600160a01b0316846001600160a01b0316148061167757506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff165b8061169b5750836001600160a01b0316611690846107e5565b6001600160a01b0316145b949350505050565b828233321480159061171e57506002546040516305a3b80960e01b81523360048201526001600160a01b03909116906305a3b80990602401602060405180830381865afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c91906130c3565b155b1561173e5760405163937db65f60e01b81523360048201526024016108a2565b6001600160a01b0382163b158015906117c257506002546040516305a3b80960e01b81526001600160a01b038481166004830152909116906305a3b80990602401602060405180830381865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c091906130c3565b155b156117eb5760405163f934453160e01b81526001600160a01b03831660048201526024016108a2565b6001600160a01b0381163b1580159061186f57506002546040516305a3b80960e01b81526001600160a01b038381166004830152909116906305a3b80990602401602060405180830381865afa158015611849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186d91906130c3565b155b1561189857604051632a67242160e11b81526001600160a01b03821660048201526024016108a2565b6118a3858585611f18565b5050505050565b6118b4828261135e565b600082815260016020526040902061096290826113e2565b6118d6828261207c565b600082815260016020526040902061096290826120e1565b600881901c6000908152600e6020526040902054600160ff83161b161561192b576040516305dcda1160e51b8152600481018290526024016108a2565b61073e82826120f6565b61193e336109c4565b61195a5760405162461bcd60e51b81526004016108a2906130e0565b610f1081612281565b6127106001600160601b038216111561198e5760405162461bcd60e51b81526004016108a2906132c4565b6001600160a01b0382166119e45760405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d6574657273000000000060448201526064016108a2565b6040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600a90529190942093519051909116600160a01b029116179055565b6127106001600160601b0382161115611a595760405162461bcd60e51b81526004016108a2906132c4565b6001600160a01b038216611aaf5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016108a2565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600955565b6000610f408383612316565b80516001600160a01b031615611b1d576040516331c3e52960e11b815260040160405180910390fd5b60005b81602001515181101561160a57611b58826000015183602001518381518110611b4b57611b4b613044565b60200260200101516118ee565b80611b6281613070565b915050611b20565b611b7483836118ee565b611b816000848484612340565b6109625760405162461bcd60e51b81526004016108a29061330e565b61073e338383612441565b611bb38484846116a3565b611bbf84848484612340565b610d535760405162461bcd60e51b81526004016108a29061330e565b6060600c805461076290613089565b60606000611bf78361250f565b60010190506000816001600160401b03811115611c1657611c16612a30565b6040519080825280601f01601f191660200182016040528015611c40576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611c4a57509392505050565b600061074d825490565b6040516301ffc9a760e01b81526305a3b80960e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015611cd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf591906130c3565b611d125760405163d6f93fb760e01b815260040160405180910390fd5b600254604080516001600160a01b03928316815291831660208301527f3edc37a14cc8047c7c8a3f354311efe86c14848efd4e3765a3e1e57eea04ea76910160405180910390a1600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600183016020526040812054611dc25750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561074d565b50600061074d565b60006001600160e01b031982166380ac58cd60e01b1480611dfb57506001600160e01b03198216635b5e139f60e01b145b8061074d575061074d826125e7565b600081815260076020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611e3f82610d70565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611e828282610f47565b61073e57611e8f816125f2565b611e9a836020612604565b604051602001611eab929190613360565b60408051601f198184030181529082905262461bcd60e51b82526108a2916004016129be565b600881901c6000908152600e6020526040902054600160ff83161b1615611f0e576040516305dcda1160e51b8152600481018290526024016108a2565b61073e828261279f565b826001600160a01b0316611f2b82610d70565b6001600160a01b031614611f515760405162461bcd60e51b81526004016108a2906133d5565b6001600160a01b038216611fb35760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108a2565b826001600160a01b0316611fc682610d70565b6001600160a01b031614611fec5760405162461bcd60e51b81526004016108a2906133d5565b600081815260076020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260068552838620805460001901905590871680865283862080546001019055868652600590945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6120868282610f47565b1561073e576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610f40836001600160a01b0384166127b9565b6001600160a01b03821661214c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108a2565b6000818152600560205260409020546001600160a01b0316156121b15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108a2565b6000818152600560205260409020546001600160a01b0316156122165760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108a2565b6001600160a01b038216600081815260066020908152604080832080546001019055848352600590915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600061228c82610d70565b905061229782610d70565b600083815260076020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526006845282852080546000190190558785526005909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600082600001828154811061232d5761232d613044565b9060005260206000200154905092915050565b60006001600160a01b0384163b1561243657604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061238490339089908890889060040161341a565b6020604051808303816000875af19250505080156123bf575060408051601f3d908101601f191682019092526123bc91810190613457565b60015b61241c573d8080156123ed576040519150601f19603f3d011682016040523d82523d6000602084013e6123f2565b606091505b5080516000036124145760405162461bcd60e51b81526004016108a29061330e565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061169b565b506001949350505050565b816001600160a01b0316836001600160a01b0316036124a25760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108a2565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061254e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061257a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061259857662386f26fc10000830492506010015b6305f5e10083106125b0576305f5e100830492506008015b61271083106125c457612710830492506004015b606483106125d6576064830492506002015b600a831061074d5760010192915050565b600061074d826128ac565b606061074d6001600160a01b03831660145b6060600061261383600261312d565b61261e9060026132b1565b6001600160401b0381111561263557612635612a30565b6040519080825280601f01601f19166020018201604052801561265f576020820181803683370190505b509050600360fc1b8160008151811061267a5761267a613044565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106126a9576126a9613044565b60200101906001600160f81b031916908160001a90535060006126cd84600261312d565b6126d89060016132b1565b90505b6001811115612750576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061270c5761270c613044565b1a60f81b82828151811061272257612722613044565b60200101906001600160f81b031916908160001a90535060049490941c9361274981613166565b90506126db565b508315610f405760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108a2565b61073e828260405180602001604052806000815250611b6a565b600081815260018301602052604081205480156128a25760006127dd600183613474565b85549091506000906127f190600190613474565b905081811461285657600086600001828154811061281157612811613044565b906000526020600020015490508087600001848154811061283457612834613044565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061286757612867613487565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061074d565b600091505061074d565b60006001600160e01b03198216635a05180f60e01b148061074d575061074d8260006001600160e01b03198216637965db0b60e01b148061074d57506301ffc9a760e01b6001600160e01b031983161461074d565b60006020828403121561291357600080fd5b81356001600160401b0381111561292957600080fd5b820160608185031215610f4057600080fd5b6001600160e01b031981168114610f1057600080fd5b60006020828403121561296357600080fd5b8135610f408161293b565b60005b83811015612989578181015183820152602001612971565b50506000910152565b600081518084526129aa81602086016020860161296e565b601f01601f19169290920160200192915050565b602081526000610f406020830184612992565b6000602082840312156129e357600080fd5b5035919050565b80356001600160a01b0381168114612a0157600080fd5b919050565b60008060408385031215612a1957600080fd5b612a22836129ea565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612a6857612a68612a30565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a9657612a96612a30565b604052919050565b60006001600160401b03821115612ab757612ab7612a30565b5060051b60200190565b6000612ad4612acf84612a9e565b612a6e565b8381529050602080820190600585811b850187811115612af357600080fd5b855b81811015612bc65780356001600160401b0380821115612b155760008081fd5b908801906040828c031215612b2a5760008081fd5b612b32612a46565b612b3b836129ea565b81528683013582811115612b4f5760008081fd5b8084019350508b601f840112612b6757600091508182fd5b82359150612b77612acf83612a9e565b82815291861b8301870191878101908d841115612b945760008081fd5b938801935b83851015612bb257843582529388019390880190612b99565b828901525087525050938301938301612af5565b50505050509392505050565b600060208284031215612be457600080fd5b81356001600160401b03811115612bfa57600080fd5b8201601f81018413612c0b57600080fd5b61169b84823560208401612ac1565b600080600060608486031215612c2f57600080fd5b612c38846129ea565b9250612c46602085016129ea565b9150604084013590509250925092565b60008060408385031215612c6957600080fd5b50508035926020909101359150565b60008060408385031215612c8b57600080fd5b82359150612c9b602084016129ea565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015612ce55783516001600160a01b031683529284019291840191600101612cc0565b50909695505050505050565b600060208284031215612d0357600080fd5b610f40826129ea565b80356001600160601b0381168114612a0157600080fd5b600080600060608486031215612d3857600080fd5b83359250612d48602085016129ea565b9150612d5660408501612d0c565b90509250925092565b60006001600160401b03831115612d7857612d78612a30565b612d8b601f8401601f1916602001612a6e565b9050828152838383011115612d9f57600080fd5b828260208301376000602084830101529392505050565b600060208284031215612dc857600080fd5b81356001600160401b03811115612dde57600080fd5b8201601f81018413612def57600080fd5b61169b84823560208401612d5f565b60008060408385031215612e1157600080fd5b612e1a836129ea565b9150612c9b60208401612d0c565b8015158114610f1057600080fd5b60008060408385031215612e4957600080fd5b612e52836129ea565b91506020830135612e6281612e28565b809150509250929050565b60008083601f840112612e7f57600080fd5b5081356001600160401b03811115612e9657600080fd5b6020830191508360208260051b8501011115610a9857600080fd5b60008060008060608587031215612ec757600080fd5b84356001600160401b03811115612edd57600080fd5b612ee987828801612e6d565b9095509350612efc9050602086016129ea565b9150612f0a60408601612d0c565b905092959194509250565b60008060008060808587031215612f2b57600080fd5b612f34856129ea565b9350612f42602086016129ea565b92506040850135915060608501356001600160401b03811115612f6457600080fd5b8501601f81018713612f7557600080fd5b612f8487823560208401612d5f565b91505092959194509250565b60008060208385031215612fa357600080fd5b82356001600160401b03811115612fb957600080fd5b612fc585828601612e6d565b90969095509350505050565b60008060408385031215612fe457600080fd5b612fed836129ea565b9150612c9b602084016129ea565b6000808335601e1984360301811261301257600080fd5b8301803591506001600160401b0382111561302c57600080fd5b6020019150600581901b3603821315610a9857600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016130825761308261305a565b5060010190565b600181811c9082168061309d57607f821691505b6020821081036130bd57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156130d557600080fd5b8151610f4081612e28565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b808202811582820484141761074d5761074d61305a565b60008261316157634e487b7160e01b600052601260045260246000fd5b500490565b6000816131755761317561305a565b506000190190565b601f82111561096257600081815260208120601f850160051c810160208610156131a45750805b601f850160051c820191505b81811015611223578281556001016131b0565b81516001600160401b038111156131dc576131dc612a30565b6131f0816131ea8454613089565b8461317d565b602080601f831160018114613225576000841561320d5750858301515b600019600386901b1c1916600185901b178555611223565b600085815260208120601f198616915b8281101561325457888601518255948401946001909101908401613235565b50858210156132725787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000835161329481846020880161296e565b8351908301906132a881836020880161296e565b01949350505050565b8082018082111561074d5761074d61305a565b6020808252602a908201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646040820152692073616c65507269636560b01b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161339881601785016020880161296e565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516133c981602884016020880161296e565b01602801949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061344d90830184612992565b9695505050505050565b60006020828403121561346957600080fd5b8151610f408161293b565b8181038181111561074d5761074d61305a565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220db78f674a75be30e896244d83179c8c4f1b45519e52de44c0f337b384795efbc64736f6c63430008110033";
32188
32804
  const isSuperArgs$1 = (xs) => xs.length > 1;
32189
32805
  class ImmutableERC721MintByID__factory extends ethers.ContractFactory {
32190
32806
  constructor(...args) {
@@ -32195,11 +32811,11 @@ class ImmutableERC721MintByID__factory extends ethers.ContractFactory {
32195
32811
  super(_abi$1, _bytecode$1, args[0]);
32196
32812
  }
32197
32813
  }
32198
- deploy(owner, name_, symbol_, baseURI_, contractURI_, _royaltyAllowlist, _receiver, _feeNumerator, overrides) {
32199
- return super.deploy(owner, name_, symbol_, baseURI_, contractURI_, _royaltyAllowlist, _receiver, _feeNumerator, overrides || {});
32814
+ deploy(owner, name_, symbol_, baseURI_, contractURI_, _operatorAllowlist, _receiver, _feeNumerator, overrides) {
32815
+ return super.deploy(owner, name_, symbol_, baseURI_, contractURI_, _operatorAllowlist, _receiver, _feeNumerator, overrides || {});
32200
32816
  }
32201
- getDeployTransaction(owner, name_, symbol_, baseURI_, contractURI_, _royaltyAllowlist, _receiver, _feeNumerator, overrides) {
32202
- return super.getDeployTransaction(owner, name_, symbol_, baseURI_, contractURI_, _royaltyAllowlist, _receiver, _feeNumerator, overrides || {});
32817
+ getDeployTransaction(owner, name_, symbol_, baseURI_, contractURI_, _operatorAllowlist, _receiver, _feeNumerator, overrides) {
32818
+ return super.getDeployTransaction(owner, name_, symbol_, baseURI_, contractURI_, _operatorAllowlist, _receiver, _feeNumerator, overrides || {});
32203
32819
  }
32204
32820
  attach(address) {
32205
32821
  return super.attach(address);
@@ -32315,9 +32931,7 @@ class ERC721 {
32315
32931
  * @returns the approved address for a token ID, or zero if no address set.
32316
32932
  */
32317
32933
  async getApproved(provider, tokenId, overrides = {}) {
32318
- return await this.contract
32319
- .connect(provider)
32320
- .getApproved(tokenId, overrides);
32934
+ return await this.contract.connect(provider).getApproved(tokenId, overrides);
32321
32935
  }
32322
32936
  /**
32323
32937
  * @returns the role admin address.
@@ -32329,33 +32943,25 @@ class ERC721 {
32329
32943
  * @returns the role member address at a particular index.
32330
32944
  */
32331
32945
  async getRoleMember(provider, role, index, overrides = {}) {
32332
- return await this.contract
32333
- .connect(provider)
32334
- .getRoleMember(role, index, overrides);
32946
+ return await this.contract.connect(provider).getRoleMember(role, index, overrides);
32335
32947
  }
32336
32948
  /**
32337
32949
  * @returns the role member count as a BigNumber.
32338
32950
  */
32339
32951
  async getRoleMemberCount(provider, role, overrides = {}) {
32340
- return await this.contract
32341
- .connect(provider)
32342
- .getRoleMemberCount(role, overrides);
32952
+ return await this.contract.connect(provider).getRoleMemberCount(role, overrides);
32343
32953
  }
32344
32954
  /**
32345
32955
  * @returns a boolean for whether an account has a particular role.
32346
32956
  */
32347
32957
  async hasRole(provider, role, account, overrides = {}) {
32348
- return await this.contract
32349
- .connect(provider)
32350
- .hasRole(role, account, overrides);
32958
+ return await this.contract.connect(provider).hasRole(role, account, overrides);
32351
32959
  }
32352
32960
  /**
32353
32961
  * @returns a booolean that tells whether an operator is approved by a given owner.
32354
32962
  */
32355
32963
  async isApprovedForAll(provider, owner, operator, overrides = {}) {
32356
- return await this.contract
32357
- .connect(provider)
32358
- .isApprovedForAll(owner, operator, overrides);
32964
+ return await this.contract.connect(provider).isApprovedForAll(owner, operator, overrides);
32359
32965
  }
32360
32966
  /**
32361
32967
  * @returns the name of the contract as a string.
@@ -32370,18 +32976,16 @@ class ERC721 {
32370
32976
  return await this.contract.connect(provider).ownerOf(tokenId, overrides);
32371
32977
  }
32372
32978
  /**
32373
- * @returns the royalty allowlist as a string.
32979
+ * @returns the operator allowlist as a string.
32374
32980
  */
32375
- async royaltyAllowlist(provider, overrides = {}) {
32376
- return await this.contract.connect(provider).royaltyAllowlist(overrides);
32981
+ async operatorAllowlist(provider, overrides = {}) {
32982
+ return await this.contract.connect(provider).operatorAllowlist(overrides);
32377
32983
  }
32378
32984
  /**
32379
32985
  * @returns the royalty information for a particular tokenId.
32380
32986
  */
32381
32987
  async royaltyInfo(provider, _tokenId, _salePrice, overrides = {}) {
32382
- return await this.contract
32383
- .connect(provider)
32384
- .royaltyInfo(_tokenId, _salePrice, overrides);
32988
+ return await this.contract.connect(provider).royaltyInfo(_tokenId, _salePrice, overrides);
32385
32989
  }
32386
32990
  /**
32387
32991
  * @returns the symbol of the contract as a string.
@@ -32567,10 +33171,10 @@ class ERC721 {
32567
33171
  return await this.contract.populateTransaction.setNFTRoyaltyReceiverBatch(tokenIds, receiver, feeNumerator, overrides);
32568
33172
  }
32569
33173
  /**
32570
- * @returns a populated transaction for the setRoyaltyAllowlistRegistry contract function
33174
+ * @returns a populated transaction for the setOperatorAllowlistRegistry contract function
32571
33175
  */
32572
- async populateSetRoyaltyAllowlistRegistry(_royaltyAllowlist, overrides = {}) {
32573
- return await this.contract.populateTransaction.setRoyaltyAllowlistRegistry(_royaltyAllowlist, overrides);
33176
+ async populateSetOperatorAllowlistRegistry(_operatorAllowlist, overrides = {}) {
33177
+ return await this.contract.populateTransaction.setOperatorAllowlistRegistry(_operatorAllowlist, overrides);
32574
33178
  }
32575
33179
  }
32576
33180
 
@@ -32683,10 +33287,10 @@ class ERC721MintByID {
32683
33287
  return await this.contract.connect(provider).ownerOf(tokenId, overrides);
32684
33288
  }
32685
33289
  /**
32686
- * @returns the royalty allowlist as a string.
33290
+ * @returns the operator allowlist as a string.
32687
33291
  */
32688
- async royaltyAllowlist(provider, overrides = {}) {
32689
- return await this.contract.connect(provider).royaltyAllowlist(overrides);
33292
+ async operatorAllowlist(provider, overrides = {}) {
33293
+ return await this.contract.connect(provider).operatorAllowlist(overrides);
32690
33294
  }
32691
33295
  /**
32692
33296
  * @returns the royalty information for a particular tokenId.
@@ -32844,10 +33448,10 @@ class ERC721MintByID {
32844
33448
  return await this.contract.populateTransaction.setNFTRoyaltyReceiverBatch(tokenIds, receiver, feeNumerator, overrides);
32845
33449
  }
32846
33450
  /**
32847
- * @returns a populated transaction for the setRoyaltyAllowlistRegistry contract function
33451
+ * @returns a populated transaction for the setOperatorAllowlistRegistry contract function
32848
33452
  */
32849
- async populateSetRoyaltyAllowlistRegistry(_royaltyAllowlist, overrides = {}) {
32850
- return await this.contract.populateTransaction.setRoyaltyAllowlistRegistry(_royaltyAllowlist, overrides);
33453
+ async populateSetOperatorAllowlistRegistry(_operatorAllowlist, overrides = {}) {
33454
+ return await this.contract.populateTransaction.setOperatorAllowlistRegistry(_operatorAllowlist, overrides);
32851
33455
  }
32852
33456
  }
32853
33457