@black-market/sdk 0.8.0 → 0.9.0
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/README.md +76 -89
- package/assets/abyss-ziggurat-v3-pale-text-1500x500.png +0 -0
- package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.d.ts +12 -0
- package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.d.ts.map +1 -0
- package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.js +11 -0
- package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.js.map +1 -0
- package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.d.ts +67 -0
- package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.d.ts.map +1 -0
- package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.js +69 -0
- package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.js.map +1 -0
- package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.d.ts +67 -0
- package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.d.ts.map +1 -0
- package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.js +69 -0
- package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.js.map +1 -0
- package/dist/lifecycle/hmm.d.ts +125 -0
- package/dist/lifecycle/hmm.d.ts.map +1 -0
- package/dist/lifecycle/hmm.js +91 -0
- package/dist/lifecycle/hmm.js.map +1 -0
- package/dist/lifecycle/index.d.ts +1 -0
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/index.js +1 -0
- package/dist/lifecycle/index.js.map +1 -1
- package/dist/lifecycle/markets.d.ts +3 -0
- package/dist/lifecycle/markets.d.ts.map +1 -1
- package/dist/lifecycle/markets.js +24 -1
- package/dist/lifecycle/markets.js.map +1 -1
- package/dist/lifecycle/presets.d.ts +9 -3
- package/dist/lifecycle/presets.d.ts.map +1 -1
- package/dist/lifecycle/presets.js +103 -1
- package/dist/lifecycle/presets.js.map +1 -1
- package/docs/launch-lifecycle.md +109 -10
- package/examples/README.md +11 -5
- package/examples/hmm-launch-config.ts +29 -0
- package/examples/launch-example.ts +13 -5
- package/package.json +1 -1
- package/src/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.ts +12 -0
- package/src/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.ts +71 -0
- package/src/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.ts +71 -0
- package/src/lifecycle/hmm.ts +99 -0
- package/src/lifecycle/index.ts +1 -0
- package/src/lifecycle/markets.ts +22 -1
- package/src/lifecycle/presets.ts +108 -1
- package/assets/abyss-social.webp +0 -0
package/README.md
CHANGED
|
@@ -1,113 +1,100 @@
|
|
|
1
|
-

|
|
2
2
|
|
|
3
3
|
# Abyss TypeScript SDK
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
TypeScript SDK for token launches, swaps, and lending with [viem](https://viem.sh).
|
|
6
|
+
Import the public package as `@black-market/sdk`. Requires Node 24+ to run the examples.
|
|
6
7
|
|
|
7
8
|
## Install
|
|
8
9
|
|
|
10
|
+
Install the package with `pnpm add @black-market/sdk viem`, or use a checkout
|
|
11
|
+
to run and customize the examples:
|
|
12
|
+
|
|
9
13
|
```sh
|
|
10
|
-
|
|
14
|
+
git clone https://github.com/abysshopper/black-market-node-sdk.git
|
|
15
|
+
cd black-market-node-sdk
|
|
16
|
+
pnpm install --frozen-lockfile
|
|
17
|
+
pnpm build
|
|
11
18
|
```
|
|
12
19
|
|
|
20
|
+
### HMM pool hooks (0.9.0)
|
|
21
|
+
|
|
22
|
+
Robinhood mainnet has frozen **HMM Fixed** and **HMM Dynamic** presets:
|
|
23
|
+
`KnownLifecycleProfile.V4HmmFixedPool` / `V4HmmDynamicPool`. Both require zero
|
|
24
|
+
LP and developer fees, plus a typed `HmmLaunchConfig` passed to the config6
|
|
25
|
+
encoder; it appends the required 448-byte tail automatically. Use
|
|
26
|
+
`defaultHmmLaunchConfig({ tokenBudget, quoteAsset, quoteDecimals })` for calibrated
|
|
27
|
+
WETH/USDG defaults. Unknown quotes require explicit raw quote thresholds.
|
|
28
|
+
|
|
29
|
+
At harvest, the configured share of **quote fees** funds a per-market HMM
|
|
30
|
+
liquidity manager; the remainder follows the normal creator/reward split.
|
|
31
|
+
Token fees and locked launch positions are untouched. The fee owner can change
|
|
32
|
+
the share later. Premium decay defaults to off (72 hours is an explicit opt-in).
|
|
33
|
+
See [HMM configuration](docs/launch-lifecycle.md#090-release-hmm-pool-hooks) and
|
|
34
|
+
the [pure, unsigned HMM example](examples/hmm-launch-config.ts).
|
|
35
|
+
|
|
13
36
|
## Examples
|
|
14
37
|
|
|
15
|
-
|
|
16
|
-
|
|
38
|
+
The most complete case is [`launch-erc20-dividends-multiquote-mixed.ts`](examples/launch-erc20-dividends-multiquote-mixed.ts).
|
|
39
|
+
On Robinhood mainnet (**chain 4663**), it:
|
|
40
|
+
|
|
41
|
+
1. Creates an ERC20 with 1,000,000 initial tokens and holder dividends.
|
|
42
|
+
Fee-asset allocations split 40% to rewards and 60% to the owner, not a 40% tax.
|
|
43
|
+
2. Splits liquidity across V4/WETH (two positions), V4/USDG (two), and Abyss/WETH
|
|
44
|
+
(three), priced from the same whole-supply USD valuation (default $5,000).
|
|
45
|
+
3. Funds one opening buy per market with 0.00001 ETH each by default. ETH wraps
|
|
46
|
+
into WETH; USDG uses an admitted Kyber conversion. ETH for gas is additional.
|
|
47
|
+
4. Prepares and proves the complete staged plan, prints the economic review,
|
|
48
|
+
and saves artifacts. The default dry-run never signs or submits anything.
|
|
49
|
+
5. With authorization, stages metadata, begins and prepares the markets, then
|
|
50
|
+
activates all seven positions and three buys together. It verifies chain
|
|
51
|
+
results and API publication; optional images are verified before submission.
|
|
52
|
+
|
|
53
|
+
### Configure and run
|
|
54
|
+
|
|
55
|
+
From the checkout root, create `.env` without overwriting existing configuration:
|
|
17
56
|
|
|
18
57
|
```sh
|
|
19
|
-
|
|
20
|
-
|
|
58
|
+
cp -n examples/.env.example .env
|
|
59
|
+
chmod 600 .env
|
|
21
60
|
```
|
|
22
61
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
keystore; `EXAMPLE_KEYSTORE_PASSWORD` defaults to empty). Optional `RPC_URL`
|
|
28
|
-
overrides the default endpoint. Choose one example for an unsigned dry run:
|
|
62
|
+
Set `LAUNCH_API_URL` and exactly one key source: `PRIVATE_KEY`, or
|
|
63
|
+
`EXAMPLE_KEYSTORE_PATH` to an owner-only V3 scrypt keystore (`EXAMPLE_KEYSTORE_PASSWORD`
|
|
64
|
+
defaults to empty). Optional `RPC_URL` overrides the official chain4663 RPC.
|
|
65
|
+
Remote endpoints require HTTPS; existing environment values override `.env`.
|
|
29
66
|
|
|
30
67
|
```sh
|
|
31
|
-
|
|
32
|
-
node examples/launch-erc20-abyss.ts
|
|
33
|
-
node examples/launch-erc404-v4.ts
|
|
34
|
-
node examples/launch-erc404-abyss.ts
|
|
35
|
-
node examples/launch-erc20-staking-v4.ts
|
|
36
|
-
node examples/launch-erc20-dividends-abyss.ts
|
|
37
|
-
node examples/launch-erc20-burn-mixed.ts
|
|
38
|
-
node examples/launch-erc404-dividends-mixed.ts
|
|
39
|
-
node examples/launch-erc20-multi-quote.ts
|
|
40
|
-
node examples/launch-erc20-depth-v4.ts
|
|
68
|
+
# Dry run: no signing, chain submission, image upload, or publication.
|
|
41
69
|
node examples/launch-erc20-dividends-multiquote-mixed.ts
|
|
70
|
+
# Explicitly authorize spending funds and publishing; no confirmation prompt.
|
|
71
|
+
node examples/launch-erc20-dividends-multiquote-mixed.ts --broadcast
|
|
72
|
+
# After partial execution, replace this path with the ORIGINAL run directory.
|
|
73
|
+
node examples/launch-erc20-dividends-multiquote-mixed.ts --resume "launch-results/<original-run>"
|
|
42
74
|
```
|
|
43
75
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
not merely metadata staging. See the [example guide](examples/README.md).
|
|
53
|
-
|
|
54
|
-
Launch cases **default to a dry run**: they print **DRY RUN — no transactions signed
|
|
55
|
-
or broadcast.**, perform the full planning/economic review and save artifacts, then
|
|
56
|
-
exit successfully without creating a wallet signer or writing to the chain/API.
|
|
57
|
-
The last output line gives the same case command with `--broadcast`:
|
|
76
|
+
Dry-run needs live RPC/API access, the creator key, funding, and admission.
|
|
77
|
+
Review the saved `economic-review.json` in `launch-results/`. Broadcast builds a
|
|
78
|
+
**fresh plan**; resume may spend/publish but retains the original plan and session.
|
|
79
|
+
Keep recovery files; never commit or share keys, private artifacts, or signed bytes.
|
|
80
|
+
|
|
81
|
+
## Creating your own
|
|
82
|
+
|
|
83
|
+
Copy the case wrapper beside its helpers, then customize it:
|
|
58
84
|
|
|
59
85
|
```sh
|
|
60
|
-
|
|
86
|
+
cp examples/launch-erc20-dividends-multiquote-mixed.ts examples/launch-my-token.ts
|
|
87
|
+
node examples/launch-my-token.ts
|
|
61
88
|
```
|
|
62
89
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
`
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
Keep `.env`, keystores and private recovery files out of Git.
|
|
75
|
-
|
|
76
|
-
The published `0.8.0` package ships launch topology safety, TypeScript examples,
|
|
77
|
-
dry-run/`--broadcast` modes, retained-plan recovery, and the opt-in static session cache.
|
|
78
|
-
`prepareAndPlanLifecycleLaunch` combines bound-hook preparation and complete admission;
|
|
79
|
-
`preparePoolBoundLifecyclePlan` and `PlannedLaunch.atomicAttempt` are removed.
|
|
80
|
-
Only the explicitly requested execution mode is simulated. Independent `planLaunch`,
|
|
81
|
-
recovery and build-next operations acquire fresh authority.
|
|
82
|
-
|
|
83
|
-
Known deployments/profiles/hooks ship as frozen construction presets selected by
|
|
84
|
-
typed keys without remote discovery. Explicit live discovery and unlisted profiles
|
|
85
|
-
remain supported. The current October8 mined graph supports pool-bound config6/V2
|
|
86
|
-
construction; historical config5 evidence is never reused or relabeled as that graph.
|
|
87
|
-
Creator minimum/maximum hook fees and upward-price sensitivity are independent
|
|
88
|
-
per-pool values frozen at launch. Optional `buySlippageBps` protects all ordered buys in one SDK
|
|
89
|
-
operation, returning only the final proved commitment. Pure transaction compilation
|
|
90
|
-
reports exact calldata sizes. Position recipes use Black Market's Early Scarcity,
|
|
91
|
-
Staircase and Smooth Ramp weights, widths and gaps with exact allocation maxima.
|
|
92
|
-
Position maxima sum to each market budget; market budgets sum to minted supply.
|
|
93
|
-
Actual mint-rounding residuals burn before buys, with no creator reserve.
|
|
94
|
-
Staircase and Early Scarcity can explicitly use `positionGaps: "adjacent"` instead
|
|
95
|
-
of source gaps, retaining their weights and widths without zero-liquidity price jumps.
|
|
96
|
-
The final band now extends to the finite usable protocol boundary by default.
|
|
97
|
-
Unstarted planning requires opening coverage, aligned ticks, no interior gaps and
|
|
98
|
-
a funded permanent tail in every market. Started, in-flight and terminal recovery
|
|
99
|
-
is not retroactively blocked by this creation policy. Explicit topology opt-outs
|
|
100
|
-
do not bypass stateful execution proof. See the API guide for the rule and option scopes.
|
|
101
|
-
|
|
102
|
-
Lifecycle planning admits execution only after exact stateful proof. Robinhood
|
|
103
|
-
admission reads native Nitro compute/poster evidence; optional caller caps only
|
|
104
|
-
tighten it. Build-next can freshly prove an optional untrusted `reviewedTransaction`
|
|
105
|
-
without changing its exact gas/price, and separately preflight that immediate
|
|
106
|
-
envelope with an active `submissionClient`. Execution proof is not wallet submission.
|
|
107
|
-
|
|
108
|
-
[Example setup](https://github.com/abysshopper/black-market-node-sdk/tree/main/examples)
|
|
109
|
-
· [API guide](https://github.com/abysshopper/black-market-node-sdk/blob/main/docs/launch-lifecycle.md)
|
|
110
|
-
· [MIT license](https://github.com/abysshopper/black-market-node-sdk/blob/main/LICENSE)
|
|
111
|
-
|
|
112
|
-
[Agent guide](https://github.com/abysshopper/black-market-node-sdk/blob/main/AGENTS.md)
|
|
113
|
-
· [Skills](https://github.com/abysshopper/black-market-node-sdk/tree/main/.agents/skills)
|
|
90
|
+
Edit the object passed to `runLaunchExample`: unique `id`, `tokenKind`
|
|
91
|
+
(0 ERC20 / 1 ERC404), `rewardMode` (0 none / 1 staking / 2 dividends),
|
|
92
|
+
`mode` (`atomic` / `staged`), `markets` (`venue`, `quote`, `positions`), and
|
|
93
|
+
`buysPerMarket`. Supported venues are `v4`/`abyss`, quotes `WETH`/`USDG`.
|
|
94
|
+
Customize identity, valuation, and buy input with the `EXAMPLE_*` keys in
|
|
95
|
+
[`.env.example`](examples/.env.example). For supply, fees, budgets, or ranges,
|
|
96
|
+
adapt `constructPlan` in `launch-example.ts` and `deriveExampleMarketEconomics`
|
|
97
|
+
in `launch-example-support.ts`. If copying elsewhere, include the Kyber helper too.
|
|
98
|
+
|
|
99
|
+
See the [launch/API guide](docs/launch-lifecycle.md), [runner configuration](examples/README.md),
|
|
100
|
+
and [MIT license](LICENSE) for deeper reference.
|
|
Binary file
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Hex } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* Exact config6/V2 constructor creation code from the registered zero-author-royalty Dynamic Fee Hook.
|
|
4
|
+
* Evidence: pool-hook-template-v1/20261011T033141Z-dynamic-fee-zero-royalty/admission.json
|
|
5
|
+
* and contracts/evidence/verify-zero-royalty-20261011/children/ runtime.json files.
|
|
6
|
+
* PoolHookDeployerV1._initCode strips the first STOP byte from each storage-child runtime,
|
|
7
|
+
* concatenates chunk0 then chunk1, and appends the exact 20-word V2 arguments per market.
|
|
8
|
+
* Creation-code keccak256: 0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a.
|
|
9
|
+
* Creation-code size: 28918 bytes; constructor arguments add 640 bytes.
|
|
10
|
+
*/
|
|
11
|
+
export declare const dynamicFeePoolHookV1CreationCode: Hex;
|
|
12
|
+
//# sourceMappingURL=dynamic-fee-pool-hook-v1-20261011.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-fee-pool-hook-v1-20261011.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,EAAE,GAAs/wD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exact config6/V2 constructor creation code from the registered zero-author-royalty Dynamic Fee Hook.
|
|
3
|
+
* Evidence: pool-hook-template-v1/20261011T033141Z-dynamic-fee-zero-royalty/admission.json
|
|
4
|
+
* and contracts/evidence/verify-zero-royalty-20261011/children/ runtime.json files.
|
|
5
|
+
* PoolHookDeployerV1._initCode strips the first STOP byte from each storage-child runtime,
|
|
6
|
+
* concatenates chunk0 then chunk1, and appends the exact 20-word V2 arguments per market.
|
|
7
|
+
* Creation-code keccak256: 0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a.
|
|
8
|
+
* Creation-code size: 28918 bytes; constructor arguments add 640 bytes.
|
|
9
|
+
*/
|
|
10
|
+
export const dynamicFeePoolHookV1CreationCode = "0x610260604052348015610010575f5ffd5b506040516170f63803806170f683398101604081905261002f91610c9f565b808061003a81610471565b611afc613fff30161461006057604051632a96f9e160e21b815260040160405180910390fd5b80516001600160a01b039081166080908152602080840151831660a0908152604080860151851660c0526060860151851660e0529285015184166101005284015190921661012052516100b591839101610e24565b60408051808303601f1901815291905280516020909101206101609081526102408201516101809081526101208301516001600160a01b039081166101a05261026084015163ffffffff166101c052908301519183015160189290921b66ffffffff0000001662ffffff909216919091176101e05260a082015160c08301519082169116105f8161014a578260a00151610150565b8260c001515b90505f82610162578360c00151610168565b8360a001515b6001600160a01b038084166102008190529082166102208190526040805160a081018252928352602083019190915260e087015162ffffff169082015261010086015160020b60608201523060808201529091506101c78160a0902090565b6101405280515f80546001600160a01b03199081166001600160a01b03938416178255602080850151600180546040808901516060808b0151958a166001600160b81b031990941693909317600160a01b62ffffff928316021762ffffff60b81b1916600160b81b91909516029390931782556080808901516002805490971690891617909555825161012081018452958652938b015186169285019290925260c08a0151909416938301939093526101a088015191929083019160ff169081111561029557610295610fc9565b60018111156102a6576102a6610fc9565b815261014087015162ffffff166020808301919091526101c088015160ff166040808401919091526101e08901516001600160a01b039081166060808601919091526102008b0151151560808601526102208b015160a0909501949094528451600380549183166001600160a01b031992831617815593860151600480549184169183169190911790559185015160058054919092169281168317825593850151929390916001600160a81b031990911617600160a01b83600181111561036f5761036f610fc9565b0217905550608082015160028201805460a08086015160ff16600160c01b0260ff60c01b1962ffffff909516600160a81b029490941663ffffffff60a81b199092169190911792909217905560c08084015160038401805460e08701511515600160a01b026001600160a81b03199091166001600160a01b03938416171790556101009094015160049093019290925588015190880151908216911610610240525050506102208301515f925082915061042890610b1e565b6016805461ffff909216600160e01b0261ffff60e01b1962ffffff909416600160c81b029390931664ffffffffff60c81b19909216919091179190911790555061103a92505050565b80516001600160a01b03163b1580610495575060208101516001600160a01b03163b155b806104ac575060408101516001600160a01b03163b155b806104c3575060608101516001600160a01b03163b155b806104da575060808101516001600160a01b03163b155b806104f1575060c08101516001600160a01b03163b155b80610507575060a08101516001600160a01b0316155b8061052b57508060c001516001600160a01b03168160a001516001600160a01b0316145b80610542575060a08101516001600160a01b031630145b80610566575080606001516001600160a01b031681602001516001600160a01b0316145b806105895750805f01516001600160a01b031681602001516001600160a01b0316145b806105a0575060208101516001600160a01b031630145b806105b7575060608101516001600160a01b031630145b806105ce575060808101516001600160a01b031630145b806105f15750805f01516001600160a01b031681608001516001600160a01b0316145b80610604575060e081015162ffffff1615155b8061061a5750600160020b81610100015160020b125b806106315750610100810151617fff60029190910b135b8061065757506401000276a36001600160a01b03168161012001516001600160a01b0316105b8061068d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b03168161012001516001600160a01b031610155b806106a95750620f424062ffffff1681610140015162ffffff16115b806106c7575080610140015162ffffff1681610160015162ffffff16115b806106dd5750600160ff16816101a0015160ff16115b8061071457506101c081015160ff161580159061071457506004816101c0015160ff1610806107145750600a816101c0015160ff16115b8061073d57506101c081015160ff161580159061073d57506101e08101516001600160a01b0316155b8061075557506101e08101516001600160a01b031630145b806107795750805f01516001600160a01b0316816101e001516001600160a01b0316145b8061079e575080608001516001600160a01b0316816101e001516001600160a01b0316145b806107ac5750610240810151155b806107c0575061026081015163ffffffff16155b806107d65750602081610260015163ffffffff16115b156107f45760405163c52a9bd360e01b815260040160405180910390fd5b5f816020015190505f8260800151905082606001516001600160a01b0316826001600160a01b031663f2f4eb266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108729190610fdd565b6001600160a01b03161415806108fc5750825f01516001600160a01b0316826001600160a01b031663dc4c90d36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f09190610fdd565b6001600160a01b031614155b8061097c575082604001516001600160a01b0316826001600160a01b031663c7f7fb906040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109709190610fdd565b6001600160a01b031614155b806109fc575082608001516001600160a01b0316826001600160a01b031663d7b96d4e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f09190610fdd565b6001600160a01b031614155b80610a7c575082602001516001600160a01b0316816001600160a01b03166316eebd1e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a709190610fdd565b6001600160a01b031614155b80610afb5750825f01516001600160a01b0316816001600160a01b031663dc4c90d36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610acb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aef9190610fdd565b6001600160a01b031614155b15610b195760405163c52a9bd360e01b815260040160405180910390fd5b505050565b5f5f60c0516001600160a01b031663deee4135846040518263ffffffff1660e01b8152600401610b5091815260200190565b6040805180830381865afa158015610b6a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8e9190610fff565b909250905062ffffff82161580610bac5750620d89e862ffffff8316115b80610bbb575060028161ffff16105b80610bcb575061100061ffff8216115b15610be95760405163c52a9bd360e01b815260040160405180910390fd5b915091565b60405161028081016001600160401b0381118282101715610c1d57634e487b7160e01b5f52604160045260245ffd5b60405290565b6001600160a01b0381168114610c37575f5ffd5b50565b8051610c4581610c23565b919050565b805162ffffff81168114610c45575f5ffd5b8051600281900b8114610c45575f5ffd5b805163ffffffff81168114610c45575f5ffd5b805160ff81168114610c45575f5ffd5b80518015158114610c45575f5ffd5b5f610280828403128015610cb1575f5ffd5b50610cba610bee565b610cc383610c3a565b8152610cd160208401610c3a565b6020820152610ce260408401610c3a565b6040820152610cf360608401610c3a565b6060820152610d0460808401610c3a565b6080820152610d1560a08401610c3a565b60a0820152610d2660c08401610c3a565b60c0820152610d3760e08401610c4a565b60e0820152610d496101008401610c5c565b610100820152610d5c6101208401610c3a565b610120820152610d6f6101408401610c4a565b610140820152610d826101608401610c4a565b610160820152610d956101808401610c6d565b610180820152610da86101a08401610c80565b6101a0820152610dbb6101c08401610c80565b6101c0820152610dce6101e08401610c3a565b6101e0820152610de16102008401610c90565b61020082015261022083810151908201526102408084015190820152610e0a6102608401610c6d565b6102608201529392505050565b6001600160a01b03169052565b5f61028082019050610e37828451610e17565b6020830151610e496020840182610e17565b506040830151610e5c6040840182610e17565b506060830151610e6f6060840182610e17565b506080830151610e826080840182610e17565b5060a0830151610e9560a0840182610e17565b5060c0830151610ea860c0840182610e17565b5060e0830151610ebf60e084018262ffffff169052565b50610100830151610ed661010084018260020b9052565b50610120830151610eeb610120840182610e17565b50610140830151610f0461014084018262ffffff169052565b50610160830151610f1d61016084018262ffffff169052565b50610180830151610f3761018084018263ffffffff169052565b506101a0830151610f4e6101a084018260ff169052565b506101c0830151610f656101c084018260ff169052565b506101e0830151610f7a6101e0840182610e17565b50610200830151610f9061020084018215159052565b50610220830151610220830152610240830151610240830152610260830151610fc261026084018263ffffffff169052565b5092915050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610fed575f5ffd5b8151610ff881610c23565b9392505050565b5f5f60408385031215611010575f5ffd5b61101983610c4a565b9150602083015161ffff8116811461102f575f5ffd5b809150509250929050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051615deb61130b5f395f818161302901526136d001525f81816122570152818161235d015261379e01525f818161221601528181612322015261377d01525f818161047f0152818161059c01526134a801525f818161055a01526138dd01525f81816104cb015261136201525f6106fb01525f6103f101525f81816103560152818161096601528181610d69015281816110e8015281816113d1015281816115ed015281816116ef01528181611a1a01528181611e4b01528181611f8001528181612120015281816122f70152818161282d015281816129ae01528181612ce20152818161342a015281816134d70152818161386a015281816138a5015261443701525f818161088a01528181612e9f01528181613b1f015261451701525f818161053301528181610d3101528181610fc10152818161113601528181611fcc01528181612037015281816120a1015281816122d101528181612853015281816128f70152818161298b015261375c01525f818161082f01528181612eee01528181613b6e015261446f01525f818161066e01526111c001525f81816102d0015281816108f401528181610c650152818161132501528181612f380152818161395101526144f401525f818161072b01528181610adb01528181610b7101528181610ec2015281816110c7015281816112940152818161145b015281816115cc0152818161165f0152818161190a01528181611b7101528181611d8801528181612145015281816121b9015281816122b001528181612b1601528181612ba501528181612c22015281816134510152818161350f0152818161373b01528181613d3b015281816145d30152818161478f0152818161481e0152818161489b01528181614963015281816149ae0152614a1b0152615deb5ff3fe608060405234801561000f575f5ffd5b5060043610610239575f3560e01c80630268e2931461023d5780630581555f146102525780630885f7321461026c57806321d0ee701461028c578063259982e5146102b85780632b20e397146102cb578063359b4f301461030a5780633e451d6a1461032b57806342ea83e01461033e57806347f8496c1461035157806350fb3a3a146103785780635524d5481461038b578063575e24b4146103ae5780635955d09a146103ec57806360f89f2e14610413578063654f631c146104265780636fe7e6eb14610457578063747a68cd1461046a5780637dbeb94e1461047d578063847211a6146104b35780638bc801c1146104c657806391dd7346146104ed578063921b0bed1461050d5780639759164a1461052e5780639e5fe06214610555578063a3f4bac714610591578063a86911141461059a578063aae49d70146105c3578063ac4e4054146105cd578063ac5555aa146105d6578063b47b2fb1146105e9578063b6a8b0fa1461061f578063c5c51dca14610632578063c5fbb29814610647578063c67046af1461065a578063c7f7fb9014610669578063ca266dfe14610690578063ce1b8e4f146106f6578063d2be66251461071d578063dc4c90d314610726578063dd71cea81461074d578063e1b4af691461079a578063e2e65ec1146107ad578063f11457c7146107c0578063f2f4eb261461082a578063f399150c14610851578063f9bc70e714610872578063fc0c546a14610885578063fd5b6d5b146108ac575b5f5ffd5b61025061024b36600461515e565b6108bf565b005b5f5b60405161ffff90911681526020015b60405180910390f35b61027f61027a366004615178565b6109ba565b60405161026391906151d9565b61029f61029a3660046152d4565b610acf565b6040516001600160e01b03199091168152602001610263565b61029f6102c63660046152d4565b610b65565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610263565b61031d610318366004615354565b610c02565b604051908152602001610263565b61031d610339366004615382565b610c1f565b61025061034c36600461539d565b610c30565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b6102506103863660046153eb565b610dc4565b61039e610399366004615178565b610e9f565b6040519015158152602001610263565b6103c16103bc36600461541e565b610eb4565b604080516001600160e01b03199094168452602084019290925262ffffff1690820152606001610263565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b610250610421366004615477565b6110b8565b610439610434366004615178565b61119e565b6040805162ffffff909316835261ffff909116602083015201610263565b61029f6104653660046154cf565b611288565b61031d610478366004615382565b611428565b7f00000000000000000000000000000000000000000000000000000000000000005b60405162ffffff9091168152602001610263565b61031d6104c1366004615178565b61143c565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6105006104fb366004615526565b61144e565b6040516102639190615564565b61052061051b366004615599565b611573565b604051610263929190615611565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61057c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610263565b6102f2613fff81565b7f000000000000000000000000000000000000000000000000000000000000000060181c61057c565b61049f620f424081565b6102f2611afc81565b61039e6105e4366004615178565b611638565b6105fc6105f736600461569d565b611652565b604080516001600160e01b03199093168352600f9190910b602083015201610263565b61029f61062d36600461571d565b6118fe565b61063a6119b0565b6040516102639190615776565b61031d610655366004615178565b611a5b565b600160405161026391906157b8565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6106a361069e366004615178565b611a7d565b604051610263919081516001600160a01b03908116825260208084015182169083015260408084015162ffffff169083015260608084015160020b90830152608092830151169181019190915260a00190565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b61025461100081565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61076061075b3660046157cb565b611b07565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091169183019190915215156060820152608001610263565b61029f6107a836600461571d565b611b65565b61031d6107bb366004615354565b611c17565b6107d36107ce366004615178565b611c35565b6040805161ffff998a168152978916602089015295881695870195909552600293840b60608701526001600160401b039283166080870152911660a0850152900b60c083015290911660e082015261010001610263565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61086461085f36600461515e565b611caa565b6040516102639291906157eb565b61049f6108803660046157f9565b611eb4565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61031d6108ba366004615354565b611f21565b3068929eee149b4bd2126854036108dd5763ab143c065f526004601cfd5b3068929eee149b4bd2126855336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610931576040516282b42960e81b815260040160405180910390fd5b61093a81611f3f565b6013541561095b576040516304c7cf6760e51b815260040160405180910390fd5b4260138190556040517f0000000000000000000000000000000000000000000000000000000000000000907ff1bac50d2c6f6c83cb8ff6fac488b03adc5fb0cc9fae30db2077588d5d9e5fbd905f90a33868929eee149b4bd212685550565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810191909152610a0b82611f7e565b6040805161012081018252600380546001600160a01b039081168352600454811660208401526005549081169383019390935290916060830190600160a01b900460ff166001811115610a6057610a6061519c565b6001811115610a7157610a7161519c565b8152600282015462ffffff600160a81b820416602083015260ff600160c01b9091048116604083015260038301546001600160a01b0381166060840152600160a01b9004161515608082015260049091015460a09091015292915050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b18576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610b365763ab143c065f526004601cfd5b610b3f85611f3f565b610b498685611fbd565b610b52846120f4565b5063021d0ee760e41b5b95945050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bae576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610bcc5763ab143c065f526004601cfd5b610bd585611f3f565b610bdf8685611fbd565b610be76121e8565b610bf0846120f4565b5063259982e560e01b95945050505050565b5f610c0c83611f7e565b610c1582612213565b5490505b92915050565b5f610c2982612213565b5492915050565b3068929eee149b4bd212685403610c4e5763ab143c065f526004601cfd5b3068929eee149b4bd2126855336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ca2576040516282b42960e81b815260040160405180910390fd5b610cc3610cbe610cb736859003850185615867565b60a0902090565b611f7e565b60125460ff1615610ce757604051630ea075bf60e21b815260040160405180910390fd5b610cf0816122ae565b610cf9816125b7565b610d066020820182615382565b600380546001600160a01b0319166001600160a01b039283161790556012805460ff191660011790557f000000000000000000000000000000000000000000000000000000000000000016610d5e6020830183615382565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007ffafdbdd88ac30f0aa936e576be61816ea751908540523fa81b80c4a406ad7bec60405160405180910390a43868929eee149b4bd21268555050565b3068929eee149b4bd212685403610de25763ab143c065f526004601cfd5b610deb82611f7e565b6016805461ffff600160e01b90910481169083161115610e15578054600160e01b900461ffff1691505b8054600160201b900461ffff165f610e2f60178386612619565b835461ffff60201b1916600160201b61ffff838116918202929092178655919250831614610e98576040805161ffff80851682528316602082015286917f04f592d3848fffa22f73de92a2fd8da837e6d597f468af77c6fc619b478362ae910160405180910390a25b5050505050565b5f610ea982611f7e565b505060125460ff1690565b5f8080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eff576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610f1d5763ab143c065f526004601cfd5b60155460ff1615610f415760405163558a1e0360e11b815260040160405180910390fd5b610f4a87611f3f565b610f526121e8565b60035f610f5f8a896126ac565b90505f610f6c8a8a6126e4565b90505f62ffffff831615801590610f8a5750610f8a828c8c87612722565b15610fa857610fa5610f9f8b602001356127a6565b846127e1565b90505b6040516364b3357d60e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c9666afa90610ffa908f908f9087906004016159c8565b602060405180830381865afa158015611015573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103991906159f3565b90506110758c61104c60208e018e615a0a565b611056575f611058565b825b61106560208f018f615a0a565b61106f578361281f565b5f61281f565b81156110975761109783838760020160189054906101000a900460ff16612a0c565b506315d7892d60e21b965060801b94505f9350505050955095509592505050565b6110c183611f3f565b5f61110c7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612d51565b5050600354919250506001600160a01b0384811691161415806111615750816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b8061117357506001600160a01b038116155b156111905760405162820f3560e61b815260040160405180910390fd5b611198612e03565b50505050565b60405163deee413560e01b8152600481018290525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063deee4135906024016040805180830381865afa158015611204573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112289190615a23565b909250905062ffffff821615806112465750620d89e862ffffff8316115b80611255575060028161ffff16105b80611265575061100061ffff8216115b156112835760405163c52a9bd360e01b815260040160405180910390fd5b915091565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112d1576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036112ef5763ab143c065f526004601cfd5b611304610cbe610cb736879003870187615867565b60125460ff16158061131d5750601254610100900460ff165b8061135a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8061139757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156113b45760405162820f3560e61b815260040160405180910390fd5b6113bd82612fe8565b6012805461ff0019166101001790556040517f0000000000000000000000000000000000000000000000000000000000000000907febcc9ffea17e08841d7588f2ecd87720e1cfb444bb3b5e662c4a5005c3c94ab2905f90a250636fe7e6eb60e01b5b949350505050565b5f61143282612213565b6003015492915050565b5f61144682611f7e565b505060135490565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611498576040516282b42960e81b815260040160405180910390fd5b60145415806114c0575060145483836040516114b5929190615a50565b604051809103902014155b156114de5760405163f7a632f560e01b815260040160405180910390fd5b5f60148190556114f083850185615867565b9050611500610cbe8260a0902090565b601254610100900460ff166115275760405162820f3560e61b815260040160405180910390fd5b5f611534825f01516130f6565b90505f61154483602001516130f6565b905081816040516020016115599291906157eb565b604051602081830303815290604052935050505092915050565b60608061157f85611f7e565b6016805462010000900461ffff165f036115ac576040516329d9e10560e01b815260040160405180910390fd5b805461162b90429087908790600160301b810460020b9061ffff166116117f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061318f565b875460179695949392919062010000900461ffff16613212565b9250925050935093915050565b5f61164282611f7e565b5050601254610100900460ff1690565b5f80336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169c576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036116ba5763ab143c065f526004601cfd5b60155460ff16156116de5760405163558a1e0360e11b815260040160405180910390fd5b6116e787611f3f565b5f61171560107f00000000000000000000000000000000000000000000000000000000000000008b8a61336d565b9050611722885f5f61281f565b60035f61172f8a8a6126e4565b90505f61173f60208c018c615382565b6001600160a01b0316826001600160a01b0316146117695761176460208c018c615382565b611779565b61177960408c0160208d01615382565b905062ffffff8416158015906117965750611796828c8c86612722565b1561182f575f6117b26117ac8c602001356127a6565b866127e1565b9050801561182d575f6117c860208e018e615382565b6001600160a01b0316846001600160a01b0316146117ef576117ea8b600f0b90565b6117f9565b6117f98b60801d90565b90506118098260208e0135615a73565b81600f0b1461182b5760405163161b48a960e21b815260040160405180910390fd5b505b505b62ffffff8416158061184a5750611848818c8c86612722565b155b15611866575063b47b2fb160e01b94505f93506118f392505050565b5f61187460208d018d615382565b6001600160a01b0316826001600160a01b03161461189b576118968a600f0b90565b6118a5565b6118a58a60801d90565b90505f6118bd6118b783600f0b6127a6565b876127e1565b905080156118e1576118e183828760020160189054906101000a900460ff16612a0c565b63b47b2fb160e01b9750955050505050505b965096945050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611947576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036119655763ab143c065f526004601cfd5b60155460ff16156119895760405163558a1e0360e11b815260040160405180910390fd5b61199286611f3f565b61199d86868661281f565b50635b54587d60e11b9695505050505050565b60125460609060ff166119c3575f6119c6565b60015b60ff166001600160401b038111156119e0576119e0615813565b604051908082528060200260200182016040528015611a09578160200160208202803683370190505b5060125490915060ff1615611a58577f0000000000000000000000000000000000000000000000000000000000000000815f81518110611a4b57611a4b615a9a565b6020026020010181815250505b90565b5f611a6582611f7e565b601654600160881b90046001600160401b0316610c19565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152611ab082611f7e565b50506040805160a0810182525f546001600160a01b039081168252600154808216602084015262ffffff600160a01b82041693830193909352600160b81b909204600290810b606083015254909116608082015290565b5f5f5f5f611b1486611f7e565b5f60178661ffff8110611b2957611b29615a9a565b015463ffffffff811698600160201b820460060b9850600160581b82046001600160a01b03169750600160f81b90910460ff1695509350505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611bae576040516282b42960e81b815260040160405180910390fd5b60155460ff1615611bd25760405163558a1e0360e11b815260040160405180910390fd5b3068929eee149b4bd212685403611bf05763ab143c065f526004601cfd5b611bf986611f3f565b611c04865f5f61281f565b5063e1b4af6960e01b9695505050505050565b5f611c2183611f7e565b611c2a82612213565b600101549392505050565b5f5f5f5f5f5f5f5f611c4689611f7e565b505060165461ffff8082169962010000830482169950600160201b830482169850600160301b8304600290810b98506001600160401b03600160481b850481169850600160881b8504169650600160c81b8404900b9450600160e01b909204169150565b5f5f3068929eee149b4bd212685403611cca5763ab143c065f526004601cfd5b3068929eee149b4bd212685560155460ff1615611cfa5760405163558a1e0360e11b815260040160405180910390fd5b611d0383611f3f565b6003546001600160a01b03163314611d2d576040516282b42960e81b815260040160405180910390fd5b600854151580611d3e5750600c5415155b15611e3f575f83604051602001611d559190615aae565b60408051601f1981840301815290829052805160208201206014556348c8949160e01b825291505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906348c8949190611dbd908590600401615564565b5f604051808303815f875af1158015611dd8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dff9190810190615abc565b60145490915015611e235760405163f7a632f560e01b815260040160405180910390fd5b80806020019051810190611e379190615b4e565b909450925050505b336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007f4a93be8d0a356d70b54fdf016f78a2ed8b8a3c420952848eb4f4b2c4546405b68484604051611e9b9291906157eb565b60405180910390a33868929eee149b4bd2126855915091565b5f3068929eee149b4bd212685403611ed35763ab143c065f526004601cfd5b601254610100900460ff16611efa5760405162820f3560e61b815260040160405180910390fd5b611f02612e03565b5f611f0c836133db565b509050611f18816135bf565b9150505b919050565b5f611f2b83611f7e565b611f3482612213565b600201549392505050565b611f54610cbe610cb736849003840184615867565b601254610100900460ff16611f7b5760405162820f3560e61b815260040160405180910390fd5b50565b7f00000000000000000000000000000000000000000000000000000000000000008114611f7b5760405162820f3560e61b815260040160405180910390fd5b60155460ff16801561200e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158061200e5750604081013515155b1561202c5760405163558a1e0360e11b815260040160405180910390fd5b6013545f0361208b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461208757604051637cd5a0ad60e01b815260040160405180910390fd5b5050565b600654600160a01b900460ff1680156120d657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561208757604051630af9fb3360e21b815260040160405180910390fd5b604081013515806121165750601654600160481b90046001600160401b031643145b1561211e5750565b7f00000000000000000000000000000000000000000000000000000000000000005f61216a7f000000000000000000000000000000000000000000000000000000000000000083612d51565b5090925061217e9150506020840184615b70565b60020b8160020b12806121a6575061219c6040840160208501615b70565b60020b8160020b12155b156121b057505050565b6121e3816121de7f00000000000000000000000000000000000000000000000000000000000000008561318f565b61365a565b505050565b601554610100900460ff16156121fa57565b612202612e03565b6015805461ff001916610100179055565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361225557506008919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036122965750600c919050565b60405162820f3560e61b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f61231b837f0000000000000000000000000000000000000000000000000000000000000000612d51565b50505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b5f148061238057506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b155b8061239357506001600160a01b03811615155b806123bf57506001600160a01b0382166123b36040860160208701615382565b6001600160a01b031614155b806123ed57506005546001600160a01b03166123e16060860160408701615382565b6001600160a01b031614155b806124355750600554600160a01b900460ff1660018111156124115761241161519c565b6124216080860160608701615b89565b60018111156124325761243261519c565b14155b806124625750600554600160a81b900462ffffff1661245a60a0860160808701615ba7565b62ffffff1614155b8061248b5750600554600160c01b900460ff1661248560c0860160a08701615bc2565b60ff1614155b806124b957506006546001600160a01b03166124ad60e0860160c08701615382565b6001600160a01b031614155b806124e45750600654600160a01b900460ff1615156124df610100860160e08701615a0a565b151514155b806124f6575060075461010085013514155b8061251557506125096020850185615382565b6001600160a01b03163b155b8061253d57506001600160a01b0382166125326020860186615382565b6001600160a01b0316145b8061255c5750306125516020860186615382565b6001600160a01b0316145b8061258457506001600160a01b0383166125796020860186615382565b6001600160a01b0316145b156125a25760405163c52a9bd360e01b815260040160405180910390fd5b6111986125b26020860186615382565b613739565b5f5f6125c783610100013561119e565b6016549193509150600283810b600160c81b909204900b1415806125fb575060165461ffff828116600160e01b9092041614155b156121e35760405163c52a9bd360e01b815260040160405180910390fd5b5f8261ffff165f0361263e576040516329d9e10560e01b815260040160405180910390fd5b8261ffff168261ffff16116126545750816126a5565b825b8261ffff168161ffff1610156126a0576001858261ffff1661ffff811061267f5761267f615a9a565b01805463ffffffff191663ffffffff92909216919091179055600101612656565b508190505b9392505050565b5f5f5f6126b8846133db565b604082015191935091506126cf6010848888613bf8565b93506126db8282613c76565b50505092915050565b5f6126f26020830183615a0a565b15155f60208401351214612715576127106040840160208501615382565b6126a5565b6126a56020840184615382565b5f8060016002840154600160a01b900460ff1660018111156127465761274661519c565b1461277e576127586020850185615a0a565b6127715761276c6040860160208701615382565b61278d565b61276c6020860186615382565b60028301546001600160a01b03165b6001600160a01b03878116911614915050949350505050565b5f600160ff1b82036127cb57604051637e2df70960e11b815260040160405180910390fd5b5f82126127d85781610c19565b610c1982615be2565b5f6127f5838362ffffff16620f4240613c99565b905060016001607f1b03811115610c1957604051637e2df70960e11b815260040160405180910390fd5b60405162e568cf60e71b81527f000000000000000000000000000000000000000000000000000000000000000060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906372b4678090602401602060405180830381865afa1580156128a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c491906159f3565b5f036128cf57505050565b6015805460ff191660011790556040516381f8a9d160e01b81525f9081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906381f8a9d19061293090889088908890600401615bfc565b60408051808303815f875af115801561294b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061296f9190615b4e565b6015805460ff1916905560405191935091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016907f0000000000000000000000000000000000000000000000000000000000000000907fa30ca6140dfb2cac1c1021c5303d8dc7de0cd4db47221fb3ad068fac7ef8185e906129fd90869086906157eb565b60405180910390a35050505050565b3068929eee149b4bd212685403612a2a5763ab143c065f526004601cfd5b3068929eee149b4bd2126855825f612a4182612213565b90505f8160020154825f0154612a579190615c1b565b9050612a6a8160016001607f1b03615c1b565b851115612a7c57612a7c868383613d27565b5f60ff851615612aaf576064612a9560ff871688615c42565b612aa090607d615c55565b612aaa9190615c42565b612ab1565b5f5b905085835f015f828254612ac59190615c6c565b9250508190555080836001015f828254612adf9190615c6c565b9250508190555085836003015f828254612af99190615c6c565b9091555050604051627eeac760e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e90612b4c9030908990600401615c7f565b602060405180830381865afa158015612b67573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b8b91906159f3565b604051630ab714fb60e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063156e29f690612bde90309089908c90600401615c99565b5f604051808303815f87803b158015612bf5575f5ffd5b505af1158015612c07573d5f5f3e3d5ffd5b5050604051627eeac760e11b81525f92506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e90612c599030908a90600401615c7f565b602060405180830381865afa158015612c74573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c9891906159f3565b905081811080612caa57508782820314155b80612cb85750846003015481105b15612cd65760405163104eed1d60e31b815260040160405180910390fd5b856001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007f2616e25de5abcc9e6a698b140fb6c92f55ace21b7a57f76172f195dbbf693af68a86604051612d329291906157eb565b60405180910390a35050505050503868929eee149b4bd2126855505050565b5f5f5f5f5f612d5f86613dcb565b604051631e2eaeaf60e01b8152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa158015612da7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dcb91906159f3565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b601554610100900460ff1615612e1557565b6003546001600160a01b03165f612e3b612e3683630d96a1bf60e21b613e07565b613e21565b90505f612e5d8263537df88f60e11b6001600160a01b038616602460c0613e33565b9050606081015160a01c815160a01c1715612e76575f5ffd5b60a081015160808201511760101c15612e8d575f5ffd5b60c081016040525f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612ed3612e368563514526c360e11b613e07565b6001600160a01b0316141580612f2e57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612f22612e368563056a0fbf60e31b613e07565b6001600160a01b031614155b80612f63575081517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b80612f7757505f612f75836020015190565b145b80612f8b57505f612f89836040015190565b145b80612f9f57505f612f9d836060015190565b145b80612fb857508061ffff16612fb58360a0015190565b14155b80612fca5750608082015160a0830151115b156111985760405163c52a9bd360e01b815260040160405180910390fd5b6016612ff5601742613e68565b825465ffffffff00001916600160201b61ffff9283160263ffff000019161762010000929091169190910217815561304d827f0000000000000000000000000000000000000000000000000000000000000000613ea8565b8154600160301b600160881b031916600160301b62ffffff9290921691909102600160481b600160881b03191617600160481b436001600160401b039081169190910291909117600160881b600160c81b031916600160881b42929092169190910217808255600290600160e01b900461ffff168111156130d757508054600160e01b900461ffff165b815461ffff8216600160201b0261ffff60201b19909116178255505050565b5f818161310282612213565b80549091505f81900361311957505f949350505050565b613133858384600201548461312e9190615c1b565b613d27565b6001820180545f8085559182905560028401919091556131538183615c1b565b60065490955061316e9085906001600160a01b031683613ebd565b6003546131869085906001600160a01b031687613ebd565b50505050919050565b5f5f61319a83613dcb565b90505f6131a8600383615c6c565b604051631e2eaeaf60e01b8152600481018290529091506001600160a01b03861690631e2eaeaf90602401602060405180830381865afa1580156131ee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5c91906159f3565b6060808261ffff165f03613239576040516329d9e10560e01b815260040160405180910390fd5b866001600160401b0381111561325157613251615813565b60405190808252806020026020018201604052801561327a578160200160208202803683370190505b509150866001600160401b0381111561329557613295615813565b6040519080825280602002602001820160405280156132be578160200160208202803683370190505b5090505f5b8781101561335f576133008b8b8b8b858181106132e2576132e2615a9a565b90506020020160208101906132f79190615cbd565b8a8a8a8a613f4d565b84838151811061331257613312615a9a565b6020026020010184848151811061332b5761332b615a9a565b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508060010190506132c3565b509850989650505050505050565b60018401545f9063ffffffff16801580613392575061338d8585856140f9565b865414155b156133b3576040516001620787ab60e51b0319815260040160405180910390fd5b6133be600182615ce0565b5f87556001909601805463ffffffff191690555093949350505050565b61342760408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290529061010082015290565b5f7f00000000000000000000000000000000000000000000000000000000000000008180806134767f000000000000000000000000000000000000000000000000000000000000000085612d51565b509250925092508062ffffff165f146134a25760405163c52a9bd360e01b815260040160405180910390fd5b8194505f7f000000000000000000000000000000000000000000000000000000000000000090506040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000008152602001856001600160a01b031681526020016135347f00000000000000000000000000000000000000000000000000000000000000008861318f565b6001600160801b0316815260200189602001358152602001895f01602081019061355e9190615a0a565b1515815260055462ffffff600160a81b8204811660208401528416604083015263ffffffff601885901c16606083015260809091019060ff600160a01b9091041660018111156135b0576135b061519c565b81525096505050505050915091565b5f600160ff1b8260600151036135e857604051637e2df70960e11b815260040160405180910390fd5b60a082015160c08301516135fb8461412e565b92508162ffffff168362ffffff16111561362857604051637e2df70960e11b815260040160405180910390fd5b8062ffffff168362ffffff161015613653576040516302cce67760e31b815260040160405180910390fd5b5050919050565b601680546136919060179061ffff808216914291600160301b820460020b918891620100008204811691600160201b90041661418b565b825463ffffffff19166201000061ffff9283160261ffff1916179116178082556136f490600160301b8104600290810b918691600160c81b909104900b7f0000000000000000000000000000000000000000000000000000000000000000614307565b8154600160301b600160881b031916600160301b62ffffff9290921691909102600160481b600160881b03191617600160481b436001600160401b0316021790555050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f6137d2612e3687630d96a1bf60e21b613e07565b90505f6137e0878585614370565b90506001600160a01b038616613800612e368963dc4c90d360e01b613e07565b6001600160a01b031614158061383b57506001600160a01b03851661382f612e3689636bdcb6a760e11b613e07565b6001600160a01b031614155b80613862575030613856612e3689636620eee760e11b613e07565b6001600160a01b031614155b8061389d57507f000000000000000000000000000000000000000000000000000000000000000061389a88631f06e1a760e11b613e07565b14155b806138d057507f00000000000000000000000000000000000000000000000000000000000000006138cd8861440b565b14155b80613911575063ffffffff7f00000000000000000000000000000000000000000000000000000000000000001661390e88634f2ff03160e11b613e07565b14155b8061394157506001600160a01b038616613935612e368763dc4c90d360e01b613e07565b6001600160a01b031614155b8061399157506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613985612e3687630b775e8f60e11b613e07565b6001600160a01b031614155b806139ab57505f6139a88662e568cf60e71b61442e565b14155b806139ca57506139ca6139c586630323715f60e11b61442e565b61445f565b806139e557505f6139e286635c0af38360e01b61442e565b14155b80613a0c57505f613a00612e3687630961712f60e01b61442e565b6001600160a01b031614155b80613a15575080155b80613a2857506001600160a01b0382163b155b80613a3b57506001600160a01b03821630145b80613a575750866001600160a01b0316826001600160a01b0316145b80613a735750846001600160a01b0316826001600160a01b0316145b80613a8f5750856001600160a01b0316826001600160a01b0316145b80613aab5750836001600160a01b0316826001600160a01b0316145b80613ac75750826001600160a01b0316826001600160a01b0316145b80613adf57506006546001600160a01b038381169116145b80613af757506006546001600160a01b038881169116145b15613b155760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613b53612e368463514526c360e11b613e07565b6001600160a01b0316141580613bae57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613ba2612e368463056a0fbf60e31b613e07565b6001600160a01b031614155b80613bc85750613bc86139c58363b3f05b9760e01b613e07565b15613be65760405163c52a9bd360e01b815260040160405180910390fd5b613bef8261446d565b50505050505050565b60018401545f9063ffffffff1615613c26576040516001620787ab60e51b0319815260040160405180910390fd5b8351613c31856135bf565b9150613c3e8185856140f9565b8655613c5062ffffff83166001615cfc565b600196909601805463ffffffff191663ffffffff90971696909617909555949350505050565b601654600160481b90046001600160401b0316431461208757612087828261365a565b82820281838583041485151702613d20575f198385098181108201900382848609835f038416828511613cd35763ae47f7025f526004601cfd5b93849004938382119092035f8390038390046001010292030417600260038302811880840282030280840282030280840282030280840282030280840282030280840290910302026126a5565b0492915050565b805f03613d3357505050565b8281613d5f827f000000000000000000000000000000000000000000000000000000000000000061474d565b1015613d7e576040516365169c1d60e01b815260040160405180910390fd5b81836003015f828254613d919190615c1b565b90915550613da29050818484614777565b613dad84308461494f565b81836002015f828254613dc09190615c6c565b909155505050505050565b6040515f90613dea908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b5f80613e1884848360046020613e33565b51949350505050565b5f8160a01c15613e2f575f5ffd5b5090565b6040518481526023198301613e49578360048201525b81818483895afa613e5c573d5f823e3d81fd5b813d1015610b5c575f5ffd5b6040805160808101825263ffffffff83168082525f602083018190529282019290925260016060909101819052600160f81b9091178355805b9250929050565b5f81613eb457826126a5565b6126a583615d18565b805f03613ec957505050565b5f613ed4843061474d565b90505f613ee1858561474d565b9050613eee858585614a9d565b5f613ef9863061474d565b90505f613f06878761474d565b905083821180613f1857508482850314155b80613f2257508281105b80613f2f57508483820314155b15613bef57604051631dc418c360e31b815260040160405180910390fd5b5f5f8663ffffffff165f03613ff3575f898661ffff1661ffff8110613f7457613f74615a9a565b60408051608081018252919092015463ffffffff808216808452600160201b830460060b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a1614613fdf57613fdc818a8988614ae7565b90505b8060200151816040015192509250506140ed565b8688035f806140078c8c858c8c8c8c614b8d565b91509150815f015163ffffffff168363ffffffff16036140375781602001518260400151945094505050506140ed565b805f015163ffffffff168363ffffffff16036140635780602001518160400151945094505050506140ed565b5f825f0151825f01510390505f835f0151850390508063ffffffff168263ffffffff1660060b856020015185602001510360060b816140a4576140a4615c2e565b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816140dc576140dc615c2e565b048560400151019650965050505050505b97509795505050505050565b5f83838360405160200161410f93929190615d38565b6040516020818303038152906040528051906020012090509392505050565b5f8160c0015162ffffff168260a0015162ffffff161480614157575060e082015163ffffffff16155b15614164575060c0015190565b5f5f61416e614d68565b915091506114208460c001518560a001518660e001518585614dd8565b5f5f5f898961ffff1661ffff81106141a5576141a5615a9a565b60408051608081018252919092015463ffffffff808216808452600160201b830460060b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508916900361420e57888592509250506140ed565b8461ffff168461ffff16118015614236575061422b600186615d5b565b61ffff168961ffff16145b6142405784614242565b835b9150816142508a6001615d75565b61425a9190615d8f565b925061426881898989614ae7565b8a8461ffff1661ffff811061427f5761427f615a9a565b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b02959095166001600160581b0366ffffffffffffff909216600160201b026001600160581b031990931663ffffffff909516949094179190911716919091179190911790555097509795505050505050565b5f5f8560020b6143178685613ea8565b60020b6143249190615db2565b9050600284900b8082131561433b57809150614357565b61434481615be2565b8212156143575761435481615be2565b91505b61436582600289900b615a73565b979650505050505050565b5f80614388856371a9730560e01b8360046020613e33565b80519091506001600160a01b0380861691908516903d906001600160401b038111601f198301821117156143ba575f5ffd5b602081863e8451602080838503030481116001600160401b03821117156143df575f5ffd5b600281036143fe57604060208301873e83602087015114858751141696505b5050505050509392505050565b5f806144238363182148ef60e01b83600460a0613e33565b60a090209392505050565b5f5f613e1884847f000000000000000000000000000000000000000000000000000000000000000060246020613e33565b5f6001821115613e2f575f5ffd5b7f00000000000000000000000000000000000000000000000000000000000000005f6144a68263086fce0d60e11b836004610160613e33565b90505f6005905080604083015111602083015160201c17156144c6575f5ffd5b6101408201606083015b818110156144ee57805160a01c156144e6575f5ffd5b6020016144d0565b505081517f000000000000000000000000000000000000000000000000000000000000000091507f00000000000000000000000000000000000000000000000000000000000000009080158061454957506001604085015114155b8061456757506001600160a01b038316614564856060015190565b14155b8061458557506001600160a01b038316614582856080015190565b14155b806145a357506001600160a01b0382166145a08560a0015190565b14155b806145c357506005546001600160a01b03166145c08560c0015190565b14155b8061460157506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166145fe8560e0015190565b14155b1561461e576040516282b42960e81b815260040160405180910390fd5b5f61462a856020015190565b905061464386636373dff160e11b8460246101c0613e33565b94505f600190505f600590508060a0880151118260808901511117604088015160a01c1715614670575f5ffd5b610120870160c088015b8181101561469857805160a01c15614690575f5ffd5b60200161467a565b50506101a0870161012088015b818110156146c357805160201c156146bb575f5ffd5b6020016146a5565b5050865184925090501415806146de5750600160a086015114155b806146fc57506001600160a01b0383166146f98660c0015190565b14155b8061471a57506001600160a01b0387166147178660e0015190565b14155b80614730575061014085015163ffffffff821610155b15613bef576040516282b42960e81b815260040160405180910390fd5b5f816014526370a0823160601b5f5260208060246010865afa601f3d111660205102905092915050565b604051627eeac760e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e906147c59030908890600401615c7f565b602060405180830381865afa1580156147e0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061480491906159f3565b604051637a94c56560e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f5298aca9061485790309088908790600401615c99565b5f604051808303815f87803b15801561486e575f5ffd5b505af1158015614880573d5f5f3e3d5ffd5b5050604051627eeac760e11b81525f92506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e906148d29030908990600401615c7f565b602060405180830381865afa1580156148ed573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061491191906159f3565b90508181118061492357508281830314155b806149315750836003015481105b15610e985760405163104eed1d60e31b815260040160405180910390fd5b805f0361495b57505050565b825f614987827f000000000000000000000000000000000000000000000000000000000000000061474d565b90505f614994838661474d565b604051630b0d9c0960e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906149e790899089908990600401615c99565b5f604051808303815f87803b1580156149fe575f5ffd5b505af1158015614a10573d5f5f3e3d5ffd5b505050505f614a3f847f000000000000000000000000000000000000000000000000000000000000000061474d565b90505f614a4c858861474d565b905083821180614a5e57508582850314155b80614a6857508281105b80614a7557508583820314155b15614a9357604051631dc418c360e31b815260040160405180910390fd5b5050505050505050565b816014528060345263a9059cbb60601b5f5260205f604460105f875af18060015f511416614add57803d853b151710614add576390b8ec185f526004601cfd5b505f603452505050565b614aef615122565b5f855f01518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020015f856001600160801b031611614b40576001614b42565b845b6001600160801b031663ffffffff60801b608085901b1681614b6657614b66615c2e565b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b614b95615122565b614b9d615122565b888561ffff1661ffff8110614bb457614bb4615a9a565b60408051608081018252919092015463ffffffff8116808352600160201b820460060b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff16151560608201529250614c1290899089614e87565b15614c4b578663ffffffff16825f015163ffffffff1614614c3f5781614c3a83898988614ae7565b614c42565b81815b915091506140ed565b8883614c58876001615d75565b614c629190615d8f565b61ffff1661ffff8110614c7757614c77615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614d2057604080516080810182528a5463ffffffff81168252600160201b810460060b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614d2e88835f015189614e87565b614d4b57604051636ffbbccd60e11b815260040160405180910390fd5b614d588989898887614f45565b9150915097509795505050505050565b5f5f60165461ffff8160101c166001811115614dd25761ffff82168060170154826001840383010660170154915063ffffffff828203168015614dce578260201c8260201c0360060b8181059050808660301c60020b0397505063ffffffff8342031695505b5050505b50509091565b5f8462ffffff168662ffffff1610614df1575083610b5c565b5f83131580614e04575063ffffffff8216155b80614e13575063ffffffff8416155b15614e1f575084610b5c565b63ffffffff82811687870362ffffff160290849086168281614e4357614e43615c2e565b04811115614e55578692505050610b5c565b8363ffffffff168663ffffffff16820281614e7257614e72615c2e565b048862ffffff16019250505095945050505050565b5f8363ffffffff168363ffffffff1611158015614eb057508363ffffffff168263ffffffff1611155b15614ecc578163ffffffff168363ffffffff16111590506126a5565b5f8463ffffffff168463ffffffff1611614ef957614ef463ffffffff8516600160201b615c6c565b614f01565b8363ffffffff165b90505f8563ffffffff168463ffffffff1611614f3057614f2b63ffffffff8516600160201b615c6c565b614f38565b8363ffffffff165b9091111595945050505050565b614f4d615122565b614f55615122565b5f83614f62866001615d75565b614f6c9190615d8f565b61ffff1690505f60018561ffff1683614f859190615c6c565b614f8f9190615c1b565b90505b5f6002614f9f8385615c6c565b614fa99190615c42565b905089614fba61ffff881683615dd8565b61ffff8110614fcb57614fcb615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082018190529095506150375761502f816001615c6c565b925050614f92565b8961ffff8716615048836001615c6c565b6150529190615dd8565b61ffff811061506357615063615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082015285519094505f906150c6908b908b614e87565b90508080156150de57506150de8a8a875f0151614e87565b156150ea575050615116565b80615101576150fa600183615c1b565b925061510f565b61510c826001615c6c565b93505b5050614f92565b50509550959350505050565b604080516080810182525f80825260208201819052918101829052606081019190915290565b5f60a08284031215615158575f5ffd5b50919050565b5f60a0828403121561516e575f5ffd5b6126a58383615148565b5f60208284031215615188575f5ffd5b5035919050565b6001600160a01b03169052565b634e487b7160e01b5f52602160045260245ffd5b60028110611f7b57634e487b7160e01b5f52602160045260245ffd5b6151d5816151b0565b9052565b81516001600160a01b0390811682526020808401519091169082015260408083015161012083019161520d9084018261518f565b50606083015161522060608401826151cc565b506080830151615237608084018262ffffff169052565b5060a083015161524c60a084018260ff169052565b5060c083015161525f60c084018261518f565b5060e083015161527360e084018215159052565b5061010092830151919092015290565b6001600160a01b0381168114611f7b575f5ffd5b5f5f83601f8401126152a7575f5ffd5b5081356001600160401b038111156152bd575f5ffd5b602083019150836020828501011115613ea1575f5ffd5b5f5f5f5f5f8587036101608112156152ea575f5ffd5b86356152f581615283565b95506153048860208901615148565b9450608060bf1982011215615317575f5ffd5b5060c0860192506101408601356001600160401b03811115615337575f5ffd5b61534388828901615297565b969995985093965092949392505050565b5f5f60408385031215615365575f5ffd5b82359150602083013561537781615283565b809150509250929050565b5f60208284031215615392575f5ffd5b81356126a581615283565b5f5f8284036101c08112156153b0575f5ffd5b6153ba8585615148565b9250610120609f19820112156153ce575f5ffd5b5060a0830190509250929050565b61ffff81168114611f7b575f5ffd5b5f5f604083850312156153fc575f5ffd5b823591506020830135615377816153dc565b5f60608284031215615158575f5ffd5b5f5f5f5f5f6101408688031215615433575f5ffd5b853561543e81615283565b945061544d8760208801615148565b935061545c8760c0880161540e565b92506101208601356001600160401b03811115615337575f5ffd5b5f5f5f60e08486031215615489575f5ffd5b6154938585615148565b925060a08401356154a381615283565b915060c08401356154b381615283565b809150509250925092565b8035600281900b8114611f1c575f5ffd5b5f5f5f5f61010085870312156154e3575f5ffd5b84356154ee81615283565b93506154fd8660208701615148565b925060c085013561550d81615283565b915061551b60e086016154be565b905092959194509250565b5f5f60208385031215615537575f5ffd5b82356001600160401b0381111561554c575f5ffd5b61555885828601615297565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f604084860312156155ab575f5ffd5b8335925060208401356001600160401b038111156155c7575f5ffd5b8401601f810186136155d7575f5ffd5b80356001600160401b038111156155ec575f5ffd5b8660208260051b8401011115615600575f5ffd5b939660209190910195509293505050565b604080825283519082018190525f9060208501906060840190835b8181101561564d57835160060b83526020938401939092019160010161562c565b5050838103602080860191909152855180835291810192508501905f5b818110156156915782516001600160a01b031684526020938401939092019160010161566a565b50919695505050505050565b5f5f5f5f5f5f61016087890312156156b3575f5ffd5b86356156be81615283565b95506156cd8860208901615148565b94506156dc8860c0890161540e565b935061012087013592506101408701356001600160401b038111156156ff575f5ffd5b61570b89828a01615297565b979a9699509497509295939492505050565b5f5f5f5f5f5f6101208789031215615733575f5ffd5b863561573e81615283565b955061574d8860208901615148565b945060c0870135935060e087013592506101008701356001600160401b038111156156ff575f5ffd5b602080825282518282018190525f918401906040840190835b818110156157ad57835183526020938401939092019160010161578f565b509095945050505050565b602081016157c5836151b0565b91905290565b5f5f604083850312156157dc575f5ffd5b50508035926020909101359150565b918252602082015260400190565b5f60608284031215615809575f5ffd5b6126a5838361540e565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561584f5761584f615813565b604052919050565b62ffffff81168114611f7b575f5ffd5b5f60a0828403128015615878575f5ffd5b5060405160a081016001600160401b038111828210171561589b5761589b615813565b60405282356158a981615283565b815260208301356158b981615283565b602082015260408301356158cc81615857565b60408201526158dd606084016154be565b606082015260808301356158f081615283565b60808201529392505050565b803561590781615283565b6001600160a01b03168252602081013561592081615283565b6001600160a01b03166020830152604081013561593c81615857565b62ffffff166040830152615952606082016154be565b60020b6060830152608081013561596881615283565b6001600160a01b03166080929092019190915250565b80358015158114611f1c575f5ffd5b6159968161597e565b151582526020818101359083015260408101356159b281615283565b6001600160a01b03166040929092019190915250565b61012081016159d782866158fc565b6159e460a083018561598d565b82610100830152949350505050565b5f60208284031215615a03575f5ffd5b5051919050565b5f60208284031215615a1a575f5ffd5b6126a58261597e565b5f5f60408385031215615a34575f5ffd5b8251615a3f81615857565b6020840151909250615377816153dc565b818382375f9101908152919050565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f831280158216821582161715615a9257615a92615a5f565b505092915050565b634e487b7160e01b5f52603260045260245ffd5b60a08101610c1982846158fc565b5f60208284031215615acc575f5ffd5b81516001600160401b03811115615ae1575f5ffd5b8201601f81018413615af1575f5ffd5b80516001600160401b03811115615b0a57615b0a615813565b615b1d601f8201601f1916602001615827565b818152856020838501011115615b31575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f5f60408385031215615b5f575f5ffd5b505080516020909101519092909150565b5f60208284031215615b80575f5ffd5b6126a5826154be565b5f60208284031215615b99575f5ffd5b8135600281106126a5575f5ffd5b5f60208284031215615bb7575f5ffd5b81356126a581615857565b5f60208284031215615bd2575f5ffd5b813560ff811681146126a5575f5ffd5b5f600160ff1b8201615bf657615bf6615a5f565b505f0390565b60e08101615c0a82866158fc565b60a082019390935260c00152919050565b81810381811115610c1957610c19615a5f565b634e487b7160e01b5f52601260045260245ffd5b5f82615c5057615c50615c2e565b500490565b8082028115828204841417610c1957610c19615a5f565b80820180821115610c1957610c19615a5f565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60208284031215615ccd575f5ffd5b813563ffffffff811681146126a5575f5ffd5b63ffffffff8281168282160390811115610c1957610c19615a5f565b63ffffffff8181168382160190811115610c1957610c19615a5f565b5f8160020b627fffff198103615d3057615d30615a5f565b5f0392915050565b8381526001600160a01b038316602082015260a08101611420604083018461598d565b61ffff8281168282160390811115610c1957610c19615a5f565b61ffff8181168382160190811115610c1957610c19615a5f565b5f61ffff831680615da257615da2615c2e565b8061ffff84160691505092915050565b8181035f831280158383131683831282161715615dd157615dd1615a5f565b5092915050565b5f82615de657615de6615c2e565b50069056";
|
|
11
|
+
//# sourceMappingURL=dynamic-fee-pool-hook-v1-20261011.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-fee-pool-hook-v1-20261011.js","sourceRoot":"","sources":["../../../src/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAQ,g/wDAAg/wD,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { Hex } from "viem";
|
|
2
|
+
export declare const hmmDynamicEnvelope: Readonly<{
|
|
3
|
+
artifactDigest: "0x3b8b7ab8614512ce93d65c6aeb6ed18bb150ef7d74417c7282075ff683f1e35b";
|
|
4
|
+
reviewManifestDigest: "0x8a82a2331225d17a1bf0f167bfaab0bfba5e7fdf7c83455e13f43610fc17feb3";
|
|
5
|
+
configBoundsDigest: "0x72e0b2d542556d472a47f9c38b2c91079c72793af847dee77933f0eca203129d";
|
|
6
|
+
termsDigest: "0x9863cba9dbd05d748983e5833210bb6a67a02dae396cfca3744ea1c35af59910";
|
|
7
|
+
topology: 2;
|
|
8
|
+
configVersion: 6;
|
|
9
|
+
economicVersion: 3;
|
|
10
|
+
capabilities: 123n;
|
|
11
|
+
flags: 0n;
|
|
12
|
+
callbackFlags: 6908;
|
|
13
|
+
callbackMask: 16383;
|
|
14
|
+
protocolTreasury: "0x961981916AB6575C3af3eeCecbf6A3b7Fad7C9e1";
|
|
15
|
+
protocolFeeDenominator: 6;
|
|
16
|
+
beneficiary: "0x7cb44b8693b3C350A2BcD4b681aF85365aa27783";
|
|
17
|
+
maximumDeveloperFeeBps: 0;
|
|
18
|
+
bounds: Readonly<{
|
|
19
|
+
minimumTickSpacing: 1;
|
|
20
|
+
maximumTickSpacing: 32767;
|
|
21
|
+
maximumPositions: 32;
|
|
22
|
+
maximumOracleCardinality: 4096;
|
|
23
|
+
feeModeFlags: 3;
|
|
24
|
+
}>;
|
|
25
|
+
graph: Readonly<{
|
|
26
|
+
manager: "0x8366a39CC670B4001A1121B8F6A443A643e40951";
|
|
27
|
+
hookRoot: "0x0000000000000000000000000000000000000000";
|
|
28
|
+
oracleFactory: "0xe7feF2BC860B25bbdEB6F6AB96d88bAAa77ddad7";
|
|
29
|
+
locker: "0xAF96E3594942Ba12DC34e5da7fD4A3f61C2721Bc";
|
|
30
|
+
collectorFactory: "0xf86670535e6444735a84025408F47F417d4cAeeA";
|
|
31
|
+
collectorDeployer: "0x4F4305423Ad0D8e9fa7CD77be6Fe2bfc50A4BEbA";
|
|
32
|
+
hookDeployer: "0x7B7E967E4F0db00a397317Ec3d84903D3bc6eF85";
|
|
33
|
+
coreCodeHash: "0x9fb8f46c3b980b9db25dfdb487a69a308a86be145860269b4036a4e74480787b";
|
|
34
|
+
managerCodeHash: "0xbd3881180b547f5fe817545743cfb4343e96b1bc6640dcd70c106b0066e95626";
|
|
35
|
+
hookRuntimeCodeHash: "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
36
|
+
oracleFactoryCodeHash: "0x974fb5c72d91ccb99f1eb4679a5d4432c82bbaa0906b1c2917ec4da3499b7b98";
|
|
37
|
+
lockerCodeHash: "0xd2dc1ff8416e7524d777d937f7071fc91871fe0e85ce674e1b8a23420e44a3fc";
|
|
38
|
+
collectorFactoryCodeHash: "0xc298ea4bb51ed399f84572e9ad2324bf6ada59b5f40c4ddfdd05869abf9a2e25";
|
|
39
|
+
collectorDeployerCodeHash: "0x5761744b5ce04faf6a0a1ffcb3ac837d8e048f4420b0be131dfa289559b18c76";
|
|
40
|
+
hookDeployerCodeHash: "0x540ae006e2bc08cd7a38a18e72fddd29c73d1fab0c39a42e87297e67f335b982";
|
|
41
|
+
hookCreationCodeHash: "0x3b8b7ab8614512ce93d65c6aeb6ed18bb150ef7d74417c7282075ff683f1e35b";
|
|
42
|
+
codeChunk0: "0x81abA522890dae0aBC1623C135F0DbD662378d47";
|
|
43
|
+
codeChunk0Hash: "0xa46f41e8834c1e19b0d2eac0d296e3911c2c9e717159be00720a8cb4cc535b60";
|
|
44
|
+
codeChunk1: "0xf9Aa8888648b5f8C9806c772978F8803645ff44A";
|
|
45
|
+
codeChunk1Hash: "0x6976fbf3fcdb32312abfbc7bdd91706b1d70930d3978821cfd47b8943f656fc2";
|
|
46
|
+
sharedHookSalt: "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
47
|
+
}>;
|
|
48
|
+
}>;
|
|
49
|
+
export declare const hmmDynamicAdapter: Readonly<{
|
|
50
|
+
implementation: "0xb2a163646bB3661230f6e6A3c258e809514a748A";
|
|
51
|
+
codeHash: "0x087ffe3f38742a8cb94ea30b18c2c6150278685bf24e78b406ffb1ff77d4f4bc";
|
|
52
|
+
capabilities: 123n;
|
|
53
|
+
configVersion: 6;
|
|
54
|
+
enabled: true;
|
|
55
|
+
}>;
|
|
56
|
+
export declare const hmmDynamicRegistration: Readonly<{
|
|
57
|
+
adapterId: "0x7fbf1836bab81414a0820c856b45d769a85a60853e92e4a9554e2eedf047dbcf";
|
|
58
|
+
configSchema: "0x51c5ca14c40012f78425cd1afb1ea77980da3fed0490a00911a8a4ed34792045";
|
|
59
|
+
dependencyDigest: "0x9fc926ed5da5a2132d3eb08c93531cf70b992d600f2a54b319801375d22451f5";
|
|
60
|
+
venue: "0x8366a39CC670B4001A1121B8F6A443A643e40951";
|
|
61
|
+
factory: "0x0000000000000000000000000000000000000000";
|
|
62
|
+
hook: "0x0000000000000000000000000000000000000000";
|
|
63
|
+
capabilities: 123n;
|
|
64
|
+
enabled: true;
|
|
65
|
+
}>;
|
|
66
|
+
export declare const hmmDynamicCreationCode: Hex;
|
|
67
|
+
//# sourceMappingURL=hmm-dynamic-pool-hook-v1-20261011.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmm-dynamic-pool-hook-v1-20261011.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAKhC,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CF,CAAC;AAC9B,eAAO,MAAM,iBAAiB;;;;;;EAMI,CAAC;AACnC,eAAO,MAAM,sBAAsB;;;;;;;;;EASD,CAAC;AAEnC,eAAO,MAAM,sBAAsB,EAAE,GAA8/yD,CAAC"}
|