diff --git a/CHANGELOG.md b/CHANGELOG.md index f445d26b..930fe2ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ ## V4 (rain.vats 0.1.6) +### Dependencies + +- **OpenZeppelin bumped 5.6.1 → 5.7.0 (`@openzeppelin-contracts` + + `@openzeppelin-contracts-upgradeable`).** The only production bytecode this + moves is `StoxWrappedTokenVault`: 5.7.0's `ERC4626Upgradeable` swaps its + private `_tryGetAssetDecimals` for the shared `SafeERC20.tryGetDecimals` + helper, so the candidate pointers regenerate with a new Zoltu address and + codehash. Every other contract compiles byte-identical — in particular the + governance timelock: the frozen `TIMELOCK_CREATION_CODE` / + `TIMELOCK_RUNTIME_CODEHASH` pins are reproduced exactly by the 5.7.0 + dependency (`testTimelockPinsMatchCompiledDependency` passes unchanged), so + the three live deployments remain fully described. rain-vats 0.1.6 still + imports `@openzeppelin-contracts-5.6.1/` prefixes internally; the two + `remappings.txt` bridge lines point those at the 5.7.0 install so exactly one + OZ copy compiles (re-apply if soldeer regenerates the file) until rain-vats + republishes against 5.7.0. + ### StoxReceiptVault - **Fix (audit H01): keep OZ's `_totalSupply` in step with rebased balances.** @@ -93,11 +110,11 @@ reading as "copy everything". - **The canonical config table is allowed to run ahead of Base.** A row is authored when a ticker is chosen and Base is pinned when it is deployed, so - the config table leads in that window; only the rows Base carries are read, - so the excess is inert. The genuine error is a config table SHORTER than - Base — a deployed Base row with no name/symbol to deploy under — which - reverts `TokenTableTooShort(configsLength, baseLength)`. Row-for-row key - drift between the two tables still reverts `TokenTableMisaligned`. + the config table leads in that window; only the rows Base carries are read, so + the excess is inert. The genuine error is a config table SHORTER than Base — a + deployed Base row with no name/symbol to deploy under — which reverts + `TokenTableTooShort(configsLength, baseLength)`. Row-for-row key drift between + the two tables still reverts `TokenTableMisaligned`. - **Three checks the gap-fill scripts had dropped are back, matching `20260706-deploy-tokens-ethereum`.** Each deployed vault is now read back before the loop moves on — `AuthoriserNotWired` if it is not routed to the diff --git a/CLAUDE.md b/CLAUDE.md index 9aab5238..d6ac58f1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -181,7 +181,7 @@ generates them into `remappings.txt`, which is the live list. Key packages: - `rain-factory-0.1.1/` → clonable factory pattern (ICloneableV2) - `rain-deploy-0.1.4/` → Zoltu deterministic deployment - `rain-sol-codegen-0.1.0/` → pointer file generation -- `@openzeppelin-contracts-upgradeable-5.6.1/` → ERC4626, ERC20, beacon proxies +- `@openzeppelin-contracts-upgradeable-5.7.0/` → ERC4626, ERC20, beacon proxies - `rain-math-float-0.1.1/` → Rain Float decimal arithmetic (used by the corporate-actions rebase path for stock split multipliers) @@ -189,6 +189,16 @@ The one `remappings` entry in `foundry.toml` is unrelated to the above: it bridges the unversioned `@openzeppelin/contracts/` prefix that a third-party dependency's own source hard-codes. +`remappings.txt` additionally carries two **version-bridge** lines pointing the +old `@openzeppelin-contracts-5.6.1/` and +`@openzeppelin-contracts-upgradeable-5.6.1/` prefixes at the 5.7.0 install. +These exist because `rain-vats-0.1.6` still imports the 5.6.1 prefixes in its +own source; they can be dropped once rain-vats republishes against 5.7.0. +`forge soldeer install` rewrites `remappings.txt` ("Updated remappings") but was +observed to PRESERVE these hand-added lines rather than drop them, so a soldeer +run does not by itself break rain-vats' transitive imports. Re-check that if +soldeer's remapping-merge behaviour ever changes: losing them breaks the build. + ### Breaking dependency bumps Two dependency bumps are **breaking** for the corporate-actions stack and cannot @@ -260,7 +270,7 @@ Both are Soldeer packages pinned at an exact semver version in `foundry.toml`'s `[dependencies]`, so `forge update` — the git-submodule command — does nothing here. `forge soldeer update` is what moves them, and because the version is part of the import prefix, a bump also changes every -`@openzeppelin-contracts-upgradeable-5.6.1/` and `rain-math-float-0.1.1/` import +`@openzeppelin-contracts-upgradeable-5.7.0/` and `rain-math-float-0.1.1/` import across `src/`, `test/` and `script/`. Soldeer regenerates `remappings.txt`; it does not rewrite those imports, so they are updated by hand in the same commit. Bumping without the follow-up verification steps above is NOT safe on this diff --git a/foundry.toml b/foundry.toml index 5bc30843..f1c809a6 100644 --- a/foundry.toml +++ b/foundry.toml @@ -53,13 +53,13 @@ remappings = [ # prefixes; bridge to its actual install location so transitive # resolution works. Tracked upstream: # - OpenZeppelin/openzeppelin-contracts-upgradeable#232 - "@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.6.1/", + "@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.7.0/", ] [dependencies] forge-std = "1.16.1" -"@openzeppelin-contracts" = "5.6.1" -"@openzeppelin-contracts-upgradeable" = "5.6.1" +"@openzeppelin-contracts" = "5.7.0" +"@openzeppelin-contracts-upgradeable" = "5.7.0" "rain-deploy" = "0.1.4" "rain-extrospection" = "0.1.1" "rain-factory" = "0.1.1" diff --git a/remappings.txt b/remappings.txt index 707382f5..efdc3e00 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,5 +1,7 @@ -@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/ -@openzeppelin-contracts-upgradeable-5.6.1/=dependencies/@openzeppelin-contracts-upgradeable-5.6.1/ +@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.7.0/ +@openzeppelin-contracts-5.7.0/=dependencies/@openzeppelin-contracts-5.7.0/ +@openzeppelin-contracts-upgradeable-5.6.1/=dependencies/@openzeppelin-contracts-upgradeable-5.7.0/ +@openzeppelin-contracts-upgradeable-5.7.0/=dependencies/@openzeppelin-contracts-upgradeable-5.7.0/ forge-std-1.16.1/=dependencies/forge-std-1.16.1/ rain-deploy-0.1.4/=dependencies/rain-deploy-0.1.4/ rain-extrospection-0.1.1/=dependencies/rain-extrospection-0.1.1/ diff --git a/script/20260619-deploy-v4-authoriser-clone.s.sol b/script/20260619-deploy-v4-authoriser-clone.s.sol index 53f4cb88..78553887 100644 --- a/script/20260619-deploy-v4-authoriser-clone.s.sol +++ b/script/20260619-deploy-v4-authoriser-clone.s.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {Script} from "forge-std-1.16.1/src/Script.sol"; import {console2} from "forge-std-1.16.1/src/console2.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {ERC1167_PREFIX, ERC1167_SUFFIX} from "rain-extrospection-0.1.1/src/lib/LibExtrospectERC1167Proxy.sol"; import {ICloneableFactoryV2} from "rain-factory-0.1.1/src/interface/ICloneableFactoryV2.sol"; import {LibCloneFactoryDeploy} from "rain-factory-0.1.1/src/lib/LibCloneFactoryDeploy.sol"; diff --git a/script/20260623-upgrade-receipt-vaults-to-v4.s.sol b/script/20260623-upgrade-receipt-vaults-to-v4.s.sol index 865838aa..a37bfb24 100644 --- a/script/20260623-upgrade-receipt-vaults-to-v4.s.sol +++ b/script/20260623-upgrade-receipt-vaults-to-v4.s.sol @@ -5,8 +5,8 @@ pragma solidity =0.8.25; import {Script} from "forge-std-1.16.1/src/Script.sol"; import {console2} from "forge-std-1.16.1/src/console2.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; import {IAuthorizableV1} from "rain-vats-0.1.6/src/interface/IAuthorizableV1.sol"; import {IAuthorizeV1} from "rain-vats-0.1.6/src/interface/IAuthorizeV1.sol"; import {IGnosisSafe} from "../src/interface/IGnosisSafe.sol"; diff --git a/script/20260706-deploy-tokens-ethereum.s.sol b/script/20260706-deploy-tokens-ethereum.s.sol index 06bf47ee..980f0cbf 100644 --- a/script/20260706-deploy-tokens-ethereum.s.sol +++ b/script/20260706-deploy-tokens-ethereum.s.sol @@ -11,7 +11,7 @@ import { import {ReceiptVaultConfigV2} from "rain-vats-0.1.6/src/abstract/ReceiptVault.sol"; import {IReceiptVaultV3} from "rain-vats-0.1.6/src/interface/IReceiptVaultV3.sol"; import {IAuthorizeV1} from "rain-vats-0.1.6/src/interface/IAuthorizeV1.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; import {LibBeaconInvariants} from "../src/lib/LibBeaconInvariants.sol"; import {IStoxUnifiedDeployerV1} from "../src/interface/IStoxUnifiedDeployerV1.sol"; diff --git a/script/20260716-migrate-beacon-owners-ethereum.s.sol b/script/20260716-migrate-beacon-owners-ethereum.s.sol index 1b08b943..33006175 100644 --- a/script/20260716-migrate-beacon-owners-ethereum.s.sol +++ b/script/20260716-migrate-beacon-owners-ethereum.s.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {Script} from "forge-std-1.16.1/src/Script.sol"; import {console2} from "forge-std-1.16.1/src/console2.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; import {LibProdBeacons0_1_1} from "../src/lib/LibProdBeacons0_1_1.sol"; import {LibProdDeployV1} from "../src/lib/LibProdDeployV1.sol"; import {LibSafeInvariants} from "../src/lib/LibSafeInvariants.sol"; diff --git a/script/20260722-migrate-beacon-owners-hyperevm.s.sol b/script/20260722-migrate-beacon-owners-hyperevm.s.sol index 70ba9146..7c77d691 100644 --- a/script/20260722-migrate-beacon-owners-hyperevm.s.sol +++ b/script/20260722-migrate-beacon-owners-hyperevm.s.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {Script} from "forge-std-1.16.1/src/Script.sol"; import {console2} from "forge-std-1.16.1/src/console2.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; import {LibProdBeacons0_1_1} from "../src/lib/LibProdBeacons0_1_1.sol"; import {LibProdDeployV1} from "../src/lib/LibProdDeployV1.sol"; import {LibSafeInvariants} from "../src/lib/LibSafeInvariants.sol"; diff --git a/script/20260722-swap-remaining-vault-authorisers.s.sol b/script/20260722-swap-remaining-vault-authorisers.s.sol index 456087b3..4b724b73 100644 --- a/script/20260722-swap-remaining-vault-authorisers.s.sol +++ b/script/20260722-swap-remaining-vault-authorisers.s.sol @@ -5,7 +5,7 @@ pragma solidity =0.8.25; import {Script} from "forge-std-1.16.1/src/Script.sol"; import {console2} from "forge-std-1.16.1/src/console2.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {IAuthorizableV1} from "rain-vats-0.1.6/src/interface/IAuthorizableV1.sol"; import {IAuthorizeV1} from "rain-vats-0.1.6/src/interface/IAuthorizeV1.sol"; import {IGnosisSafe} from "../src/interface/IGnosisSafe.sol"; diff --git a/script/20260722-swap-rklb-authoriser.s.sol b/script/20260722-swap-rklb-authoriser.s.sol index 9393d26e..91742fe9 100644 --- a/script/20260722-swap-rklb-authoriser.s.sol +++ b/script/20260722-swap-rklb-authoriser.s.sol @@ -5,7 +5,7 @@ pragma solidity =0.8.25; import {Script} from "forge-std-1.16.1/src/Script.sol"; import {console2} from "forge-std-1.16.1/src/console2.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {IAuthorizableV1} from "rain-vats-0.1.6/src/interface/IAuthorizableV1.sol"; import {IAuthorizeV1} from "rain-vats-0.1.6/src/interface/IAuthorizeV1.sol"; import {IGnosisSafe} from "../src/interface/IGnosisSafe.sol"; diff --git a/script/20260723-provision-additional-service-signer.s.sol b/script/20260723-provision-additional-service-signer.s.sol index 872ba7b9..c58e5d41 100644 --- a/script/20260723-provision-additional-service-signer.s.sol +++ b/script/20260723-provision-additional-service-signer.s.sol @@ -5,7 +5,7 @@ pragma solidity =0.8.25; import {Script} from "forge-std-1.16.1/src/Script.sol"; import {console2} from "forge-std-1.16.1/src/console2.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {IGnosisSafe} from "../src/interface/IGnosisSafe.sol"; import {LibAuthoriserInvariants, RoleGrant} from "../src/lib/LibAuthoriserInvariants.sol"; import {LibProdDeployV4} from "../src/generated/LibProdDeployV4.sol"; diff --git a/script/20260729-deploy-governance-timelock.s.sol b/script/20260729-deploy-governance-timelock.s.sol index 6b51f951..0b1f178d 100644 --- a/script/20260729-deploy-governance-timelock.s.sol +++ b/script/20260729-deploy-governance-timelock.s.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {Script} from "forge-std-1.16.1/src/Script.sol"; import {console2} from "forge-std-1.16.1/src/console2.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {LibSafeInvariants} from "../src/lib/LibSafeInvariants.sol"; diff --git a/script/20260729-migrate-governance-to-timelock.s.sol b/script/20260729-migrate-governance-to-timelock.s.sol index cdadea79..3d355b21 100644 --- a/script/20260729-migrate-governance-to-timelock.s.sol +++ b/script/20260729-migrate-governance-to-timelock.s.sol @@ -4,11 +4,11 @@ pragma solidity =0.8.25; import {Script} from "forge-std-1.16.1/src/Script.sol"; import {console2} from "forge-std-1.16.1/src/console2.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; -import {TimelockController} from "@openzeppelin-contracts-5.6.1/governance/TimelockController.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; +import {TimelockController} from "@openzeppelin-contracts-5.7.0/governance/TimelockController.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; import {IGnosisSafe} from "../src/interface/IGnosisSafe.sol"; import {LibAuthoriserInvariants, RoleGrant} from "../src/lib/LibAuthoriserInvariants.sol"; diff --git a/script/20260807-deploy-missing-tokens.s.sol b/script/20260807-deploy-missing-tokens.s.sol index 1df6ea73..421ea346 100644 --- a/script/20260807-deploy-missing-tokens.s.sol +++ b/script/20260807-deploy-missing-tokens.s.sol @@ -11,7 +11,7 @@ import { import {ReceiptVaultConfigV2} from "rain-vats-0.1.6/src/abstract/ReceiptVault.sol"; import {IReceiptVaultV3} from "rain-vats-0.1.6/src/interface/IReceiptVaultV3.sol"; import {IAuthorizeV1} from "rain-vats-0.1.6/src/interface/IAuthorizeV1.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; import {LibBeaconInvariants} from "../src/lib/LibBeaconInvariants.sol"; import {IStoxUnifiedDeployerV1} from "../src/interface/IStoxUnifiedDeployerV1.sol"; import {LibSafeInvariants} from "../src/lib/LibSafeInvariants.sol"; diff --git a/script/20260810-revoke-fireblocks-service-signer.s.sol b/script/20260810-revoke-fireblocks-service-signer.s.sol index 910c991c..e2747123 100644 --- a/script/20260810-revoke-fireblocks-service-signer.s.sol +++ b/script/20260810-revoke-fireblocks-service-signer.s.sol @@ -5,7 +5,7 @@ pragma solidity =0.8.25; import {Script} from "forge-std-1.16.1/src/Script.sol"; import {console2} from "forge-std-1.16.1/src/console2.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {IGnosisSafe} from "../src/interface/IGnosisSafe.sol"; import {LibAuthoriserInvariants, RoleGrant} from "../src/lib/LibAuthoriserInvariants.sol"; import {LibProdDeployV4} from "../src/generated/LibProdDeployV4.sol"; diff --git a/script/MigrateBeaconOwners.s.sol b/script/MigrateBeaconOwners.s.sol index 3478ad05..47b75676 100644 --- a/script/MigrateBeaconOwners.s.sol +++ b/script/MigrateBeaconOwners.s.sol @@ -5,7 +5,7 @@ pragma solidity =0.8.25; import {Script} from "forge-std-1.16.1/src/Script.sol"; import {console2} from "forge-std-1.16.1/src/console2.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; import {IGnosisSafe} from "../src/interface/IGnosisSafe.sol"; import {LibProdDeployV1} from "../src/lib/LibProdDeployV1.sol"; import {LibSafeInvariants} from "../src/lib/LibSafeInvariants.sol"; diff --git a/soldeer.lock b/soldeer.lock index f5a17f15..67e80ecc 100644 --- a/soldeer.lock +++ b/soldeer.lock @@ -1,16 +1,16 @@ [[dependencies]] name = "@openzeppelin-contracts" -version = "5.6.1" -url = "https://soldeer-revisions.s3.amazonaws.com/@openzeppelin-contracts/5_6_1_15-03-2026_09:19:50_contracts.zip" -checksum = "a3b6bc661be858c7c27f60a1708cbebe8c71034b4cc1e9fe270d0a05b069352f" -integrity = "bce03af7ada1eee21a7fff393f238bcd7cd75a022a4db55ffb6b0dbb32433d35" +version = "5.7.0" +url = "https://soldeer-revisions.s3.amazonaws.com/@openzeppelin-contracts/5_7_0_29-07-2026_19:34:46_contracts.zip" +checksum = "fe08a24bc34334b2976c6ad69a0d74bdfa63de8a5c8528579060f25a11fb5cd5" +integrity = "3e13bc4d96bdef6e35f6b1e0dc0e455843a958edc597750dff20ca50295b767d" [[dependencies]] name = "@openzeppelin-contracts-upgradeable" -version = "5.6.1" -url = "https://soldeer-revisions.s3.amazonaws.com/@openzeppelin-contracts-upgradeable/5_6_1_15-03-2026_09:19:56_contracts-upgradeable.zip" -checksum = "f6257dbc993c2499fe08fdc93f66e12459fe3458ee62ce716b92e1d95ee0b504" -integrity = "2f539b6241258fc3c127c97225b3cb1b5e9225e422d2c1cb233c52a6f5c29002" +version = "5.7.0" +url = "https://soldeer-revisions.s3.amazonaws.com/@openzeppelin-contracts-upgradeable/5_7_0_29-07-2026_19:34:58_contracts-upgradeable.zip" +checksum = "fba3ad8586bf64281bab2aecd2cf0eb31227ccc5976f962d400e8cc5898da413" +integrity = "1a08068b2fe262d4f6ae80e0be44965480b1a532d40722c80634d8963337743d" [[dependencies]] name = "forge-std" diff --git a/src/concrete/ST0xOrchestrator.sol b/src/concrete/ST0xOrchestrator.sol index 4c60c473..e70b5f1b 100644 --- a/src/concrete/ST0xOrchestrator.sol +++ b/src/concrete/ST0xOrchestrator.sol @@ -2,16 +2,16 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity =0.8.25; -import {AccessControlUpgradeable} from "@openzeppelin-contracts-upgradeable-5.6.1/access/AccessControlUpgradeable.sol"; -import {EIP712Upgradeable} from "@openzeppelin-contracts-upgradeable-5.6.1/utils/cryptography/EIP712Upgradeable.sol"; -import {Initializable} from "@openzeppelin-contracts-upgradeable-5.6.1/proxy/utils/Initializable.sol"; -import {ReentrancyGuardTransient} from "@openzeppelin-contracts-5.6.1/utils/ReentrancyGuardTransient.sol"; -import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; -import {SafeERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/utils/SafeERC20.sol"; -import {IERC1155} from "@openzeppelin-contracts-5.6.1/token/ERC1155/IERC1155.sol"; -import {IERC1155Receiver} from "@openzeppelin-contracts-5.6.1/token/ERC1155/IERC1155Receiver.sol"; -import {IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol"; -import {SignatureChecker} from "@openzeppelin-contracts-5.6.1/utils/cryptography/SignatureChecker.sol"; +import {AccessControlUpgradeable} from "@openzeppelin-contracts-upgradeable-5.7.0/access/AccessControlUpgradeable.sol"; +import {EIP712Upgradeable} from "@openzeppelin-contracts-upgradeable-5.7.0/utils/cryptography/EIP712Upgradeable.sol"; +import {Initializable} from "@openzeppelin-contracts-upgradeable-5.7.0/proxy/utils/Initializable.sol"; +import {ReentrancyGuardTransient} from "@openzeppelin-contracts-5.7.0/utils/ReentrancyGuardTransient.sol"; +import {IERC20} from "@openzeppelin-contracts-5.7.0/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin-contracts-5.7.0/token/ERC20/utils/SafeERC20.sol"; +import {IERC1155} from "@openzeppelin-contracts-5.7.0/token/ERC1155/IERC1155.sol"; +import {IERC1155Receiver} from "@openzeppelin-contracts-5.7.0/token/ERC1155/IERC1155Receiver.sol"; +import {IERC165} from "@openzeppelin-contracts-5.7.0/utils/introspection/IERC165.sol"; +import {SignatureChecker} from "@openzeppelin-contracts-5.7.0/utils/cryptography/SignatureChecker.sol"; import {OffchainAssetReceiptVault} from "rain-vats-0.1.6/src/concrete/vault/OffchainAssetReceiptVault.sol"; import {IReceiptV3} from "rain-vats-0.1.6/src/interface/IReceiptV3.sol"; diff --git a/src/concrete/StoxReceipt.sol b/src/concrete/StoxReceipt.sol index 447d48dd..708ecfb0 100644 --- a/src/concrete/StoxReceipt.sol +++ b/src/concrete/StoxReceipt.sol @@ -3,8 +3,8 @@ pragma solidity =0.8.25; import {Receipt} from "rain-vats-0.1.6/src/concrete/receipt/Receipt.sol"; -import {ERC1155Upgradeable} from "@openzeppelin-contracts-upgradeable-5.6.1/token/ERC1155/ERC1155Upgradeable.sol"; -import {IERC1155} from "@openzeppelin-contracts-5.6.1/token/ERC1155/IERC1155.sol"; +import {ERC1155Upgradeable} from "@openzeppelin-contracts-upgradeable-5.7.0/token/ERC1155/ERC1155Upgradeable.sol"; +import {IERC1155} from "@openzeppelin-contracts-5.7.0/token/ERC1155/IERC1155.sol"; import {ICorporateActionsV1} from "../interface/ICorporateActionsV1.sol"; import {LibCorporateActionReceipt} from "../lib/LibCorporateActionReceipt.sol"; import {LibERC1155Storage} from "../lib/LibERC1155Storage.sol"; diff --git a/src/concrete/StoxReceiptVault.sol b/src/concrete/StoxReceiptVault.sol index 84e8c10e..ae3debc1 100644 --- a/src/concrete/StoxReceiptVault.sol +++ b/src/concrete/StoxReceiptVault.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {OffchainAssetReceiptVault} from "rain-vats-0.1.6/src/concrete/vault/OffchainAssetReceiptVault.sol"; import {IAuthorizeV1} from "rain-vats-0.1.6/src/interface/IAuthorizeV1.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {LibCorporateAction, SCHEDULE_CORPORATE_ACTION, CANCEL_CORPORATE_ACTION} from "../lib/LibCorporateAction.sol"; import {LibRebase} from "../lib/LibRebase.sol"; import {LibTotalSupply} from "../lib/LibTotalSupply.sol"; diff --git a/src/concrete/StoxWrappedTokenVault.sol b/src/concrete/StoxWrappedTokenVault.sol index d0697f23..a20d89ad 100644 --- a/src/concrete/StoxWrappedTokenVault.sol +++ b/src/concrete/StoxWrappedTokenVault.sol @@ -4,10 +4,10 @@ pragma solidity =0.8.25; import { ERC4626Upgradeable -} from "@openzeppelin-contracts-upgradeable-5.6.1/token/ERC20/extensions/ERC4626Upgradeable.sol"; -import {ERC20Upgradeable} from "@openzeppelin-contracts-upgradeable-5.6.1/token/ERC20/ERC20Upgradeable.sol"; +} from "@openzeppelin-contracts-upgradeable-5.7.0/token/ERC20/extensions/ERC4626Upgradeable.sol"; +import {ERC20Upgradeable} from "@openzeppelin-contracts-upgradeable-5.7.0/token/ERC20/ERC20Upgradeable.sol"; import {ICLONEABLE_V2_SUCCESS, ICloneableV2} from "rain-factory-0.1.1/src/interface/ICloneableV2.sol"; -import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.7.0/token/ERC20/extensions/IERC20Metadata.sol"; /// @dev Error raised when a zero address is provided for the vault asset. error ZeroAsset(); diff --git a/src/concrete/StoxWrappedTokenVaultBeacon.sol b/src/concrete/StoxWrappedTokenVaultBeacon.sol index ce196a42..b31de5ce 100644 --- a/src/concrete/StoxWrappedTokenVaultBeacon.sol +++ b/src/concrete/StoxWrappedTokenVaultBeacon.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {UpgradeableBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/UpgradeableBeacon.sol"; +import {UpgradeableBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/UpgradeableBeacon.sol"; import {LibProdDeployCurrent} from "../generated/LibProdDeployCurrent.sol"; /// @title StoxWrappedTokenVaultBeacon diff --git a/src/concrete/deploy/ST0xOrchestratorBeaconSetDeployer.sol b/src/concrete/deploy/ST0xOrchestratorBeaconSetDeployer.sol index 8f199dde..e8fb59e2 100644 --- a/src/concrete/deploy/ST0xOrchestratorBeaconSetDeployer.sol +++ b/src/concrete/deploy/ST0xOrchestratorBeaconSetDeployer.sol @@ -2,10 +2,10 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity =0.8.25; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; -import {UpgradeableBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/UpgradeableBeacon.sol"; -import {BeaconProxy} from "@openzeppelin-contracts-5.6.1/proxy/beacon/BeaconProxy.sol"; -import {ERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/ERC165.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; +import {UpgradeableBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/UpgradeableBeacon.sol"; +import {BeaconProxy} from "@openzeppelin-contracts-5.7.0/proxy/beacon/BeaconProxy.sol"; +import {ERC165} from "@openzeppelin-contracts-5.7.0/utils/introspection/ERC165.sol"; import {ST0xOrchestrator} from "../ST0xOrchestrator.sol"; import {LibProdDeployCurrent} from "../../generated/LibProdDeployCurrent.sol"; diff --git a/src/concrete/deploy/StoxUnifiedDeployer.sol b/src/concrete/deploy/StoxUnifiedDeployer.sol index 33f8dc73..97ba0f1d 100644 --- a/src/concrete/deploy/StoxUnifiedDeployer.sol +++ b/src/concrete/deploy/StoxUnifiedDeployer.sol @@ -7,7 +7,7 @@ import { OffchainAssetReceiptVaultConfigV2, OffchainAssetReceiptVault } from "rain-vats-0.1.6/src/concrete/deploy/OffchainAssetReceiptVaultBeaconSetDeployer.sol"; -import {ERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/ERC165.sol"; +import {ERC165} from "@openzeppelin-contracts-5.7.0/utils/introspection/ERC165.sol"; import {StoxWrappedTokenVaultBeaconSetDeployer} from "./StoxWrappedTokenVaultBeaconSetDeployer.sol"; import {LibProdDeployCurrent} from "../../generated/LibProdDeployCurrent.sol"; import {StoxWrappedTokenVault} from "../StoxWrappedTokenVault.sol"; diff --git a/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.sol b/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.sol index 5135d0ea..a052c349 100644 --- a/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.sol +++ b/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {BeaconProxy} from "@openzeppelin-contracts-5.6.1/proxy/beacon/BeaconProxy.sol"; -import {ERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/ERC165.sol"; +import {BeaconProxy} from "@openzeppelin-contracts-5.7.0/proxy/beacon/BeaconProxy.sol"; +import {ERC165} from "@openzeppelin-contracts-5.7.0/utils/introspection/ERC165.sol"; import {StoxWrappedTokenVault} from "../StoxWrappedTokenVault.sol"; import {ICLONEABLE_V2_SUCCESS} from "rain-factory-0.1.1/src/interface/ICloneableV2.sol"; import {LibProdDeployCurrent} from "../../generated/LibProdDeployCurrent.sol"; diff --git a/src/generated/candidate/ST0xOrchestrator.pointers.sol b/src/generated/candidate/ST0xOrchestrator.pointers.sol index d08da09e..370d39ed 100644 --- a/src/generated/candidate/ST0xOrchestrator.pointers.sol +++ b/src/generated/candidate/ST0xOrchestrator.pointers.sol @@ -10,16 +10,16 @@ pragma solidity ^0.8.25; // file needs the contract to exist so that it can be compiled. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0xbc2cc8eba1d10bc3b91a61fca8cdca9c18487e5fd99262f07d9703959ae4747c); +bytes32 constant BYTECODE_HASH = bytes32(0x546afaabd15626b6611e8f619eff871efe415f380d3c2c5137ead4af4938f990); /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0x1c3a4D12F88Bd39303Bb8510C6c1fa8Ad37A4b72); +address constant DEPLOYED_ADDRESS = address(0x78F7Dce07D2aC15Bb1d31c05b66404cb65a30C2E); /// @dev The creation bytecode of the contract. bytes constant CREATION_CODE = - hex"6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61306f806100d65f395ff3fe608060405260043610610191575f3560e01c8063742fabb3116100dc578063b930908f11610087578063d547741f11610062578063d547741f1461057c578063e9a9c8501461059b578063f14893a7146105ce578063f23a6e61146105ed575f80fd5b8063b930908f146104f2578063bc197c8114610525578063c4d66de81461055d575f80fd5b806391d14854116100b757806391d148541461045d5780639cb887f8146104c0578063a217fddf146104df575f80fd5b8063742fabb3146103cf578063752c9cf51461042257806384b0196e14610436575f80fd5b80633b94a0dd1161013c57806344d171871161011757806344d1718714610372578063584f418e14610391578063671d083f146103b0575f80fd5b80633b94a0dd146103015780633e81e40d146103345780633f6fc76f14610353575f80fd5b8063248a9ca31161016c578063248a9ca3146102745780632f2ff15d146102c157806336568abe146102e2575f80fd5b806301ffc9a71461019c5780630e230f97146101d057806320df435914610233575f80fd5b3661019857005b5f80fd5b3480156101a7575f80fd5b506101bb6101b6366004612870565b61060c565b60405190151581526020015b60405180910390f35b3480156101db575f80fd5b506101bb6101ea36600461289f565b6001600160a01b03919091165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320938352929052205460ff1690565b34801561023e575f80fd5b506102667f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de81565b6040519081526020016101c7565b34801561027f575f80fd5b5061026661028e3660046128c9565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156102cc575f80fd5b506102e06102db3660046128e0565b610683565b005b3480156102ed575f80fd5b506102e06102fc3660046128e0565b6106cc565b34801561030c575f80fd5b506102667f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413381565b34801561033f575f80fd5b5061026661034e36600461290e565b61071d565b34801561035e575f80fd5b506102e061036d366004612951565b610733565b34801561037d575f80fd5b506102e061038c3660046129d5565b6107ce565b34801561039c575f80fd5b506102e06103ab366004612a2d565b610931565b3480156103bb575f80fd5b506102e06103ca366004612a74565b610aab565b3480156103da575f80fd5b506102666103e9366004612b0e565b6001600160a01b03165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090205490565b34801561042d575f80fd5b506101bb610c74565b348015610441575f80fd5b5061044a610e69565b6040516101c79796959493929190612b57565b348015610468575f80fd5b506101bb6104773660046128e0565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb575f80fd5b506102e06104da36600461289f565b610ec7565b3480156104ea575f80fd5b506102665f81565b3480156104fd575f80fd5b506102667f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a381565b348015610530575f80fd5b5061054461053f366004612c4b565b610f7d565b6040516001600160e01b031990911681526020016101c7565b348015610568575f80fd5b506102e0610577366004612b0e565b61100c565b348015610587575f80fd5b506102e06105963660046128e0565b61120f565b3480156105a6575f80fd5b506102667ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba81565b3480156105d9575f80fd5b506102e06105e8366004612a2d565b611252565b3480156105f8575f80fd5b50610544610607366004612d02565b61135a565b5f6001600160e01b031982167f4e2312e000000000000000000000000000000000000000000000000000000000148061066e57506001600160e01b031982167f18bd37da00000000000000000000000000000000000000000000000000000000145b8061067d575061067d82611397565b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546106bc816113fd565b6106c6838361140a565b50505050565b6001600160a01b038116331461070e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071882826114d6565b505050565b5f61072a8585858561157a565b95945050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61075d816113fd565b6107656115f0565b6107796001600160a01b0385168385611627565b816001600160a01b0316846001600160a01b03167f4810d2f105dcba10d740b4ac1d8fa8454dd37014b2051bace1edb1d903c440c4856040516107be91815260200190565b60405180910390a36106c6611675565b7f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a36107f8816113fd565b61080061169f565b6108086115f0565b835f03610841576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108566001600160a01b038616333087611931565b6001600160a01b0385165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70060209081526040808320548151601f870184900484028101840190925285825292916108cf91899189919089908990819084018382808284375f9201919091525061198092505050565b60408051888152602081018590529081018290529091506001600160a01b0388169033907f112766730ce440487945c01048dacfc6d04340403f675871e96c4e28cf622ecc9060600160405180910390a3505061092a611675565b5050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61095b816113fd565b6109636115f0565b846001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c39190612d67565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038481166024830152604482018790526064820186905260a060848301525f60a4830152919091169063f242432a9060c4015f604051808303815f87803b158015610a3f575f80fd5b505af1158015610a51573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167fc9e640d2eb1b8469e42f60a66fef6a05cfd27ee3757e48f3f8ba04ecbc8a51b086604051610a9b91815260200190565b60405180910390a461092a611675565b7ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba610ad5816113fd565b610add61169f565b610ae56115f0565b845f03610b1e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b2a87878787611cb3565b6040517fc77b66c20000000000000000000000000000000000000000000000000000000081525f906001600160a01b0389169063c77b66c290610b79908990309086908a908a90600401612d82565b6020604051808303815f875af1158015610b95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb99190612dce565b9050858114610c03576040517fbe40f1fc00000000000000000000000000000000000000000000000000000000815260048101879052602481018290526044015b60405180910390fd5b610c176001600160a01b0389168888611627565b60408051878152863560208201526001600160a01b03808a1692908b169133917f7c0eac1a8d30fbe7a577affc3b588a0b7d965a6133d12097cfac0760f2f2b617910160405180910390a450610c6b611675565b50505050505050565b5f807359afe8ae48de65d9916b99c8cf9977061955c9a790507352174538a83b18462c5cf898016539b086c920c76001600160a01b0316816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0b9190612d67565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a9190612d67565b6001600160a01b0316148015610e63575073b092f127bd44f19bfa96e78db4beaf1066d2914e6001600160a01b0316816001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df99190612d67565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e589190612d67565b6001600160a01b0316145b91505090565b5f6060805f805f6060610e7a611df1565b610e82611ec4565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de610ef1816113fd565b610ef96115f0565b5f7f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7006001600160a01b0385165f818152602083815260409182902080549088905582518181529182018890529394507fc6ce8282d3b57b159503fa5566e612aeb9f30c8e20c882398c9cb293c1ba6d68910160405180910390a25050610718611675565b5f805b86811015610fdd578481108015610fae57505f868683818110610fa557610fa5612df9565b90506020020135115b15610fd557610fd533898984818110610fc957610fc9612df9565b90506020020135611f15565b600101610f80565b507fbc197c81000000000000000000000000000000000000000000000000000000009998505050505050505050565b5f61101561217e565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156110415750825b90505f8267ffffffffffffffff16600114801561105d5750303b155b90508115801561106b575080155b156110a2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156110ed57845468ff00000000000000001916680100000000000000001785555b6001600160a01b03861661112d576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113561169f565b61113d6121a6565b6111b16040518060400160405280601081526020017f535430784f7263686573747261746f72000000000000000000000000000000008152506040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506121ae565b6111bb5f8761140a565b50831561120757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611248816113fd565b6106c683836114d6565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61127c816113fd565b6112846115f0565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152604482018690526064820185905260a060848301525f60a483015286169063f242432a9060c4015f604051808303815f87803b1580156112fe575f80fd5b505af1158015611310573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167f78b19b4b6e69e380c3c303d1e889d510ee3ee409219c1c014d97a0a607b6c6a686604051610a9b91815260200190565b5f831561136b5761136b3386611f15565b507ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f6001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061067d57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b031983161461067d565b61140781336121c4565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166114cd575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556114833390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061067d565b5f91505061067d565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156114cd575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061067d565b604080517f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413360208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061072a9060c00160405160208183030381529060405280519060200120612250565b6115f8612297565b61162560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b906122f0565b565b61163483838360016122f7565b610718576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610bfa565b6116255f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0061161f565b5f7359afe8ae48de65d9916b99c8cf9977061955c9a790505f816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117189190612d67565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611753573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117779190612d67565b90506001600160a01b0381167352174538a83b18462c5cf898016539b086c920c7146117f4576040517fdfdb61b70000000000000000000000000000000000000000000000000000000081527352174538a83b18462c5cf898016539b086c920c760048201526001600160a01b0382166024820152604401610bfa565b5f826001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa158015611831573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118559190612d67565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611890573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118b49190612d67565b90506001600160a01b03811673b092f127bd44f19bfa96e78db4beaf1066d2914e14610718576040517f3e4077b300000000000000000000000000000000000000000000000000000000815273b092f127bd44f19bfa96e78db4beaf1066d2914e60048201526001600160a01b0382166024820152604401610bfa565b61193f848484846001612372565b6106c6576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610bfa565b5f808490505f816001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e69190612d67565b90507f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7005f015f876001600160a01b03166001600160a01b031681526020019081526020015f205492505f826001600160a01b031663f5d214f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a909190612dce565b90505b8515611c6e5780841115611ae5576040517f66a21a2d0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101879052604401610bfa565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611b47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6b9190612dce565b9050805f03611b805750600190930192611a93565b5f818810611b8e5781611b90565b875b90505f856001600160a01b031663921a4c428330308b8d6040518663ffffffff1660e01b8152600401611bc7959493929190612e0d565b6020604051808303815f875af1158015611be3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c079190612dce565b9050818114611c4c576040517fbe40f1fc0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610bfa565b611c56828a612e4f565b9850828203611c66576001909601955b505050611a93565b5050506001600160a01b03939093165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090208390555090919050565b6001600160a01b0383165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320843584529091529020547f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7009060ff1615611d64576040517f59c210430000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015282356024820152604401610bfa565b6001600160a01b0384165f90815260018281016020908152604080842086358086529252909220805460ff1916909117905561092a908590611dab9088908390889061157a565b611db86020860186612e6e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123f892505050565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611e4290612ecf565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6e90612ecf565b8015611eb95780601f10611e9057610100808354040283529160200191611eb9565b820191905f5260205f20905b815481529060010190602001808311611e9c57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611e4290612ecf565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f481c6a750000000000000000000000000000000000000000000000000000000017905290515f9182916001600160a01b03861691611f8591612f07565b5f60405180830381855afa9150503d805f8114611fbd576040519150601f19603f3d011682016040523d82523d5f602084013e611fc2565b606091505b5091509150811580611fd657508051602014155b15611fe15750505050565b5f611feb82612f1d565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1e6b8980000000000000000000000000000000000000000000000000000000017905290519192506001600160a01b0383169161205b9190612f07565b5f60405180830381855afa9150503d805f8114612093576040519150601f19603f3d011682016040523d82523d5f602084013e612098565b606091505b5090935091508215806120ad57508151602014155b156120b9575050505050565b6001600160a01b0385166120cc83612f1d565b6001600160a01b0316146120e1575050505050565b6001600160a01b0381165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602081905260409091205480861015610c6b576001600160a01b0383165f818152602084815260409182902089905581518481529081018990527f2008c207f65bedc2bb65dc8ac34aee36a37cd43a50152d574107c63ace7e07c6910160405180910390a250505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061067d565b61162561250f565b6121b661250f565b6121c0828261254d565b5050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166121c0576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610bfa565b5f61067d61225c6125b0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15611625576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80825d5050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661236657838315161561235a573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166123e75783831516156123db573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b8051156124405761240a8383836125be565b610718576040517f19ab93cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f642ddf3a0000000000000000000000000000000000000000000000000000000080825260048201849052906001600160a01b0385169063642ddf3a906024016020604051808303815f875af115801561249f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124c39190612f40565b6001600160e01b03191614610718576040517f22b89c080000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610bfa565b612517612631565b611625576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61255561250f565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026125a18482612f9f565b50600381016106c68382612f9f565b5f6125b961264f565b905090565b5f836001600160a01b03163b5f0361261c575f806125dc85856126c2565b5090925090505f8160038111156125f5576125f561305b565b1480156126135750856001600160a01b0316826001600160a01b0316145b9250505061262a565b61262784848461270b565b90505b9392505050565b5f61263a61217e565b5468010000000000000000900460ff16919050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612679612775565b61268161278a565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f805f83516041036126f9576020840151604085015160608601515f1a6126eb88828585612793565b955095509550505050612704565b505081515f91506002905b9250925092565b8051604080517f1626ba7e000000000000000000000000000000000000000000000000000000008082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f61277e611df1565b80519060200120905090565b5f61277e611ec4565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156127cc57505f91506003905082612851565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561281d573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661284857505f925060019150829050612851565b92505f91508190505b9450945094915050565b6001600160e01b031981168114611407575f80fd5b5f60208284031215612880575f80fd5b813561262a8161285b565b6001600160a01b0381168114611407575f80fd5b5f80604083850312156128b0575f80fd5b82356128bb8161288b565b946020939093013593505050565b5f602082840312156128d9575f80fd5b5035919050565b5f80604083850312156128f1575f80fd5b8235915060208301356129038161288b565b809150509250929050565b5f805f8060808587031215612921575f80fd5b843561292c8161288b565b9350602085013561293c8161288b565b93969395505050506040820135916060013590565b5f805f60608486031215612963575f80fd5b833561296e8161288b565b92506020840135915060408401356129858161288b565b809150509250925092565b5f8083601f8401126129a0575f80fd5b50813567ffffffffffffffff8111156129b7575f80fd5b6020830191508360208285010111156129ce575f80fd5b9250929050565b5f805f80606085870312156129e8575f80fd5b84356129f38161288b565b935060208501359250604085013567ffffffffffffffff811115612a15575f80fd5b612a2187828801612990565b95989497509550505050565b5f805f8060808587031215612a40575f80fd5b8435612a4b8161288b565b935060208501359250604085013591506060850135612a698161288b565b939692955090935050565b5f805f805f8060a08789031215612a89575f80fd5b8635612a948161288b565b95506020870135612aa48161288b565b945060408701359350606087013567ffffffffffffffff80821115612ac7575f80fd5b908801906040828b031215612ada575f80fd5b90935060808801359080821115612aef575f80fd5b50612afc89828a01612990565b979a9699509497509295939492505050565b5f60208284031215612b1e575f80fd5b813561262a8161288b565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e06020840152612b9360e084018a612b29565b8381036040850152612ba5818a612b29565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015612bf857835183529284019291840191600101612bdc565b50909c9b505050505050505050505050565b5f8083601f840112612c1a575f80fd5b50813567ffffffffffffffff811115612c31575f80fd5b6020830191508360208260051b85010111156129ce575f80fd5b5f805f805f805f8060a0898b031215612c62575f80fd5b8835612c6d8161288b565b97506020890135612c7d8161288b565b9650604089013567ffffffffffffffff80821115612c99575f80fd5b612ca58c838d01612c0a565b909850965060608b0135915080821115612cbd575f80fd5b612cc98c838d01612c0a565b909650945060808b0135915080821115612ce1575f80fd5b50612cee8b828c01612990565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d17575f80fd5b8635612d228161288b565b95506020870135612d328161288b565b94506040870135935060608701359250608087013567ffffffffffffffff811115612d5b575f80fd5b612afc89828a01612990565b5f60208284031215612d77575f80fd5b815161262a8161288b565b8581526001600160a01b038516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b5f60208284031215612dde575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b8581525f6001600160a01b03808716602084015280861660408401525083606083015260a06080830152612e4460a0830184612b29565b979650505050505050565b8181038181111561067d57634e487b7160e01b5f52601160045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612ea1575f80fd5b83018035915067ffffffffffffffff821115612ebb575f80fd5b6020019150368190038213156129ce575f80fd5b600181811c90821680612ee357607f821691505b602082108103612f0157634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82518060208501845e5f920191825250919050565b80516020808301519190811015612f01575f1960209190910360031b1b16919050565b5f60208284031215612f50575f80fd5b815161262a8161285b565b601f82111561071857805f5260205f20601f840160051c81016020851015612f805750805b601f840160051c820191505b8181101561092a575f8155600101612f8c565b815167ffffffffffffffff811115612fb957612fb9612de5565b612fcd81612fc78454612ecf565b84612f5b565b602080601f831160018114613000575f8415612fe95750858301515b5f19600386901b1c1916600185901b178555611207565b5f85815260208120601f198616915b8281101561302e5788860151825594840194600190910190840161300f565b508582101561304b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52602160045260245ffd"; + hex"6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613083806100d65f395ff3fe608060405260043610610191575f3560e01c8063742fabb3116100dc578063b930908f11610087578063d547741f11610062578063d547741f1461057c578063e9a9c8501461059b578063f14893a7146105ce578063f23a6e61146105ed575f80fd5b8063b930908f146104f2578063bc197c8114610525578063c4d66de81461055d575f80fd5b806391d14854116100b757806391d148541461045d5780639cb887f8146104c0578063a217fddf146104df575f80fd5b8063742fabb3146103cf578063752c9cf51461042257806384b0196e14610436575f80fd5b80633b94a0dd1161013c57806344d171871161011757806344d1718714610372578063584f418e14610391578063671d083f146103b0575f80fd5b80633b94a0dd146103015780633e81e40d146103345780633f6fc76f14610353575f80fd5b8063248a9ca31161016c578063248a9ca3146102745780632f2ff15d146102c157806336568abe146102e2575f80fd5b806301ffc9a71461019c5780630e230f97146101d057806320df435914610233575f80fd5b3661019857005b5f80fd5b3480156101a7575f80fd5b506101bb6101b6366004612884565b61060c565b60405190151581526020015b60405180910390f35b3480156101db575f80fd5b506101bb6101ea3660046128b3565b6001600160a01b03919091165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320938352929052205460ff1690565b34801561023e575f80fd5b506102667f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de81565b6040519081526020016101c7565b34801561027f575f80fd5b5061026661028e3660046128dd565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156102cc575f80fd5b506102e06102db3660046128f4565b610683565b005b3480156102ed575f80fd5b506102e06102fc3660046128f4565b6106cc565b34801561030c575f80fd5b506102667f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413381565b34801561033f575f80fd5b5061026661034e366004612922565b61071d565b34801561035e575f80fd5b506102e061036d366004612965565b610733565b34801561037d575f80fd5b506102e061038c3660046129e9565b6107ce565b34801561039c575f80fd5b506102e06103ab366004612a41565b610931565b3480156103bb575f80fd5b506102e06103ca366004612a88565b610aab565b3480156103da575f80fd5b506102666103e9366004612b22565b6001600160a01b03165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090205490565b34801561042d575f80fd5b506101bb610c74565b348015610441575f80fd5b5061044a610e69565b6040516101c79796959493929190612b6b565b348015610468575f80fd5b506101bb6104773660046128f4565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb575f80fd5b506102e06104da3660046128b3565b610ec7565b3480156104ea575f80fd5b506102665f81565b3480156104fd575f80fd5b506102667f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a381565b348015610530575f80fd5b5061054461053f366004612c5f565b610f7d565b6040516001600160e01b031990911681526020016101c7565b348015610568575f80fd5b506102e0610577366004612b22565b61100c565b348015610587575f80fd5b506102e06105963660046128f4565b61120f565b3480156105a6575f80fd5b506102667ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba81565b3480156105d9575f80fd5b506102e06105e8366004612a41565b611252565b3480156105f8575f80fd5b50610544610607366004612d16565b61135a565b5f6001600160e01b031982167f4e2312e000000000000000000000000000000000000000000000000000000000148061066e57506001600160e01b031982167f18bd37da00000000000000000000000000000000000000000000000000000000145b8061067d575061067d82611397565b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546106bc816113fd565b6106c6838361140a565b50505050565b6001600160a01b038116331461070e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071882826114d6565b505050565b5f61072a8585858561157a565b95945050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61075d816113fd565b6107656115f0565b6107796001600160a01b0385168385611627565b816001600160a01b0316846001600160a01b03167f4810d2f105dcba10d740b4ac1d8fa8454dd37014b2051bace1edb1d903c440c4856040516107be91815260200190565b60405180910390a36106c6611675565b7f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a36107f8816113fd565b61080061169f565b6108086115f0565b835f03610841576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108566001600160a01b038616333087611931565b6001600160a01b0385165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70060209081526040808320548151601f870184900484028101840190925285825292916108cf91899189919089908990819084018382808284375f9201919091525061198092505050565b60408051888152602081018590529081018290529091506001600160a01b0388169033907f112766730ce440487945c01048dacfc6d04340403f675871e96c4e28cf622ecc9060600160405180910390a3505061092a611675565b5050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61095b816113fd565b6109636115f0565b846001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c39190612d7b565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038481166024830152604482018790526064820186905260a060848301525f60a4830152919091169063f242432a9060c4015f604051808303815f87803b158015610a3f575f80fd5b505af1158015610a51573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167fc9e640d2eb1b8469e42f60a66fef6a05cfd27ee3757e48f3f8ba04ecbc8a51b086604051610a9b91815260200190565b60405180910390a461092a611675565b7ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba610ad5816113fd565b610add61169f565b610ae56115f0565b845f03610b1e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b2a87878787611cb3565b6040517fc77b66c20000000000000000000000000000000000000000000000000000000081525f906001600160a01b0389169063c77b66c290610b79908990309086908a908a90600401612d96565b6020604051808303815f875af1158015610b95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb99190612de2565b9050858114610c03576040517fbe40f1fc00000000000000000000000000000000000000000000000000000000815260048101879052602481018290526044015b60405180910390fd5b610c176001600160a01b0389168888611627565b60408051878152863560208201526001600160a01b03808a1692908b169133917f7c0eac1a8d30fbe7a577affc3b588a0b7d965a6133d12097cfac0760f2f2b617910160405180910390a450610c6b611675565b50505050505050565b5f807359afe8ae48de65d9916b99c8cf9977061955c9a790507352174538a83b18462c5cf898016539b086c920c76001600160a01b0316816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0b9190612d7b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a9190612d7b565b6001600160a01b0316148015610e63575073b092f127bd44f19bfa96e78db4beaf1066d2914e6001600160a01b0316816001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df99190612d7b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e589190612d7b565b6001600160a01b0316145b91505090565b5f6060805f805f6060610e7a611df1565b610e82611ec4565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de610ef1816113fd565b610ef96115f0565b5f7f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7006001600160a01b0385165f818152602083815260409182902080549088905582518181529182018890529394507fc6ce8282d3b57b159503fa5566e612aeb9f30c8e20c882398c9cb293c1ba6d68910160405180910390a25050610718611675565b5f805b86811015610fdd578481108015610fae57505f868683818110610fa557610fa5612e0d565b90506020020135115b15610fd557610fd533898984818110610fc957610fc9612e0d565b90506020020135611f15565b600101610f80565b507fbc197c81000000000000000000000000000000000000000000000000000000009998505050505050505050565b5f61101561217e565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156110415750825b90505f8267ffffffffffffffff16600114801561105d5750303b155b90508115801561106b575080155b156110a2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156110ed57845468ff00000000000000001916680100000000000000001785555b6001600160a01b03861661112d576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113561169f565b61113d6121a6565b6111b16040518060400160405280601081526020017f535430784f7263686573747261746f72000000000000000000000000000000008152506040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506121ae565b6111bb5f8761140a565b50831561120757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611248816113fd565b6106c683836114d6565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61127c816113fd565b6112846115f0565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152604482018690526064820185905260a060848301525f60a483015286169063f242432a9060c4015f604051808303815f87803b1580156112fe575f80fd5b505af1158015611310573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167f78b19b4b6e69e380c3c303d1e889d510ee3ee409219c1c014d97a0a607b6c6a686604051610a9b91815260200190565b5f831561136b5761136b3386611f15565b507ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f6001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061067d57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b031983161461067d565b61140781336121c4565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166114cd575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556114833390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061067d565b5f91505061067d565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156114cd575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061067d565b604080517f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413360208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061072a9060c00160405160208183030381529060405280519060200120612250565b6115f8612297565b61162560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b906122f0565b565b61163483838360016122f7565b610718576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610bfa565b6116255f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0061161f565b5f7359afe8ae48de65d9916b99c8cf9977061955c9a790505f816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117189190612d7b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611753573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117779190612d7b565b90506001600160a01b0381167352174538a83b18462c5cf898016539b086c920c7146117f4576040517fdfdb61b70000000000000000000000000000000000000000000000000000000081527352174538a83b18462c5cf898016539b086c920c760048201526001600160a01b0382166024820152604401610bfa565b5f826001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa158015611831573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118559190612d7b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611890573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118b49190612d7b565b90506001600160a01b03811673b092f127bd44f19bfa96e78db4beaf1066d2914e14610718576040517f3e4077b300000000000000000000000000000000000000000000000000000000815273b092f127bd44f19bfa96e78db4beaf1066d2914e60048201526001600160a01b0382166024820152604401610bfa565b61193f848484846001612372565b6106c6576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610bfa565b5f808490505f816001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e69190612d7b565b90507f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7005f015f876001600160a01b03166001600160a01b031681526020019081526020015f205492505f826001600160a01b031663f5d214f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a909190612de2565b90505b8515611c6e5780841115611ae5576040517f66a21a2d0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101879052604401610bfa565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611b47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6b9190612de2565b9050805f03611b805750600190930192611a93565b5f818810611b8e5781611b90565b875b90505f856001600160a01b031663921a4c428330308b8d6040518663ffffffff1660e01b8152600401611bc7959493929190612e21565b6020604051808303815f875af1158015611be3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c079190612de2565b9050818114611c4c576040517fbe40f1fc0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610bfa565b611c56828a612e63565b9850828203611c66576001909601955b505050611a93565b5050506001600160a01b03939093165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090208390555090919050565b6001600160a01b0383165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320843584529091529020547f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7009060ff1615611d64576040517f59c210430000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015282356024820152604401610bfa565b6001600160a01b0384165f90815260018281016020908152604080842086358086529252909220805460ff1916909117905561092a908590611dab9088908390889061157a565b611db86020860186612e82565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123f892505050565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611e4290612ee3565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6e90612ee3565b8015611eb95780601f10611e9057610100808354040283529160200191611eb9565b820191905f5260205f20905b815481529060010190602001808311611e9c57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611e4290612ee3565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f481c6a750000000000000000000000000000000000000000000000000000000017905290515f9182916001600160a01b03861691611f8591612f1b565b5f60405180830381855afa9150503d805f8114611fbd576040519150601f19603f3d011682016040523d82523d5f602084013e611fc2565b606091505b5091509150811580611fd657508051602014155b15611fe15750505050565b5f611feb82612f31565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1e6b8980000000000000000000000000000000000000000000000000000000017905290519192506001600160a01b0383169161205b9190612f1b565b5f60405180830381855afa9150503d805f8114612093576040519150601f19603f3d011682016040523d82523d5f602084013e612098565b606091505b5090935091508215806120ad57508151602014155b156120b9575050505050565b6001600160a01b0385166120cc83612f31565b6001600160a01b0316146120e1575050505050565b6001600160a01b0381165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602081905260409091205480861015610c6b576001600160a01b0383165f818152602084815260409182902089905581518481529081018990527f2008c207f65bedc2bb65dc8ac34aee36a37cd43a50152d574107c63ace7e07c6910160405180910390a250505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061067d565b61162561250f565b6121b661250f565b6121c0828261254d565b5050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166121c0576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610bfa565b5f61067d61225c6125b0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15611625576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80825d5050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661236657838315161561235a573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166123e75783831516156123db573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b8051156124405761240a8383836125be565b610718576040517f19ab93cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f642ddf3a0000000000000000000000000000000000000000000000000000000080825260048201849052906001600160a01b0385169063642ddf3a906024016020604051808303815f875af115801561249f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124c39190612f54565b6001600160e01b03191614610718576040517f22b89c080000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610bfa565b612517612631565b611625576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61255561250f565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026125a18482612fb3565b50600381016106c68382612fb3565b5f6125b961264f565b905090565b5f836001600160a01b03163b5f0361261c575f806125dc85856126c2565b5090925090505f8160038111156125f5576125f561306f565b1480156126135750856001600160a01b0316826001600160a01b0316145b9250505061262a565b61262784848461270b565b90505b9392505050565b5f61263a61217e565b5468010000000000000000900460ff16919050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612679612789565b61268161279e565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f805f83516041036126f9576020840151604085015160608601515f1a6126eb888285856127a7565b955095509550505050612704565b505081515f91506002905b9250925092565b8051604080517f1626ba7e000000000000000000000000000000000000000000000000000000008082526004820186905260248201929092525f92906020820185604483015e5f82606483010152601f820160051c60051b915060205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f612792611df1565b80519060200120905090565b5f612792611ec4565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156127e057505f91506003905082612865565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612831573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661285c57505f925060019150829050612865565b92505f91508190505b9450945094915050565b6001600160e01b031981168114611407575f80fd5b5f60208284031215612894575f80fd5b813561262a8161286f565b6001600160a01b0381168114611407575f80fd5b5f80604083850312156128c4575f80fd5b82356128cf8161289f565b946020939093013593505050565b5f602082840312156128ed575f80fd5b5035919050565b5f8060408385031215612905575f80fd5b8235915060208301356129178161289f565b809150509250929050565b5f805f8060808587031215612935575f80fd5b84356129408161289f565b935060208501356129508161289f565b93969395505050506040820135916060013590565b5f805f60608486031215612977575f80fd5b83356129828161289f565b92506020840135915060408401356129998161289f565b809150509250925092565b5f8083601f8401126129b4575f80fd5b50813567ffffffffffffffff8111156129cb575f80fd5b6020830191508360208285010111156129e2575f80fd5b9250929050565b5f805f80606085870312156129fc575f80fd5b8435612a078161289f565b935060208501359250604085013567ffffffffffffffff811115612a29575f80fd5b612a35878288016129a4565b95989497509550505050565b5f805f8060808587031215612a54575f80fd5b8435612a5f8161289f565b935060208501359250604085013591506060850135612a7d8161289f565b939692955090935050565b5f805f805f8060a08789031215612a9d575f80fd5b8635612aa88161289f565b95506020870135612ab88161289f565b945060408701359350606087013567ffffffffffffffff80821115612adb575f80fd5b908801906040828b031215612aee575f80fd5b90935060808801359080821115612b03575f80fd5b50612b1089828a016129a4565b979a9699509497509295939492505050565b5f60208284031215612b32575f80fd5b813561262a8161289f565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e06020840152612ba760e084018a612b3d565b8381036040850152612bb9818a612b3d565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015612c0c57835183529284019291840191600101612bf0565b50909c9b505050505050505050505050565b5f8083601f840112612c2e575f80fd5b50813567ffffffffffffffff811115612c45575f80fd5b6020830191508360208260051b85010111156129e2575f80fd5b5f805f805f805f8060a0898b031215612c76575f80fd5b8835612c818161289f565b97506020890135612c918161289f565b9650604089013567ffffffffffffffff80821115612cad575f80fd5b612cb98c838d01612c1e565b909850965060608b0135915080821115612cd1575f80fd5b612cdd8c838d01612c1e565b909650945060808b0135915080821115612cf5575f80fd5b50612d028b828c016129a4565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d2b575f80fd5b8635612d368161289f565b95506020870135612d468161289f565b94506040870135935060608701359250608087013567ffffffffffffffff811115612d6f575f80fd5b612b1089828a016129a4565b5f60208284031215612d8b575f80fd5b815161262a8161289f565b8581526001600160a01b038516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b5f60208284031215612df2575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b8581525f6001600160a01b03808716602084015280861660408401525083606083015260a06080830152612e5860a0830184612b3d565b979650505050505050565b8181038181111561067d57634e487b7160e01b5f52601160045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612eb5575f80fd5b83018035915067ffffffffffffffff821115612ecf575f80fd5b6020019150368190038213156129e2575f80fd5b600181811c90821680612ef757607f821691505b602082108103612f1557634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82518060208501845e5f920191825250919050565b80516020808301519190811015612f15575f1960209190910360031b1b16919050565b5f60208284031215612f64575f80fd5b815161262a8161286f565b601f82111561071857805f5260205f20601f840160051c81016020851015612f945750805b601f840160051c820191505b8181101561092a575f8155600101612fa0565b815167ffffffffffffffff811115612fcd57612fcd612df9565b612fe181612fdb8454612ee3565b84612f6f565b602080601f831160018114613014575f8415612ffd5750858301515b5f19600386901b1c1916600185901b178555611207565b5f85815260208120601f198616915b8281101561304257888601518255948401946001909101908401613023565b508582101561305f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52602160045260245ffd"; /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = - hex"608060405260043610610191575f3560e01c8063742fabb3116100dc578063b930908f11610087578063d547741f11610062578063d547741f1461057c578063e9a9c8501461059b578063f14893a7146105ce578063f23a6e61146105ed575f80fd5b8063b930908f146104f2578063bc197c8114610525578063c4d66de81461055d575f80fd5b806391d14854116100b757806391d148541461045d5780639cb887f8146104c0578063a217fddf146104df575f80fd5b8063742fabb3146103cf578063752c9cf51461042257806384b0196e14610436575f80fd5b80633b94a0dd1161013c57806344d171871161011757806344d1718714610372578063584f418e14610391578063671d083f146103b0575f80fd5b80633b94a0dd146103015780633e81e40d146103345780633f6fc76f14610353575f80fd5b8063248a9ca31161016c578063248a9ca3146102745780632f2ff15d146102c157806336568abe146102e2575f80fd5b806301ffc9a71461019c5780630e230f97146101d057806320df435914610233575f80fd5b3661019857005b5f80fd5b3480156101a7575f80fd5b506101bb6101b6366004612870565b61060c565b60405190151581526020015b60405180910390f35b3480156101db575f80fd5b506101bb6101ea36600461289f565b6001600160a01b03919091165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320938352929052205460ff1690565b34801561023e575f80fd5b506102667f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de81565b6040519081526020016101c7565b34801561027f575f80fd5b5061026661028e3660046128c9565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156102cc575f80fd5b506102e06102db3660046128e0565b610683565b005b3480156102ed575f80fd5b506102e06102fc3660046128e0565b6106cc565b34801561030c575f80fd5b506102667f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413381565b34801561033f575f80fd5b5061026661034e36600461290e565b61071d565b34801561035e575f80fd5b506102e061036d366004612951565b610733565b34801561037d575f80fd5b506102e061038c3660046129d5565b6107ce565b34801561039c575f80fd5b506102e06103ab366004612a2d565b610931565b3480156103bb575f80fd5b506102e06103ca366004612a74565b610aab565b3480156103da575f80fd5b506102666103e9366004612b0e565b6001600160a01b03165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090205490565b34801561042d575f80fd5b506101bb610c74565b348015610441575f80fd5b5061044a610e69565b6040516101c79796959493929190612b57565b348015610468575f80fd5b506101bb6104773660046128e0565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb575f80fd5b506102e06104da36600461289f565b610ec7565b3480156104ea575f80fd5b506102665f81565b3480156104fd575f80fd5b506102667f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a381565b348015610530575f80fd5b5061054461053f366004612c4b565b610f7d565b6040516001600160e01b031990911681526020016101c7565b348015610568575f80fd5b506102e0610577366004612b0e565b61100c565b348015610587575f80fd5b506102e06105963660046128e0565b61120f565b3480156105a6575f80fd5b506102667ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba81565b3480156105d9575f80fd5b506102e06105e8366004612a2d565b611252565b3480156105f8575f80fd5b50610544610607366004612d02565b61135a565b5f6001600160e01b031982167f4e2312e000000000000000000000000000000000000000000000000000000000148061066e57506001600160e01b031982167f18bd37da00000000000000000000000000000000000000000000000000000000145b8061067d575061067d82611397565b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546106bc816113fd565b6106c6838361140a565b50505050565b6001600160a01b038116331461070e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071882826114d6565b505050565b5f61072a8585858561157a565b95945050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61075d816113fd565b6107656115f0565b6107796001600160a01b0385168385611627565b816001600160a01b0316846001600160a01b03167f4810d2f105dcba10d740b4ac1d8fa8454dd37014b2051bace1edb1d903c440c4856040516107be91815260200190565b60405180910390a36106c6611675565b7f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a36107f8816113fd565b61080061169f565b6108086115f0565b835f03610841576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108566001600160a01b038616333087611931565b6001600160a01b0385165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70060209081526040808320548151601f870184900484028101840190925285825292916108cf91899189919089908990819084018382808284375f9201919091525061198092505050565b60408051888152602081018590529081018290529091506001600160a01b0388169033907f112766730ce440487945c01048dacfc6d04340403f675871e96c4e28cf622ecc9060600160405180910390a3505061092a611675565b5050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61095b816113fd565b6109636115f0565b846001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c39190612d67565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038481166024830152604482018790526064820186905260a060848301525f60a4830152919091169063f242432a9060c4015f604051808303815f87803b158015610a3f575f80fd5b505af1158015610a51573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167fc9e640d2eb1b8469e42f60a66fef6a05cfd27ee3757e48f3f8ba04ecbc8a51b086604051610a9b91815260200190565b60405180910390a461092a611675565b7ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba610ad5816113fd565b610add61169f565b610ae56115f0565b845f03610b1e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b2a87878787611cb3565b6040517fc77b66c20000000000000000000000000000000000000000000000000000000081525f906001600160a01b0389169063c77b66c290610b79908990309086908a908a90600401612d82565b6020604051808303815f875af1158015610b95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb99190612dce565b9050858114610c03576040517fbe40f1fc00000000000000000000000000000000000000000000000000000000815260048101879052602481018290526044015b60405180910390fd5b610c176001600160a01b0389168888611627565b60408051878152863560208201526001600160a01b03808a1692908b169133917f7c0eac1a8d30fbe7a577affc3b588a0b7d965a6133d12097cfac0760f2f2b617910160405180910390a450610c6b611675565b50505050505050565b5f807359afe8ae48de65d9916b99c8cf9977061955c9a790507352174538a83b18462c5cf898016539b086c920c76001600160a01b0316816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0b9190612d67565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a9190612d67565b6001600160a01b0316148015610e63575073b092f127bd44f19bfa96e78db4beaf1066d2914e6001600160a01b0316816001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df99190612d67565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e589190612d67565b6001600160a01b0316145b91505090565b5f6060805f805f6060610e7a611df1565b610e82611ec4565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de610ef1816113fd565b610ef96115f0565b5f7f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7006001600160a01b0385165f818152602083815260409182902080549088905582518181529182018890529394507fc6ce8282d3b57b159503fa5566e612aeb9f30c8e20c882398c9cb293c1ba6d68910160405180910390a25050610718611675565b5f805b86811015610fdd578481108015610fae57505f868683818110610fa557610fa5612df9565b90506020020135115b15610fd557610fd533898984818110610fc957610fc9612df9565b90506020020135611f15565b600101610f80565b507fbc197c81000000000000000000000000000000000000000000000000000000009998505050505050505050565b5f61101561217e565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156110415750825b90505f8267ffffffffffffffff16600114801561105d5750303b155b90508115801561106b575080155b156110a2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156110ed57845468ff00000000000000001916680100000000000000001785555b6001600160a01b03861661112d576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113561169f565b61113d6121a6565b6111b16040518060400160405280601081526020017f535430784f7263686573747261746f72000000000000000000000000000000008152506040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506121ae565b6111bb5f8761140a565b50831561120757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611248816113fd565b6106c683836114d6565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61127c816113fd565b6112846115f0565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152604482018690526064820185905260a060848301525f60a483015286169063f242432a9060c4015f604051808303815f87803b1580156112fe575f80fd5b505af1158015611310573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167f78b19b4b6e69e380c3c303d1e889d510ee3ee409219c1c014d97a0a607b6c6a686604051610a9b91815260200190565b5f831561136b5761136b3386611f15565b507ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f6001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061067d57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b031983161461067d565b61140781336121c4565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166114cd575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556114833390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061067d565b5f91505061067d565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156114cd575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061067d565b604080517f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413360208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061072a9060c00160405160208183030381529060405280519060200120612250565b6115f8612297565b61162560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b906122f0565b565b61163483838360016122f7565b610718576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610bfa565b6116255f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0061161f565b5f7359afe8ae48de65d9916b99c8cf9977061955c9a790505f816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117189190612d67565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611753573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117779190612d67565b90506001600160a01b0381167352174538a83b18462c5cf898016539b086c920c7146117f4576040517fdfdb61b70000000000000000000000000000000000000000000000000000000081527352174538a83b18462c5cf898016539b086c920c760048201526001600160a01b0382166024820152604401610bfa565b5f826001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa158015611831573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118559190612d67565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611890573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118b49190612d67565b90506001600160a01b03811673b092f127bd44f19bfa96e78db4beaf1066d2914e14610718576040517f3e4077b300000000000000000000000000000000000000000000000000000000815273b092f127bd44f19bfa96e78db4beaf1066d2914e60048201526001600160a01b0382166024820152604401610bfa565b61193f848484846001612372565b6106c6576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610bfa565b5f808490505f816001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e69190612d67565b90507f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7005f015f876001600160a01b03166001600160a01b031681526020019081526020015f205492505f826001600160a01b031663f5d214f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a909190612dce565b90505b8515611c6e5780841115611ae5576040517f66a21a2d0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101879052604401610bfa565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611b47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6b9190612dce565b9050805f03611b805750600190930192611a93565b5f818810611b8e5781611b90565b875b90505f856001600160a01b031663921a4c428330308b8d6040518663ffffffff1660e01b8152600401611bc7959493929190612e0d565b6020604051808303815f875af1158015611be3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c079190612dce565b9050818114611c4c576040517fbe40f1fc0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610bfa565b611c56828a612e4f565b9850828203611c66576001909601955b505050611a93565b5050506001600160a01b03939093165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090208390555090919050565b6001600160a01b0383165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320843584529091529020547f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7009060ff1615611d64576040517f59c210430000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015282356024820152604401610bfa565b6001600160a01b0384165f90815260018281016020908152604080842086358086529252909220805460ff1916909117905561092a908590611dab9088908390889061157a565b611db86020860186612e6e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123f892505050565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611e4290612ecf565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6e90612ecf565b8015611eb95780601f10611e9057610100808354040283529160200191611eb9565b820191905f5260205f20905b815481529060010190602001808311611e9c57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611e4290612ecf565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f481c6a750000000000000000000000000000000000000000000000000000000017905290515f9182916001600160a01b03861691611f8591612f07565b5f60405180830381855afa9150503d805f8114611fbd576040519150601f19603f3d011682016040523d82523d5f602084013e611fc2565b606091505b5091509150811580611fd657508051602014155b15611fe15750505050565b5f611feb82612f1d565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1e6b8980000000000000000000000000000000000000000000000000000000017905290519192506001600160a01b0383169161205b9190612f07565b5f60405180830381855afa9150503d805f8114612093576040519150601f19603f3d011682016040523d82523d5f602084013e612098565b606091505b5090935091508215806120ad57508151602014155b156120b9575050505050565b6001600160a01b0385166120cc83612f1d565b6001600160a01b0316146120e1575050505050565b6001600160a01b0381165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602081905260409091205480861015610c6b576001600160a01b0383165f818152602084815260409182902089905581518481529081018990527f2008c207f65bedc2bb65dc8ac34aee36a37cd43a50152d574107c63ace7e07c6910160405180910390a250505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061067d565b61162561250f565b6121b661250f565b6121c0828261254d565b5050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166121c0576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610bfa565b5f61067d61225c6125b0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15611625576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80825d5050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661236657838315161561235a573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166123e75783831516156123db573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b8051156124405761240a8383836125be565b610718576040517f19ab93cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f642ddf3a0000000000000000000000000000000000000000000000000000000080825260048201849052906001600160a01b0385169063642ddf3a906024016020604051808303815f875af115801561249f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124c39190612f40565b6001600160e01b03191614610718576040517f22b89c080000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610bfa565b612517612631565b611625576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61255561250f565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026125a18482612f9f565b50600381016106c68382612f9f565b5f6125b961264f565b905090565b5f836001600160a01b03163b5f0361261c575f806125dc85856126c2565b5090925090505f8160038111156125f5576125f561305b565b1480156126135750856001600160a01b0316826001600160a01b0316145b9250505061262a565b61262784848461270b565b90505b9392505050565b5f61263a61217e565b5468010000000000000000900460ff16919050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612679612775565b61268161278a565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f805f83516041036126f9576020840151604085015160608601515f1a6126eb88828585612793565b955095509550505050612704565b505081515f91506002905b9250925092565b8051604080517f1626ba7e000000000000000000000000000000000000000000000000000000008082526004820186905260248201929092525f92906020820185604483015e60205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f61277e611df1565b80519060200120905090565b5f61277e611ec4565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156127cc57505f91506003905082612851565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561281d573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661284857505f925060019150829050612851565b92505f91508190505b9450945094915050565b6001600160e01b031981168114611407575f80fd5b5f60208284031215612880575f80fd5b813561262a8161285b565b6001600160a01b0381168114611407575f80fd5b5f80604083850312156128b0575f80fd5b82356128bb8161288b565b946020939093013593505050565b5f602082840312156128d9575f80fd5b5035919050565b5f80604083850312156128f1575f80fd5b8235915060208301356129038161288b565b809150509250929050565b5f805f8060808587031215612921575f80fd5b843561292c8161288b565b9350602085013561293c8161288b565b93969395505050506040820135916060013590565b5f805f60608486031215612963575f80fd5b833561296e8161288b565b92506020840135915060408401356129858161288b565b809150509250925092565b5f8083601f8401126129a0575f80fd5b50813567ffffffffffffffff8111156129b7575f80fd5b6020830191508360208285010111156129ce575f80fd5b9250929050565b5f805f80606085870312156129e8575f80fd5b84356129f38161288b565b935060208501359250604085013567ffffffffffffffff811115612a15575f80fd5b612a2187828801612990565b95989497509550505050565b5f805f8060808587031215612a40575f80fd5b8435612a4b8161288b565b935060208501359250604085013591506060850135612a698161288b565b939692955090935050565b5f805f805f8060a08789031215612a89575f80fd5b8635612a948161288b565b95506020870135612aa48161288b565b945060408701359350606087013567ffffffffffffffff80821115612ac7575f80fd5b908801906040828b031215612ada575f80fd5b90935060808801359080821115612aef575f80fd5b50612afc89828a01612990565b979a9699509497509295939492505050565b5f60208284031215612b1e575f80fd5b813561262a8161288b565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e06020840152612b9360e084018a612b29565b8381036040850152612ba5818a612b29565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015612bf857835183529284019291840191600101612bdc565b50909c9b505050505050505050505050565b5f8083601f840112612c1a575f80fd5b50813567ffffffffffffffff811115612c31575f80fd5b6020830191508360208260051b85010111156129ce575f80fd5b5f805f805f805f8060a0898b031215612c62575f80fd5b8835612c6d8161288b565b97506020890135612c7d8161288b565b9650604089013567ffffffffffffffff80821115612c99575f80fd5b612ca58c838d01612c0a565b909850965060608b0135915080821115612cbd575f80fd5b612cc98c838d01612c0a565b909650945060808b0135915080821115612ce1575f80fd5b50612cee8b828c01612990565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d17575f80fd5b8635612d228161288b565b95506020870135612d328161288b565b94506040870135935060608701359250608087013567ffffffffffffffff811115612d5b575f80fd5b612afc89828a01612990565b5f60208284031215612d77575f80fd5b815161262a8161288b565b8581526001600160a01b038516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b5f60208284031215612dde575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b8581525f6001600160a01b03808716602084015280861660408401525083606083015260a06080830152612e4460a0830184612b29565b979650505050505050565b8181038181111561067d57634e487b7160e01b5f52601160045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612ea1575f80fd5b83018035915067ffffffffffffffff821115612ebb575f80fd5b6020019150368190038213156129ce575f80fd5b600181811c90821680612ee357607f821691505b602082108103612f0157634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82518060208501845e5f920191825250919050565b80516020808301519190811015612f01575f1960209190910360031b1b16919050565b5f60208284031215612f50575f80fd5b815161262a8161285b565b601f82111561071857805f5260205f20601f840160051c81016020851015612f805750805b601f840160051c820191505b8181101561092a575f8155600101612f8c565b815167ffffffffffffffff811115612fb957612fb9612de5565b612fcd81612fc78454612ecf565b84612f5b565b602080601f831160018114613000575f8415612fe95750858301515b5f19600386901b1c1916600185901b178555611207565b5f85815260208120601f198616915b8281101561302e5788860151825594840194600190910190840161300f565b508582101561304b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52602160045260245ffd"; + hex"608060405260043610610191575f3560e01c8063742fabb3116100dc578063b930908f11610087578063d547741f11610062578063d547741f1461057c578063e9a9c8501461059b578063f14893a7146105ce578063f23a6e61146105ed575f80fd5b8063b930908f146104f2578063bc197c8114610525578063c4d66de81461055d575f80fd5b806391d14854116100b757806391d148541461045d5780639cb887f8146104c0578063a217fddf146104df575f80fd5b8063742fabb3146103cf578063752c9cf51461042257806384b0196e14610436575f80fd5b80633b94a0dd1161013c57806344d171871161011757806344d1718714610372578063584f418e14610391578063671d083f146103b0575f80fd5b80633b94a0dd146103015780633e81e40d146103345780633f6fc76f14610353575f80fd5b8063248a9ca31161016c578063248a9ca3146102745780632f2ff15d146102c157806336568abe146102e2575f80fd5b806301ffc9a71461019c5780630e230f97146101d057806320df435914610233575f80fd5b3661019857005b5f80fd5b3480156101a7575f80fd5b506101bb6101b6366004612884565b61060c565b60405190151581526020015b60405180910390f35b3480156101db575f80fd5b506101bb6101ea3660046128b3565b6001600160a01b03919091165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320938352929052205460ff1690565b34801561023e575f80fd5b506102667f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de81565b6040519081526020016101c7565b34801561027f575f80fd5b5061026661028e3660046128dd565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156102cc575f80fd5b506102e06102db3660046128f4565b610683565b005b3480156102ed575f80fd5b506102e06102fc3660046128f4565b6106cc565b34801561030c575f80fd5b506102667f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413381565b34801561033f575f80fd5b5061026661034e366004612922565b61071d565b34801561035e575f80fd5b506102e061036d366004612965565b610733565b34801561037d575f80fd5b506102e061038c3660046129e9565b6107ce565b34801561039c575f80fd5b506102e06103ab366004612a41565b610931565b3480156103bb575f80fd5b506102e06103ca366004612a88565b610aab565b3480156103da575f80fd5b506102666103e9366004612b22565b6001600160a01b03165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090205490565b34801561042d575f80fd5b506101bb610c74565b348015610441575f80fd5b5061044a610e69565b6040516101c79796959493929190612b6b565b348015610468575f80fd5b506101bb6104773660046128f4565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156104cb575f80fd5b506102e06104da3660046128b3565b610ec7565b3480156104ea575f80fd5b506102665f81565b3480156104fd575f80fd5b506102667f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a381565b348015610530575f80fd5b5061054461053f366004612c5f565b610f7d565b6040516001600160e01b031990911681526020016101c7565b348015610568575f80fd5b506102e0610577366004612b22565b61100c565b348015610587575f80fd5b506102e06105963660046128f4565b61120f565b3480156105a6575f80fd5b506102667ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba81565b3480156105d9575f80fd5b506102e06105e8366004612a41565b611252565b3480156105f8575f80fd5b50610544610607366004612d16565b61135a565b5f6001600160e01b031982167f4e2312e000000000000000000000000000000000000000000000000000000000148061066e57506001600160e01b031982167f18bd37da00000000000000000000000000000000000000000000000000000000145b8061067d575061067d82611397565b92915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546106bc816113fd565b6106c6838361140a565b50505050565b6001600160a01b038116331461070e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61071882826114d6565b505050565b5f61072a8585858561157a565b95945050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61075d816113fd565b6107656115f0565b6107796001600160a01b0385168385611627565b816001600160a01b0316846001600160a01b03167f4810d2f105dcba10d740b4ac1d8fa8454dd37014b2051bace1edb1d903c440c4856040516107be91815260200190565b60405180910390a36106c6611675565b7f04c6a47ae7910ef8b295215a97e8495a9eaf57b7b05bfd8bf951edb3fd4a16a36107f8816113fd565b61080061169f565b6108086115f0565b835f03610841576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108566001600160a01b038616333087611931565b6001600160a01b0385165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70060209081526040808320548151601f870184900484028101840190925285825292916108cf91899189919089908990819084018382808284375f9201919091525061198092505050565b60408051888152602081018590529081018290529091506001600160a01b0388169033907f112766730ce440487945c01048dacfc6d04340403f675871e96c4e28cf622ecc9060600160405180910390a3505061092a611675565b5050505050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61095b816113fd565b6109636115f0565b846001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c39190612d7b565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038481166024830152604482018790526064820186905260a060848301525f60a4830152919091169063f242432a9060c4015f604051808303815f87803b158015610a3f575f80fd5b505af1158015610a51573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167fc9e640d2eb1b8469e42f60a66fef6a05cfd27ee3757e48f3f8ba04ecbc8a51b086604051610a9b91815260200190565b60405180910390a461092a611675565b7ffdf81848136595c31bb5f76217767372bc4bf906663038eb38381131ea27ecba610ad5816113fd565b610add61169f565b610ae56115f0565b845f03610b1e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b2a87878787611cb3565b6040517fc77b66c20000000000000000000000000000000000000000000000000000000081525f906001600160a01b0389169063c77b66c290610b79908990309086908a908a90600401612d96565b6020604051808303815f875af1158015610b95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb99190612de2565b9050858114610c03576040517fbe40f1fc00000000000000000000000000000000000000000000000000000000815260048101879052602481018290526044015b60405180910390fd5b610c176001600160a01b0389168888611627565b60408051878152863560208201526001600160a01b03808a1692908b169133917f7c0eac1a8d30fbe7a577affc3b588a0b7d965a6133d12097cfac0760f2f2b617910160405180910390a450610c6b611675565b50505050505050565b5f807359afe8ae48de65d9916b99c8cf9977061955c9a790507352174538a83b18462c5cf898016539b086c920c76001600160a01b0316816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0b9190612d7b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a9190612d7b565b6001600160a01b0316148015610e63575073b092f127bd44f19bfa96e78db4beaf1066d2914e6001600160a01b0316816001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df99190612d7b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e589190612d7b565b6001600160a01b0316145b91505090565b5f6060805f805f6060610e7a611df1565b610e82611ec4565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de610ef1816113fd565b610ef96115f0565b5f7f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7006001600160a01b0385165f818152602083815260409182902080549088905582518181529182018890529394507fc6ce8282d3b57b159503fa5566e612aeb9f30c8e20c882398c9cb293c1ba6d68910160405180910390a25050610718611675565b5f805b86811015610fdd578481108015610fae57505f868683818110610fa557610fa5612e0d565b90506020020135115b15610fd557610fd533898984818110610fc957610fc9612e0d565b90506020020135611f15565b600101610f80565b507fbc197c81000000000000000000000000000000000000000000000000000000009998505050505050505050565b5f61101561217e565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156110415750825b90505f8267ffffffffffffffff16600114801561105d5750303b155b90508115801561106b575080155b156110a2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156110ed57845468ff00000000000000001916680100000000000000001785555b6001600160a01b03861661112d576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113561169f565b61113d6121a6565b6111b16040518060400160405280601081526020017f535430784f7263686573747261746f72000000000000000000000000000000008152506040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506121ae565b6111bb5f8761140a565b50831561120757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611248816113fd565b6106c683836114d6565b7f76b1a12ac8d9ed64de3c0f66c2a19b21c0a3f9a1afec3f75bcd45f7b0794a1de61127c816113fd565b6112846115f0565b6040517ff242432a0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152604482018690526064820185905260a060848301525f60a483015286169063f242432a9060c4015f604051808303815f87803b1580156112fe575f80fd5b505af1158015611310573d5f803e3d5ffd5b5050505083826001600160a01b0316866001600160a01b03167f78b19b4b6e69e380c3c303d1e889d510ee3ee409219c1c014d97a0a607b6c6a686604051610a9b91815260200190565b5f831561136b5761136b3386611f15565b507ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f6001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061067d57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b031983161461067d565b61140781336121c4565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166114cd575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556114833390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061067d565b5f91505061067d565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156114cd575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061067d565b604080517f8381bcc05e5203d9456aa7185a19b2be5d4af37909fecf63a6f2016c1bf8413360208201526001600160a01b038087169282019290925290841660608201526080810183905260a081018290525f9061072a9060c00160405160208183030381529060405280519060200120612250565b6115f8612297565b61162560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b906122f0565b565b61163483838360016122f7565b610718576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610bfa565b6116255f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0061161f565b5f7359afe8ae48de65d9916b99c8cf9977061955c9a790505f816001600160a01b0316632f77a1c16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117189190612d7b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611753573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117779190612d7b565b90506001600160a01b0381167352174538a83b18462c5cf898016539b086c920c7146117f4576040517fdfdb61b70000000000000000000000000000000000000000000000000000000081527352174538a83b18462c5cf898016539b086c920c760048201526001600160a01b0382166024820152604401610bfa565b5f826001600160a01b0316632c9b7f406040518163ffffffff1660e01b8152600401602060405180830381865afa158015611831573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118559190612d7b565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611890573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118b49190612d7b565b90506001600160a01b03811673b092f127bd44f19bfa96e78db4beaf1066d2914e14610718576040517f3e4077b300000000000000000000000000000000000000000000000000000000815273b092f127bd44f19bfa96e78db4beaf1066d2914e60048201526001600160a01b0382166024820152604401610bfa565b61193f848484846001612372565b6106c6576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610bfa565b5f808490505f816001600160a01b031663e1e6b8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e69190612d7b565b90507f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7005f015f876001600160a01b03166001600160a01b031681526020019081526020015f205492505f826001600160a01b031663f5d214f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a909190612de2565b90505b8515611c6e5780841115611ae5576040517f66a21a2d0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101879052604401610bfa565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611b47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6b9190612de2565b9050805f03611b805750600190930192611a93565b5f818810611b8e5781611b90565b875b90505f856001600160a01b031663921a4c428330308b8d6040518663ffffffff1660e01b8152600401611bc7959493929190612e21565b6020604051808303815f875af1158015611be3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c079190612de2565b9050818114611c4c576040517fbe40f1fc0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610bfa565b611c56828a612e63565b9850828203611c66576001909601955b505050611a93565b5050506001600160a01b03939093165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602052604090208390555090919050565b6001600160a01b0383165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be70160209081526040808320843584529091529020547f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be7009060ff1615611d64576040517f59c210430000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015282356024820152604401610bfa565b6001600160a01b0384165f90815260018281016020908152604080842086358086529252909220805460ff1916909117905561092a908590611dab9088908390889061157a565b611db86020860186612e82565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123f892505050565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611e4290612ee3565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6e90612ee3565b8015611eb95780601f10611e9057610100808354040283529160200191611eb9565b820191905f5260205f20905b815481529060010190602001808311611e9c57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091611e4290612ee3565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f481c6a750000000000000000000000000000000000000000000000000000000017905290515f9182916001600160a01b03861691611f8591612f1b565b5f60405180830381855afa9150503d805f8114611fbd576040519150601f19603f3d011682016040523d82523d5f602084013e611fc2565b606091505b5091509150811580611fd657508051602014155b15611fe15750505050565b5f611feb82612f31565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1e6b8980000000000000000000000000000000000000000000000000000000017905290519192506001600160a01b0383169161205b9190612f1b565b5f60405180830381855afa9150503d805f8114612093576040519150601f19603f3d011682016040523d82523d5f602084013e612098565b606091505b5090935091508215806120ad57508151602014155b156120b9575050505050565b6001600160a01b0385166120cc83612f31565b6001600160a01b0316146120e1575050505050565b6001600160a01b0381165f9081527f4bb94ceb743cdbfc320393e9b6fac11d883b2f90ac89bce731e459177c5be700602081905260409091205480861015610c6b576001600160a01b0383165f818152602084815260409182902089905581518481529081018990527f2008c207f65bedc2bb65dc8ac34aee36a37cd43a50152d574107c63ace7e07c6910160405180910390a250505050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061067d565b61162561250f565b6121b661250f565b6121c0828261254d565b5050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff166121c0576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610bfa565b5f61067d61225c6125b0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15611625576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80825d5050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661236657838315161561235a573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166123e75783831516156123db573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b8051156124405761240a8383836125be565b610718576040517f19ab93cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f642ddf3a0000000000000000000000000000000000000000000000000000000080825260048201849052906001600160a01b0385169063642ddf3a906024016020604051808303815f875af115801561249f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124c39190612f54565b6001600160e01b03191614610718576040517f22b89c080000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610bfa565b612517612631565b611625576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61255561250f565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026125a18482612fb3565b50600381016106c68382612fb3565b5f6125b961264f565b905090565b5f836001600160a01b03163b5f0361261c575f806125dc85856126c2565b5090925090505f8160038111156125f5576125f561306f565b1480156126135750856001600160a01b0316826001600160a01b0316145b9250505061262a565b61262784848461270b565b90505b9392505050565b5f61263a61217e565b5468010000000000000000900460ff16919050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612679612789565b61268161279e565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f805f83516041036126f9576020840151604085015160608601515f1a6126eb888285856127a7565b955095509550505050612704565b505081515f91506002905b9250925092565b8051604080517f1626ba7e000000000000000000000000000000000000000000000000000000008082526004820186905260248201929092525f92906020820185604483015e5f82606483010152601f820160051c60051b915060205f60648401838a5afa9050825f5114601f3d1116811693505050509392505050565b5f612792611df1565b80519060200120905090565b5f612792611ec4565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156127e057505f91506003905082612865565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612831573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661285c57505f925060019150829050612865565b92505f91508190505b9450945094915050565b6001600160e01b031981168114611407575f80fd5b5f60208284031215612894575f80fd5b813561262a8161286f565b6001600160a01b0381168114611407575f80fd5b5f80604083850312156128c4575f80fd5b82356128cf8161289f565b946020939093013593505050565b5f602082840312156128ed575f80fd5b5035919050565b5f8060408385031215612905575f80fd5b8235915060208301356129178161289f565b809150509250929050565b5f805f8060808587031215612935575f80fd5b84356129408161289f565b935060208501356129508161289f565b93969395505050506040820135916060013590565b5f805f60608486031215612977575f80fd5b83356129828161289f565b92506020840135915060408401356129998161289f565b809150509250925092565b5f8083601f8401126129b4575f80fd5b50813567ffffffffffffffff8111156129cb575f80fd5b6020830191508360208285010111156129e2575f80fd5b9250929050565b5f805f80606085870312156129fc575f80fd5b8435612a078161289f565b935060208501359250604085013567ffffffffffffffff811115612a29575f80fd5b612a35878288016129a4565b95989497509550505050565b5f805f8060808587031215612a54575f80fd5b8435612a5f8161289f565b935060208501359250604085013591506060850135612a7d8161289f565b939692955090935050565b5f805f805f8060a08789031215612a9d575f80fd5b8635612aa88161289f565b95506020870135612ab88161289f565b945060408701359350606087013567ffffffffffffffff80821115612adb575f80fd5b908801906040828b031215612aee575f80fd5b90935060808801359080821115612b03575f80fd5b50612b1089828a016129a4565b979a9699509497509295939492505050565b5f60208284031215612b32575f80fd5b813561262a8161289f565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e06020840152612ba760e084018a612b3d565b8381036040850152612bb9818a612b3d565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015612c0c57835183529284019291840191600101612bf0565b50909c9b505050505050505050505050565b5f8083601f840112612c2e575f80fd5b50813567ffffffffffffffff811115612c45575f80fd5b6020830191508360208260051b85010111156129e2575f80fd5b5f805f805f805f8060a0898b031215612c76575f80fd5b8835612c818161289f565b97506020890135612c918161289f565b9650604089013567ffffffffffffffff80821115612cad575f80fd5b612cb98c838d01612c1e565b909850965060608b0135915080821115612cd1575f80fd5b612cdd8c838d01612c1e565b909650945060808b0135915080821115612cf5575f80fd5b50612d028b828c016129a4565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d2b575f80fd5b8635612d368161289f565b95506020870135612d468161289f565b94506040870135935060608701359250608087013567ffffffffffffffff811115612d6f575f80fd5b612b1089828a016129a4565b5f60208284031215612d8b575f80fd5b815161262a8161289f565b8581526001600160a01b038516602082015283604082015260806060820152816080820152818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b5f60208284031215612df2575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b8581525f6001600160a01b03808716602084015280861660408401525083606083015260a06080830152612e5860a0830184612b3d565b979650505050505050565b8181038181111561067d57634e487b7160e01b5f52601160045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612eb5575f80fd5b83018035915067ffffffffffffffff821115612ecf575f80fd5b6020019150368190038213156129e2575f80fd5b600181811c90821680612ef757607f821691505b602082108103612f1557634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82518060208501845e5f920191825250919050565b80516020808301519190811015612f15575f1960209190910360031b1b16919050565b5f60208284031215612f64575f80fd5b815161262a8161286f565b601f82111561071857805f5260205f20601f840160051c81016020851015612f945750805b601f840160051c820191505b8181101561092a575f8155600101612fa0565b815167ffffffffffffffff811115612fcd57612fcd612df9565b612fe181612fdb8454612ee3565b84612f6f565b602080601f831160018114613014575f8415612ffd5750858301515b5f19600386901b1c1916600185901b178555611207565b5f85815260208120601f198616915b8281101561304257888601518255948401946001909101908401613023565b508582101561305f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52602160045260245ffd"; diff --git a/src/generated/candidate/ST0xOrchestratorBeaconSetDeployer.pointers.sol b/src/generated/candidate/ST0xOrchestratorBeaconSetDeployer.pointers.sol index 64ce415e..7a54dd7a 100644 --- a/src/generated/candidate/ST0xOrchestratorBeaconSetDeployer.pointers.sol +++ b/src/generated/candidate/ST0xOrchestratorBeaconSetDeployer.pointers.sol @@ -10,16 +10,16 @@ pragma solidity ^0.8.25; // file needs the contract to exist so that it can be compiled. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x779b9e3b829a16736d5d29c81e925395da9ff76d7d94c3618d48bdf1bc438a60); +bytes32 constant BYTECODE_HASH = bytes32(0xc91a827d9820ab3c92a37b88144979a83f09e1764334001f8963917e82c6a4d0); /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0x945D0Faf6f268e805246907507ef1044e70E75D7); +address constant DEPLOYED_ADDRESS = address(0x294dcAb257Ff86777AFfcc626b692f8bb5Ced5bD); /// @dev The creation bytecode of the contract. bytes constant CREATION_CODE = - hex"60a0604052348015600e575f80fd5b50731c3a4d12f88bd39303bb8510c6c1fa8ad37a4b72738e4bdeec7ceb9570d440676345da1dce10329f5b6040516043906083565b6001600160a01b03928316815291166020820152604001604051809103905ff0801580156072573d5f803e3d5ffd5b506001600160a01b03166080526090565b6104758061099483390190565b6080516108e66100ae5f395f81816070015261023401526108e65ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806301ffc9a714610043578063429b15441461006b5780634c96a389146100b7575b5f80fd5b6100566100513660046102eb565b6100ca565b60405190151581526020015b60405180910390f35b6100927f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610062565b6100926100c5366004610331565b610162565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f4c96a38900000000000000000000000000000000000000000000000000000000148061015c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82166101b0576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff831660248201525f9060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052519091505f907f000000000000000000000000000000000000000000000000000000000000000090839061025f906102de565b61026a929190610364565b604051809103905ff080158015610283573d5f803e3d5ffd5b5060405173ffffffffffffffffffffffffffffffffffffffff86811682529192509082169033907fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b9060200160405180910390a39392505050565b61052f806103b783390190565b5f602082840312156102fb575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461032a575f80fd5b9392505050565b5f60208284031215610341575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056608060405234801561000f575f80fd5b5060405161047538038061047583398101604081905261002e9161015f565b806001600160a01b03811661005d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006681610077565b50610070826100c6565b5050610190565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036100fb5760405163211eb15960e21b81526001600160a01b0382166004820152602401610054565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b80516001600160a01b038116811461015a575f80fd5b919050565b5f8060408385031215610170575f80fd5b61017983610144565b915061018760208401610144565b90509250929050565b6102d88061019d5f395ff3fe608060405234801561000f575f80fd5b5060043610610064575f3560e01c8063715018a61161004d578063715018a6146100a65780638da5cb5b146100ae578063f2fde38b146100be575f80fd5b80633659cfe6146100685780635c60da1b1461007d575b5f80fd5b61007b6100763660046102ab565b6100d1565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61007b6100e5565b5f546001600160a01b031661008a565b61007b6100cc3660046102ab565b6100f8565b6100d9610150565b6100e281610195565b50565b6100ed610150565b6100f65f610244565b565b610100610150565b6001600160a01b038116610147576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b6100e281610244565b5f546001600160a01b031633146100f6576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161013e565b806001600160a01b03163b5f036101e3576040517f847ac5640000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161013e565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102bb575f80fd5b81356001600160a01b03811681146102d1575f80fd5b939250505056"; + hex"60a0604052348015600e575f80fd5b507378f7dce07d2ac15bb1d31c05b66404cb65a30c2e738e4bdeec7ceb9570d440676345da1dce10329f5b6040516043906083565b6001600160a01b03928316815291166020820152604001604051809103905ff0801580156072573d5f803e3d5ffd5b506001600160a01b03166080526090565b6104758061099483390190565b6080516108e66100ae5f395f81816070015261023401526108e65ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806301ffc9a714610043578063429b15441461006b5780634c96a389146100b7575b5f80fd5b6100566100513660046102eb565b6100ca565b60405190151581526020015b60405180910390f35b6100927f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610062565b6100926100c5366004610331565b610162565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f4c96a38900000000000000000000000000000000000000000000000000000000148061015c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82166101b0576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff831660248201525f9060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052519091505f907f000000000000000000000000000000000000000000000000000000000000000090839061025f906102de565b61026a929190610364565b604051809103905ff080158015610283573d5f803e3d5ffd5b5060405173ffffffffffffffffffffffffffffffffffffffff86811682529192509082169033907fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b9060200160405180910390a39392505050565b61052f806103b783390190565b5f602082840312156102fb575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461032a575f80fd5b9392505050565b5f60208284031215610341575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056608060405234801561000f575f80fd5b5060405161047538038061047583398101604081905261002e9161015f565b806001600160a01b03811661005d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006681610077565b50610070826100c6565b5050610190565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036100fb5760405163211eb15960e21b81526001600160a01b0382166004820152602401610054565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b80516001600160a01b038116811461015a575f80fd5b919050565b5f8060408385031215610170575f80fd5b61017983610144565b915061018760208401610144565b90509250929050565b6102d88061019d5f395ff3fe608060405234801561000f575f80fd5b5060043610610064575f3560e01c8063715018a61161004d578063715018a6146100a65780638da5cb5b146100ae578063f2fde38b146100be575f80fd5b80633659cfe6146100685780635c60da1b1461007d575b5f80fd5b61007b6100763660046102ab565b6100d1565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61007b6100e5565b5f546001600160a01b031661008a565b61007b6100cc3660046102ab565b6100f8565b6100d9610150565b6100e281610195565b50565b6100ed610150565b6100f65f610244565b565b610100610150565b6001600160a01b038116610147576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b6100e281610244565b5f546001600160a01b031633146100f6576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161013e565b806001600160a01b03163b5f036101e3576040517f847ac5640000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161013e565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102bb575f80fd5b81356001600160a01b03811681146102d1575f80fd5b939250505056"; /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = - hex"608060405234801561000f575f80fd5b506004361061003f575f3560e01c806301ffc9a714610043578063429b15441461006b5780634c96a389146100b7575b5f80fd5b6100566100513660046102eb565b6100ca565b60405190151581526020015b60405180910390f35b6100927f000000000000000000000000b9dcd744b0413dff0edc70a5b229c7aa0373461381565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610062565b6100926100c5366004610331565b610162565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f4c96a38900000000000000000000000000000000000000000000000000000000148061015c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82166101b0576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff831660248201525f9060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052519091505f907f000000000000000000000000b9dcd744b0413dff0edc70a5b229c7aa0373461390839061025f906102de565b61026a929190610364565b604051809103905ff080158015610283573d5f803e3d5ffd5b5060405173ffffffffffffffffffffffffffffffffffffffff86811682529192509082169033907fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b9060200160405180910390a39392505050565b61052f806103b783390190565b5f602082840312156102fb575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461032a575f80fd5b9392505050565b5f60208284031215610341575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056"; + hex"608060405234801561000f575f80fd5b506004361061003f575f3560e01c806301ffc9a714610043578063429b15441461006b5780634c96a389146100b7575b5f80fd5b6100566100513660046102eb565b6100ca565b60405190151581526020015b60405180910390f35b6100927f0000000000000000000000007e13ab33eb5de6cc8d6f7dc82ec5ed5ad0de406b81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610062565b6100926100c5366004610331565b610162565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f4c96a38900000000000000000000000000000000000000000000000000000000148061015c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82166101b0576040517f9905827b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff831660248201525f9060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052519091505f907f0000000000000000000000007e13ab33eb5de6cc8d6f7dc82ec5ed5ad0de406b90839061025f906102de565b61026a929190610364565b604051809103905ff080158015610283573d5f803e3d5ffd5b5060405173ffffffffffffffffffffffffffffffffffffffff86811682529192509082169033907fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b9060200160405180910390a39392505050565b61052f806103b783390190565b5f602082840312156102fb575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461032a575f80fd5b9392505050565b5f60208284031215610341575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a575f80fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056"; diff --git a/src/generated/candidate/StoxUnifiedDeployer.pointers.sol b/src/generated/candidate/StoxUnifiedDeployer.pointers.sol index 61f4edc1..a041c8bb 100644 --- a/src/generated/candidate/StoxUnifiedDeployer.pointers.sol +++ b/src/generated/candidate/StoxUnifiedDeployer.pointers.sol @@ -10,16 +10,16 @@ pragma solidity ^0.8.25; // file needs the contract to exist so that it can be compiled. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x06734b6141e3a532330865d49f77f822c289983d9242636aef6e35e7d8e8195e); +bytes32 constant BYTECODE_HASH = bytes32(0x3751a69f25d21dfc1e966fc91131fc887bdf4214e29aeb5e386a76d65677496f); /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0x118010c9e57806368AE5A0AAc50A01E715c54ed2); +address constant DEPLOYED_ADDRESS = address(0xB1a857433285Dad6e3cb23e99F62572b6E233a73); /// @dev The creation bytecode of the contract. bytes constant CREATION_CODE = - hex"6080604052348015600e575f80fd5b506105f48061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063733e1f8d1461005f575b5f80fd5b61004b6100463660046102a3565b610074565b604051901515815260200160405180910390f35b61007261006d36600461040f565b61010c565b005b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f733e1f8d00000000000000000000000000000000000000000000000000000000148061010657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517f4904fab30000000000000000000000000000000000000000000000000000000081525f907359afe8ae48de65d9916b99c8cf9977061955c9a790634904fab39061015e908590600401610534565b6020604051808303815f875af115801561017a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019e91906105d9565b6040517fd786858b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201529091505f9073d0395427938c83d5ac663be80147ff149ace98e79063d786858b906024016020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024491906105d9565b6040805133815273ffffffffffffffffffffffffffffffffffffffff858116602083015283168183015290519192507fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b919081900360600190a1505050565b5f602082840312156102b3575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146102e2575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610339576103396102e9565b60405290565b6040516080810167ffffffffffffffff81118282101715610339576103396102e9565b73ffffffffffffffffffffffffffffffffffffffff81168114610383575f80fd5b50565b5f82601f830112610395575f80fd5b813567ffffffffffffffff808211156103b0576103b06102e9565b604051601f8301601f19908116603f011681019082821181831017156103d8576103d86102e9565b816040528381528660208588010111156103f0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f6020828403121561041f575f80fd5b813567ffffffffffffffff80821115610436575f80fd5b9083019060408286031215610449575f80fd5b610451610316565b823561045c81610362565b815260208301358281111561046f575f80fd5b929092019160808387031215610483575f80fd5b61048b61033f565b833561049681610362565b81526020840135838111156104a9575f80fd5b6104b588828701610386565b6020830152506040840135838111156104cc575f80fd5b6104d888828701610386565b604083015250606084013593506104ee84610362565b60608101939093526020810192909252509392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f73ffffffffffffffffffffffffffffffffffffffff8084511660208401526020840151604080850152818151166060850152602081015160808086015261058360e0860182610506565b905060408201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08683030160a08701526105be8282610506565b9150508260608301511660c086015280935050505092915050565b5f602082840312156105e9575f80fd5b81516102e28161036256"; + hex"6080604052348015600e575f80fd5b506105f48061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063733e1f8d1461005f575b5f80fd5b61004b6100463660046102a3565b610074565b604051901515815260200160405180910390f35b61007261006d36600461040f565b61010c565b005b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f733e1f8d00000000000000000000000000000000000000000000000000000000148061010657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517f4904fab30000000000000000000000000000000000000000000000000000000081525f907359afe8ae48de65d9916b99c8cf9977061955c9a790634904fab39061015e908590600401610534565b6020604051808303815f875af115801561017a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019e91906105d9565b6040517fd786858b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201529091505f90735d94874c29ba113445a849cfd7223363772a3b729063d786858b906024016020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024491906105d9565b6040805133815273ffffffffffffffffffffffffffffffffffffffff858116602083015283168183015290519192507fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b919081900360600190a1505050565b5f602082840312156102b3575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146102e2575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610339576103396102e9565b60405290565b6040516080810167ffffffffffffffff81118282101715610339576103396102e9565b73ffffffffffffffffffffffffffffffffffffffff81168114610383575f80fd5b50565b5f82601f830112610395575f80fd5b813567ffffffffffffffff808211156103b0576103b06102e9565b604051601f8301601f19908116603f011681019082821181831017156103d8576103d86102e9565b816040528381528660208588010111156103f0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f6020828403121561041f575f80fd5b813567ffffffffffffffff80821115610436575f80fd5b9083019060408286031215610449575f80fd5b610451610316565b823561045c81610362565b815260208301358281111561046f575f80fd5b929092019160808387031215610483575f80fd5b61048b61033f565b833561049681610362565b81526020840135838111156104a9575f80fd5b6104b588828701610386565b6020830152506040840135838111156104cc575f80fd5b6104d888828701610386565b604083015250606084013593506104ee84610362565b60608101939093526020810192909252509392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f73ffffffffffffffffffffffffffffffffffffffff8084511660208401526020840151604080850152818151166060850152602081015160808086015261058360e0860182610506565b905060408201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08683030160a08701526105be8282610506565b9150508260608301511660c086015280935050505092915050565b5f602082840312156105e9575f80fd5b81516102e28161036256"; /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = - hex"608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063733e1f8d1461005f575b5f80fd5b61004b6100463660046102a3565b610074565b604051901515815260200160405180910390f35b61007261006d36600461040f565b61010c565b005b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f733e1f8d00000000000000000000000000000000000000000000000000000000148061010657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517f4904fab30000000000000000000000000000000000000000000000000000000081525f907359afe8ae48de65d9916b99c8cf9977061955c9a790634904fab39061015e908590600401610534565b6020604051808303815f875af115801561017a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019e91906105d9565b6040517fd786858b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201529091505f9073d0395427938c83d5ac663be80147ff149ace98e79063d786858b906024016020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024491906105d9565b6040805133815273ffffffffffffffffffffffffffffffffffffffff858116602083015283168183015290519192507fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b919081900360600190a1505050565b5f602082840312156102b3575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146102e2575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610339576103396102e9565b60405290565b6040516080810167ffffffffffffffff81118282101715610339576103396102e9565b73ffffffffffffffffffffffffffffffffffffffff81168114610383575f80fd5b50565b5f82601f830112610395575f80fd5b813567ffffffffffffffff808211156103b0576103b06102e9565b604051601f8301601f19908116603f011681019082821181831017156103d8576103d86102e9565b816040528381528660208588010111156103f0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f6020828403121561041f575f80fd5b813567ffffffffffffffff80821115610436575f80fd5b9083019060408286031215610449575f80fd5b610451610316565b823561045c81610362565b815260208301358281111561046f575f80fd5b929092019160808387031215610483575f80fd5b61048b61033f565b833561049681610362565b81526020840135838111156104a9575f80fd5b6104b588828701610386565b6020830152506040840135838111156104cc575f80fd5b6104d888828701610386565b604083015250606084013593506104ee84610362565b60608101939093526020810192909252509392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f73ffffffffffffffffffffffffffffffffffffffff8084511660208401526020840151604080850152818151166060850152602081015160808086015261058360e0860182610506565b905060408201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08683030160a08701526105be8282610506565b9150508260608301511660c086015280935050505092915050565b5f602082840312156105e9575f80fd5b81516102e28161036256"; + hex"608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063733e1f8d1461005f575b5f80fd5b61004b6100463660046102a3565b610074565b604051901515815260200160405180910390f35b61007261006d36600461040f565b61010c565b005b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f733e1f8d00000000000000000000000000000000000000000000000000000000148061010657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6040517f4904fab30000000000000000000000000000000000000000000000000000000081525f907359afe8ae48de65d9916b99c8cf9977061955c9a790634904fab39061015e908590600401610534565b6020604051808303815f875af115801561017a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019e91906105d9565b6040517fd786858b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201529091505f90735d94874c29ba113445a849cfd7223363772a3b729063d786858b906024016020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024491906105d9565b6040805133815273ffffffffffffffffffffffffffffffffffffffff858116602083015283168183015290519192507fa0d99d93cf7a5f89661fa0829369a7e4896e755871efe65440bab2429387d55b919081900360600190a1505050565b5f602082840312156102b3575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146102e2575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610339576103396102e9565b60405290565b6040516080810167ffffffffffffffff81118282101715610339576103396102e9565b73ffffffffffffffffffffffffffffffffffffffff81168114610383575f80fd5b50565b5f82601f830112610395575f80fd5b813567ffffffffffffffff808211156103b0576103b06102e9565b604051601f8301601f19908116603f011681019082821181831017156103d8576103d86102e9565b816040528381528660208588010111156103f0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f6020828403121561041f575f80fd5b813567ffffffffffffffff80821115610436575f80fd5b9083019060408286031215610449575f80fd5b610451610316565b823561045c81610362565b815260208301358281111561046f575f80fd5b929092019160808387031215610483575f80fd5b61048b61033f565b833561049681610362565b81526020840135838111156104a9575f80fd5b6104b588828701610386565b6020830152506040840135838111156104cc575f80fd5b6104d888828701610386565b604083015250606084013593506104ee84610362565b60608101939093526020810192909252509392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f73ffffffffffffffffffffffffffffffffffffffff8084511660208401526020840151604080850152818151166060850152602081015160808086015261058360e0860182610506565b905060408201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08683030160a08701526105be8282610506565b9150508260608301511660c086015280935050505092915050565b5f602082840312156105e9575f80fd5b81516102e28161036256"; diff --git a/src/generated/candidate/StoxWrappedTokenVault.pointers.sol b/src/generated/candidate/StoxWrappedTokenVault.pointers.sol index 7e5ea120..c1ccc372 100644 --- a/src/generated/candidate/StoxWrappedTokenVault.pointers.sol +++ b/src/generated/candidate/StoxWrappedTokenVault.pointers.sol @@ -10,16 +10,16 @@ pragma solidity ^0.8.25; // file needs the contract to exist so that it can be compiled. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x46286068eab6f0e0919f54b2f3145630553f33e14b0b6f4b23510355bbc14083); +bytes32 constant BYTECODE_HASH = bytes32(0xe4ee56192e047469bf6372d41ff4369db73d6e36d99fc4d260da859dc7b5f97c); /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0x09e409fBc6896C4cA7440BD49Ba52173ba4cC0cF); +address constant DEPLOYED_ADDRESS = address(0xa2A2E94c9e0382a92B10695017Bb925f5f507a8b); /// @dev The creation bytecode of the contract. bytes constant CREATION_CODE = - hex"6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611d22806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106101b0575f3560e01c806370a08231116100f3578063c4d66de811610093578063ce96cb771161006e578063ce96cb77146103c9578063d905777e146103dc578063dd62ed3e146103ef578063ef8b30f7146103b6575f80fd5b8063c4d66de8146103a3578063c63d75b6146102bb578063c6e6f592146103b6575f80fd5b8063a9059cbb116100ce578063a9059cbb14610357578063b3d7f6b91461036a578063b460af941461037d578063ba08765214610390575f80fd5b806370a08231146102f557806394bf804d1461033c57806395d89b411461034f575f80fd5b806323b872dd1161015e578063402d267d11610139578063402d267d146102bb578063439fab91146102cf5780634cdad506146101e45780636e553f65146102e2575f80fd5b806323b872dd14610254578063313ce5671461026757806338d52e0f14610281575f80fd5b8063095ea7b31161018e578063095ea7b3146101f75780630a28a4771461021a57806318160ddd1461022d575f80fd5b806301e1d114146101b457806306fdde03146101cf57806307a2d13a146101e4575b5f80fd5b6101bc610446565b6040519081526020015b60405180910390f35b6101d76104fe565b6040516101c6919061172c565b6101bc6101f2366004611761565b6105b6565b61020a61020536600461178c565b6105c7565b60405190151581526020016101c6565b6101bc610228366004611761565b6105de565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546101bc565b61020a6102623660046117b6565b6105ea565b61026f61060f565b60405160ff90911681526020016101c6565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546040516001600160a01b0390911681526020016101c6565b6101bc6102c93660046117f4565b505f1990565b6101bc6102dd36600461180f565b610662565b6101bc6102f036600461187b565b610871565b6101bc6103033660046117f4565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b6101bc61034a36600461187b565b6108a2565b6101d76108bd565b61020a61036536600461178c565b610961565b6101bc610378366004611761565b61096e565b6101bc61038b3660046118a9565b61097a565b6101bc61039e3660046118a9565b6109fc565b6101bc6103b13660046117f4565b610a75565b6101bc6103c4366004611761565b610aa8565b6101bc6103d73660046117f4565b610ab3565b6101bc6103ea3660046117f4565b610abc565b6101bc6103fd3660046118e8565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f6104787f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156104d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f99190611914565b905090565b60606105317f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561056b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610592919081019061193f565b6040516020016105a29190611a01565b604051602081830303815290604052905090565b5f6105c1825f610af8565b92915050565b5f336105d4818585610b4f565b5060019392505050565b5f6105c1826001610b61565b5f336105f7858285610baf565b610602858585610c63565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f815461065c919074010000000000000000000000000000000000000000900460ff16611a46565b91505090565b5f8061066c610cf2565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156106985750825b90505f8267ffffffffffffffff1660011480156106b45750303b155b9050811580156106c2575080155b156106f9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561074457845468ff00000000000000001916680100000000000000001785555b5f610751888a018a6117f4565b90506001600160a01b038116610793576040517f7cde9b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079c81610d1a565b6107c260405180602001604052805f81525060405180602001604052805f815250610d2e565b6040516001600160a01b0382169033907fdf5fabff9e49f8c35d69a1f2d0c5e80c933c31cf836cf70de57e3a6e7dc86ebb905f90a37fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3965050831561086657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505092915050565b5f5f19610882565b60405180910390fd5b5f61088c85610aa8565b905061089a33858784610d44565b949350505050565b5f5f195f6108af8561096e565b905061089a33858388610d44565b60606108f07f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561092a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610951919081019061193f565b6040516020016105a29190611a5f565b5f336105d4818585610c63565b5f6105c1826001610af8565b5f8061098583610ab3565b9050808511156109da576040517ffe9cceec0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810186905260448101829052606401610879565b5f6109e4866105de565b90506109f33386868985610db4565b95945050505050565b5f80610a0783610abc565b905080851115610a5c576040517fb94abeec0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810186905260448101829052606401610879565b5f610a66866105b6565b90506109f3338686848a610db4565b5f6040517faf1fbb2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c1825f610b61565b5f6105c16101f2835b6001600160a01b0381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0060205260408120546105c1565b5f610608610b04610446565b610b0f906001611a90565b610b1a5f600a611b83565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610b469190611a90565b85919085610e53565b610b5c8383836001610e95565b505050565b5f610608610b7082600a611b83565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610b9c9190611a90565b610ba4610446565b610b46906001611a90565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610c5d5781811015610c4f576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610879565b610c5d84848484035f610e95565b50505050565b6001600160a01b038316610ca5576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038216610ce7576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610b5c838383610fbe565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006105c1565b610d22611115565b610d2b81611155565b50565b610d36611115565b610d408282611219565b5050565b610d4e848361127c565b610d5883826112b8565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610da6929190918252602082015260400190565b60405180910390a350505050565b826001600160a01b0316856001600160a01b031614610dd857610dd8838683610baf565b610de28382611305565b610dec8483611352565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610e44929190918252602082015260400190565b60405180910390a45050505050565b5f610e80610e608361138d565b8015610e7b57505f8480610e7657610e76611b91565b868809115b151590565b610e8b8686866113b9565b6109f39190611a90565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516610ef8576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038416610f3a576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610fb757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610fae91815260200190565b60405180910390a35b5050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b03841661100b5781816002015f8282546110009190611a90565b909155506110949050565b6001600160a01b0384165f9081526020829052604090205482811015611076576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810182905260448101849052606401610879565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166110b25760028101805483900390556110d0565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610da691815260200190565b61111d611469565b611153576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61115d611115565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f8061118984611487565b915091508161119957601261119b565b805b83547fffffffffffffffffffffff000000000000000000000000000000000000000000167401000000000000000000000000000000000000000060ff92909216919091027fffffffffffffffffffffffff000000000000000000000000000000000000000016176001600160a01b0394909416939093179091555050565b611221611115565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361126d8482611c21565b5060048101610c5d8382611c21565b610d406112b07f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b833084611540565b6001600160a01b0382166112fa576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610d405f8383610fbe565b6001600160a01b038216611347576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610d40825f83610fbe565b610d406113867f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b838361158f565b5f60028260038111156113a2576113a2611ce1565b6113ac9190611cf5565b60ff166001149050919050565b5f805f6113c686866115dd565b91509150815f036113ea578381816113e0576113e0611b91565b0492505050610608565b8184116114015761140160038515026011186115f9565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f611472610cf2565b5468010000000000000000900460ff16919050565b5f805f61149360405190565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce567000000000000000000000000000000000000000000000000000000001790529091505f9081906114fc90879061160a565b509150915061150a83604052565b818015611518575060203d10155b8015611525575060ff8111155b611530575f80611534565b6001815b94509450505050915091565b61154e84848484600161162b565b610c5d576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610879565b61159c83838360016116b1565b610b5c576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610879565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f805f60405f855160208701885afa92505f51915060205190509250925092565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166116a0578383151615611694573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316611720578383151615611714573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611771575f80fd5b5035919050565b6001600160a01b0381168114610d2b575f80fd5b5f806040838503121561179d575f80fd5b82356117a881611778565b946020939093013593505050565b5f805f606084860312156117c8575f80fd5b83356117d381611778565b925060208401356117e381611778565b929592945050506040919091013590565b5f60208284031215611804575f80fd5b813561060881611778565b5f8060208385031215611820575f80fd5b823567ffffffffffffffff80821115611837575f80fd5b818501915085601f83011261184a575f80fd5b813581811115611858575f80fd5b866020828501011115611869575f80fd5b60209290920196919550909350505050565b5f806040838503121561188c575f80fd5b82359150602083013561189e81611778565b809150509250929050565b5f805f606084860312156118bb575f80fd5b8335925060208401356118cd81611778565b915060408401356118dd81611778565b809150509250925092565b5f80604083850312156118f9575f80fd5b823561190481611778565b9150602083013561189e81611778565b5f60208284031215611924575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561194f575f80fd5b815167ffffffffffffffff80821115611966575f80fd5b818401915084601f830112611979575f80fd5b81518181111561198b5761198b61192b565b604051601f8201601f19908116603f011681019083821181831017156119b3576119b361192b565b816040528281528760208487010111156119cb575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f81518060208401855e5f93019283525090919050565b7f577261707065642000000000000000000000000000000000000000000000000081525f61060860088301846119ea565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156105c1576105c1611a32565b7f770000000000000000000000000000000000000000000000000000000000000081525f61060860018301846119ea565b808201808211156105c1576105c1611a32565b600181815b80851115611add57815f1904821115611ac357611ac3611a32565b80851615611ad057918102915b93841c9390800290611aa8565b509250929050565b5f82611af3575060016105c1565b81611aff57505f6105c1565b8160018114611b155760028114611b1f57611b3b565b60019150506105c1565b60ff841115611b3057611b30611a32565b50506001821b6105c1565b5060208310610133831016604e8410600b8410161715611b5e575081810a6105c1565b611b688383611aa3565b805f1904821115611b7b57611b7b611a32565b029392505050565b5f61060860ff841683611ae5565b634e487b7160e01b5f52601260045260245ffd5b600181811c90821680611bb957607f821691505b602082108103611bd757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610b5c57805f5260205f20601f840160051c81016020851015611c025750805b601f840160051c820191505b81811015610fb7575f8155600101611c0e565b815167ffffffffffffffff811115611c3b57611c3b61192b565b611c4f81611c498454611ba5565b84611bdd565b602080601f831160018114611c82575f8415611c6b5750858301515b5f19600386901b1c1916600185901b178555611cd9565b5f85815260208120601f198616915b82811015611cb057888601518255948401946001909101908401611c91565b5085821015611ccd57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680611d1357634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056"; + hex"6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611c94806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106101b0575f3560e01c806370a08231116100f3578063c4d66de811610093578063ce96cb771161006e578063ce96cb77146103c9578063d905777e146103dc578063dd62ed3e146103ef578063ef8b30f7146103b6575f80fd5b8063c4d66de8146103a3578063c63d75b6146102bb578063c6e6f592146103b6575f80fd5b8063a9059cbb116100ce578063a9059cbb14610357578063b3d7f6b91461036a578063b460af941461037d578063ba08765214610390575f80fd5b806370a08231146102f557806394bf804d1461033c57806395d89b411461034f575f80fd5b806323b872dd1161015e578063402d267d11610139578063402d267d146102bb578063439fab91146102cf5780634cdad506146101e45780636e553f65146102e2575f80fd5b806323b872dd14610254578063313ce5671461026757806338d52e0f14610281575f80fd5b8063095ea7b31161018e578063095ea7b3146101f75780630a28a4771461021a57806318160ddd1461022d575f80fd5b806301e1d114146101b457806306fdde03146101cf57806307a2d13a146101e4575b5f80fd5b6101bc610446565b6040519081526020015b60405180910390f35b6101d76104fe565b6040516101c6919061169e565b6101bc6101f23660046116d3565b6105b6565b61020a6102053660046116fe565b6105c7565b60405190151581526020016101c6565b6101bc6102283660046116d3565b6105de565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546101bc565b61020a610262366004611728565b6105ea565b61026f61060f565b60405160ff90911681526020016101c6565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546040516001600160a01b0390911681526020016101c6565b6101bc6102c9366004611766565b505f1990565b6101bc6102dd366004611781565b610662565b6101bc6102f03660046117ed565b610871565b6101bc610303366004611766565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b6101bc61034a3660046117ed565b6108a2565b6101d76108bd565b61020a6103653660046116fe565b610961565b6101bc6103783660046116d3565b61096e565b6101bc61038b36600461181b565b61097a565b6101bc61039e36600461181b565b6109fc565b6101bc6103b1366004611766565b610a75565b6101bc6103c43660046116d3565b610aa8565b6101bc6103d7366004611766565b610ab3565b6101bc6103ea366004611766565b610abc565b6101bc6103fd36600461185a565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f6104787f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156104d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f99190611886565b905090565b60606105317f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561056b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261059291908101906118b1565b6040516020016105a29190611973565b604051602081830303815290604052905090565b5f6105c1825f610af8565b92915050565b5f336105d4818585610b4f565b5060019392505050565b5f6105c1826001610b61565b5f336105f7858285610baf565b610602858585610c63565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f815461065c919074010000000000000000000000000000000000000000900460ff166119b8565b91505090565b5f8061066c610cf2565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156106985750825b90505f8267ffffffffffffffff1660011480156106b45750303b155b9050811580156106c2575080155b156106f9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561074457845468ff00000000000000001916680100000000000000001785555b5f610751888a018a611766565b90506001600160a01b038116610793576040517f7cde9b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079c81610d1a565b6107c260405180602001604052805f81525060405180602001604052805f815250610d2e565b6040516001600160a01b0382169033907fdf5fabff9e49f8c35d69a1f2d0c5e80c933c31cf836cf70de57e3a6e7dc86ebb905f90a37fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3965050831561086657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505092915050565b5f5f19610882565b60405180910390fd5b5f61088c85610aa8565b905061089a33858784610d44565b949350505050565b5f5f195f6108af8561096e565b905061089a33858388610d44565b60606108f07f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561092a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261095191908101906118b1565b6040516020016105a291906119d1565b5f336105d4818585610c63565b5f6105c1826001610af8565b5f8061098583610ab3565b9050808511156109da576040517ffe9cceec0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810186905260448101829052606401610879565b5f6109e4866105de565b90506109f33386868985610db4565b95945050505050565b5f80610a0783610abc565b905080851115610a5c576040517fb94abeec0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810186905260448101829052606401610879565b5f610a66866105b6565b90506109f3338686848a610db4565b5f6040517faf1fbb2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c1825f610b61565b5f6105c16101f2835b6001600160a01b0381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0060205260408120546105c1565b5f610608610b04610446565b610b0f906001611a02565b610b1a5f600a611af5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610b469190611a02565b85919085610e53565b610b5c8383836001610e95565b505050565b5f610608610b7082600a611af5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610b9c9190611a02565b610ba4610446565b610b46906001611a02565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610c5d5781811015610c4f576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610879565b610c5d84848484035f610e95565b50505050565b6001600160a01b038316610ca5576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038216610ce7576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610b5c838383610fbe565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006105c1565b610d22611115565b610d2b81611155565b50565b610d36611115565b610d408282611219565b5050565b610d4e848361127c565b610d5883826112b8565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610da6929190918252602082015260400190565b60405180910390a350505050565b826001600160a01b0316856001600160a01b031614610dd857610dd8838683610baf565b610de28382611305565b610dec8483611352565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610e44929190918252602082015260400190565b60405180910390a45050505050565b5f610e80610e608361138d565b8015610e7b57505f8480610e7657610e76611b03565b868809115b151590565b610e8b8686866113b9565b6109f39190611a02565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516610ef8576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038416610f3a576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610fb757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610fae91815260200190565b60405180910390a35b5050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b03841661100b5781816002015f8282546110009190611a02565b909155506110949050565b6001600160a01b0384165f9081526020829052604090205482811015611076576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810182905260448101849052606401610879565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166110b25760028101805483900390556110d0565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610da691815260200190565b61111d611469565b611153576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61115d611115565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f8061118984611487565b915091508161119957601261119b565b805b83547fffffffffffffffffffffff000000000000000000000000000000000000000000167401000000000000000000000000000000000000000060ff92909216919091027fffffffffffffffffffffffff000000000000000000000000000000000000000016176001600160a01b0394909416939093179091555050565b611221611115565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361126d8482611b93565b5060048101610c5d8382611b93565b610d406112b07f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b8330846114d3565b6001600160a01b0382166112fa576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610d405f8383610fbe565b6001600160a01b038216611347576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610d40825f83610fbe565b610d406113867f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b8383611522565b5f60028260038111156113a2576113a2611c53565b6113ac9190611c67565b60ff166001149050919050565b5f805f6113c68686611570565b91509150815f036113ea578381816113e0576113e0611b03565b0492505050610608565b81841161140157611401600385150260111861158c565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f611472610cf2565b5468010000000000000000900460ff16919050565b7f313ce567000000000000000000000000000000000000000000000000000000005f818152908190602082600481875afa5f51601f3d1190911661010082101695908602945092505050565b6114e184848484600161159d565b610c5d576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610879565b61152f8383836001611623565b610b5c576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610879565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611612578383151615611606573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316611692578383151615611686573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156116e3575f80fd5b5035919050565b6001600160a01b0381168114610d2b575f80fd5b5f806040838503121561170f575f80fd5b823561171a816116ea565b946020939093013593505050565b5f805f6060848603121561173a575f80fd5b8335611745816116ea565b92506020840135611755816116ea565b929592945050506040919091013590565b5f60208284031215611776575f80fd5b8135610608816116ea565b5f8060208385031215611792575f80fd5b823567ffffffffffffffff808211156117a9575f80fd5b818501915085601f8301126117bc575f80fd5b8135818111156117ca575f80fd5b8660208285010111156117db575f80fd5b60209290920196919550909350505050565b5f80604083850312156117fe575f80fd5b823591506020830135611810816116ea565b809150509250929050565b5f805f6060848603121561182d575f80fd5b83359250602084013561183f816116ea565b9150604084013561184f816116ea565b809150509250925092565b5f806040838503121561186b575f80fd5b8235611876816116ea565b91506020830135611810816116ea565b5f60208284031215611896575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156118c1575f80fd5b815167ffffffffffffffff808211156118d8575f80fd5b818401915084601f8301126118eb575f80fd5b8151818111156118fd576118fd61189d565b604051601f8201601f19908116603f011681019083821181831017156119255761192561189d565b8160405282815287602084870101111561193d575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f81518060208401855e5f93019283525090919050565b7f577261707065642000000000000000000000000000000000000000000000000081525f610608600883018461195c565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156105c1576105c16119a4565b7f770000000000000000000000000000000000000000000000000000000000000081525f610608600183018461195c565b808201808211156105c1576105c16119a4565b600181815b80851115611a4f57815f1904821115611a3557611a356119a4565b80851615611a4257918102915b93841c9390800290611a1a565b509250929050565b5f82611a65575060016105c1565b81611a7157505f6105c1565b8160018114611a875760028114611a9157611aad565b60019150506105c1565b60ff841115611aa257611aa26119a4565b50506001821b6105c1565b5060208310610133831016604e8410600b8410161715611ad0575081810a6105c1565b611ada8383611a15565b805f1904821115611aed57611aed6119a4565b029392505050565b5f61060860ff841683611a57565b634e487b7160e01b5f52601260045260245ffd5b600181811c90821680611b2b57607f821691505b602082108103611b4957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610b5c57805f5260205f20601f840160051c81016020851015611b745750805b601f840160051c820191505b81811015610fb7575f8155600101611b80565b815167ffffffffffffffff811115611bad57611bad61189d565b611bc181611bbb8454611b17565b84611b4f565b602080601f831160018114611bf4575f8415611bdd5750858301515b5f19600386901b1c1916600185901b178555611c4b565b5f85815260208120601f198616915b82811015611c2257888601518255948401946001909101908401611c03565b5085821015611c3f57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680611c8557634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056"; /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = - hex"608060405234801561000f575f80fd5b50600436106101b0575f3560e01c806370a08231116100f3578063c4d66de811610093578063ce96cb771161006e578063ce96cb77146103c9578063d905777e146103dc578063dd62ed3e146103ef578063ef8b30f7146103b6575f80fd5b8063c4d66de8146103a3578063c63d75b6146102bb578063c6e6f592146103b6575f80fd5b8063a9059cbb116100ce578063a9059cbb14610357578063b3d7f6b91461036a578063b460af941461037d578063ba08765214610390575f80fd5b806370a08231146102f557806394bf804d1461033c57806395d89b411461034f575f80fd5b806323b872dd1161015e578063402d267d11610139578063402d267d146102bb578063439fab91146102cf5780634cdad506146101e45780636e553f65146102e2575f80fd5b806323b872dd14610254578063313ce5671461026757806338d52e0f14610281575f80fd5b8063095ea7b31161018e578063095ea7b3146101f75780630a28a4771461021a57806318160ddd1461022d575f80fd5b806301e1d114146101b457806306fdde03146101cf57806307a2d13a146101e4575b5f80fd5b6101bc610446565b6040519081526020015b60405180910390f35b6101d76104fe565b6040516101c6919061172c565b6101bc6101f2366004611761565b6105b6565b61020a61020536600461178c565b6105c7565b60405190151581526020016101c6565b6101bc610228366004611761565b6105de565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546101bc565b61020a6102623660046117b6565b6105ea565b61026f61060f565b60405160ff90911681526020016101c6565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546040516001600160a01b0390911681526020016101c6565b6101bc6102c93660046117f4565b505f1990565b6101bc6102dd36600461180f565b610662565b6101bc6102f036600461187b565b610871565b6101bc6103033660046117f4565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b6101bc61034a36600461187b565b6108a2565b6101d76108bd565b61020a61036536600461178c565b610961565b6101bc610378366004611761565b61096e565b6101bc61038b3660046118a9565b61097a565b6101bc61039e3660046118a9565b6109fc565b6101bc6103b13660046117f4565b610a75565b6101bc6103c4366004611761565b610aa8565b6101bc6103d73660046117f4565b610ab3565b6101bc6103ea3660046117f4565b610abc565b6101bc6103fd3660046118e8565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f6104787f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156104d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f99190611914565b905090565b60606105317f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561056b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610592919081019061193f565b6040516020016105a29190611a01565b604051602081830303815290604052905090565b5f6105c1825f610af8565b92915050565b5f336105d4818585610b4f565b5060019392505050565b5f6105c1826001610b61565b5f336105f7858285610baf565b610602858585610c63565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f815461065c919074010000000000000000000000000000000000000000900460ff16611a46565b91505090565b5f8061066c610cf2565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156106985750825b90505f8267ffffffffffffffff1660011480156106b45750303b155b9050811580156106c2575080155b156106f9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561074457845468ff00000000000000001916680100000000000000001785555b5f610751888a018a6117f4565b90506001600160a01b038116610793576040517f7cde9b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079c81610d1a565b6107c260405180602001604052805f81525060405180602001604052805f815250610d2e565b6040516001600160a01b0382169033907fdf5fabff9e49f8c35d69a1f2d0c5e80c933c31cf836cf70de57e3a6e7dc86ebb905f90a37fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3965050831561086657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505092915050565b5f5f19610882565b60405180910390fd5b5f61088c85610aa8565b905061089a33858784610d44565b949350505050565b5f5f195f6108af8561096e565b905061089a33858388610d44565b60606108f07f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561092a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610951919081019061193f565b6040516020016105a29190611a5f565b5f336105d4818585610c63565b5f6105c1826001610af8565b5f8061098583610ab3565b9050808511156109da576040517ffe9cceec0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810186905260448101829052606401610879565b5f6109e4866105de565b90506109f33386868985610db4565b95945050505050565b5f80610a0783610abc565b905080851115610a5c576040517fb94abeec0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810186905260448101829052606401610879565b5f610a66866105b6565b90506109f3338686848a610db4565b5f6040517faf1fbb2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c1825f610b61565b5f6105c16101f2835b6001600160a01b0381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0060205260408120546105c1565b5f610608610b04610446565b610b0f906001611a90565b610b1a5f600a611b83565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610b469190611a90565b85919085610e53565b610b5c8383836001610e95565b505050565b5f610608610b7082600a611b83565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610b9c9190611a90565b610ba4610446565b610b46906001611a90565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610c5d5781811015610c4f576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610879565b610c5d84848484035f610e95565b50505050565b6001600160a01b038316610ca5576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038216610ce7576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610b5c838383610fbe565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006105c1565b610d22611115565b610d2b81611155565b50565b610d36611115565b610d408282611219565b5050565b610d4e848361127c565b610d5883826112b8565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610da6929190918252602082015260400190565b60405180910390a350505050565b826001600160a01b0316856001600160a01b031614610dd857610dd8838683610baf565b610de28382611305565b610dec8483611352565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610e44929190918252602082015260400190565b60405180910390a45050505050565b5f610e80610e608361138d565b8015610e7b57505f8480610e7657610e76611b91565b868809115b151590565b610e8b8686866113b9565b6109f39190611a90565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516610ef8576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038416610f3a576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610fb757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610fae91815260200190565b60405180910390a35b5050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b03841661100b5781816002015f8282546110009190611a90565b909155506110949050565b6001600160a01b0384165f9081526020829052604090205482811015611076576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810182905260448101849052606401610879565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166110b25760028101805483900390556110d0565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610da691815260200190565b61111d611469565b611153576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61115d611115565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f8061118984611487565b915091508161119957601261119b565b805b83547fffffffffffffffffffffff000000000000000000000000000000000000000000167401000000000000000000000000000000000000000060ff92909216919091027fffffffffffffffffffffffff000000000000000000000000000000000000000016176001600160a01b0394909416939093179091555050565b611221611115565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361126d8482611c21565b5060048101610c5d8382611c21565b610d406112b07f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b833084611540565b6001600160a01b0382166112fa576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610d405f8383610fbe565b6001600160a01b038216611347576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610d40825f83610fbe565b610d406113867f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b838361158f565b5f60028260038111156113a2576113a2611ce1565b6113ac9190611cf5565b60ff166001149050919050565b5f805f6113c686866115dd565b91509150815f036113ea578381816113e0576113e0611b91565b0492505050610608565b8184116114015761140160038515026011186115f9565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f611472610cf2565b5468010000000000000000900460ff16919050565b5f805f61149360405190565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce567000000000000000000000000000000000000000000000000000000001790529091505f9081906114fc90879061160a565b509150915061150a83604052565b818015611518575060203d10155b8015611525575060ff8111155b611530575f80611534565b6001815b94509450505050915091565b61154e84848484600161162b565b610c5d576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610879565b61159c83838360016116b1565b610b5c576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610879565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f805f60405f855160208701885afa92505f51915060205190509250925092565b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166116a0578383151615611694573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316611720578383151615611714573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611771575f80fd5b5035919050565b6001600160a01b0381168114610d2b575f80fd5b5f806040838503121561179d575f80fd5b82356117a881611778565b946020939093013593505050565b5f805f606084860312156117c8575f80fd5b83356117d381611778565b925060208401356117e381611778565b929592945050506040919091013590565b5f60208284031215611804575f80fd5b813561060881611778565b5f8060208385031215611820575f80fd5b823567ffffffffffffffff80821115611837575f80fd5b818501915085601f83011261184a575f80fd5b813581811115611858575f80fd5b866020828501011115611869575f80fd5b60209290920196919550909350505050565b5f806040838503121561188c575f80fd5b82359150602083013561189e81611778565b809150509250929050565b5f805f606084860312156118bb575f80fd5b8335925060208401356118cd81611778565b915060408401356118dd81611778565b809150509250925092565b5f80604083850312156118f9575f80fd5b823561190481611778565b9150602083013561189e81611778565b5f60208284031215611924575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561194f575f80fd5b815167ffffffffffffffff80821115611966575f80fd5b818401915084601f830112611979575f80fd5b81518181111561198b5761198b61192b565b604051601f8201601f19908116603f011681019083821181831017156119b3576119b361192b565b816040528281528760208487010111156119cb575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f81518060208401855e5f93019283525090919050565b7f577261707065642000000000000000000000000000000000000000000000000081525f61060860088301846119ea565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156105c1576105c1611a32565b7f770000000000000000000000000000000000000000000000000000000000000081525f61060860018301846119ea565b808201808211156105c1576105c1611a32565b600181815b80851115611add57815f1904821115611ac357611ac3611a32565b80851615611ad057918102915b93841c9390800290611aa8565b509250929050565b5f82611af3575060016105c1565b81611aff57505f6105c1565b8160018114611b155760028114611b1f57611b3b565b60019150506105c1565b60ff841115611b3057611b30611a32565b50506001821b6105c1565b5060208310610133831016604e8410600b8410161715611b5e575081810a6105c1565b611b688383611aa3565b805f1904821115611b7b57611b7b611a32565b029392505050565b5f61060860ff841683611ae5565b634e487b7160e01b5f52601260045260245ffd5b600181811c90821680611bb957607f821691505b602082108103611bd757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610b5c57805f5260205f20601f840160051c81016020851015611c025750805b601f840160051c820191505b81811015610fb7575f8155600101611c0e565b815167ffffffffffffffff811115611c3b57611c3b61192b565b611c4f81611c498454611ba5565b84611bdd565b602080601f831160018114611c82575f8415611c6b5750858301515b5f19600386901b1c1916600185901b178555611cd9565b5f85815260208120601f198616915b82811015611cb057888601518255948401946001909101908401611c91565b5085821015611ccd57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680611d1357634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056"; + hex"608060405234801561000f575f80fd5b50600436106101b0575f3560e01c806370a08231116100f3578063c4d66de811610093578063ce96cb771161006e578063ce96cb77146103c9578063d905777e146103dc578063dd62ed3e146103ef578063ef8b30f7146103b6575f80fd5b8063c4d66de8146103a3578063c63d75b6146102bb578063c6e6f592146103b6575f80fd5b8063a9059cbb116100ce578063a9059cbb14610357578063b3d7f6b91461036a578063b460af941461037d578063ba08765214610390575f80fd5b806370a08231146102f557806394bf804d1461033c57806395d89b411461034f575f80fd5b806323b872dd1161015e578063402d267d11610139578063402d267d146102bb578063439fab91146102cf5780634cdad506146101e45780636e553f65146102e2575f80fd5b806323b872dd14610254578063313ce5671461026757806338d52e0f14610281575f80fd5b8063095ea7b31161018e578063095ea7b3146101f75780630a28a4771461021a57806318160ddd1461022d575f80fd5b806301e1d114146101b457806306fdde03146101cf57806307a2d13a146101e4575b5f80fd5b6101bc610446565b6040519081526020015b60405180910390f35b6101d76104fe565b6040516101c6919061169e565b6101bc6101f23660046116d3565b6105b6565b61020a6102053660046116fe565b6105c7565b60405190151581526020016101c6565b6101bc6102283660046116d3565b6105de565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546101bc565b61020a610262366004611728565b6105ea565b61026f61060f565b60405160ff90911681526020016101c6565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546040516001600160a01b0390911681526020016101c6565b6101bc6102c9366004611766565b505f1990565b6101bc6102dd366004611781565b610662565b6101bc6102f03660046117ed565b610871565b6101bc610303366004611766565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b6101bc61034a3660046117ed565b6108a2565b6101d76108bd565b61020a6103653660046116fe565b610961565b6101bc6103783660046116d3565b61096e565b6101bc61038b36600461181b565b61097a565b6101bc61039e36600461181b565b6109fc565b6101bc6103b1366004611766565b610a75565b6101bc6103c43660046116d3565b610aa8565b6101bc6103d7366004611766565b610ab3565b6101bc6103ea366004611766565b610abc565b6101bc6103fd36600461185a565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f6104787f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156104d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f99190611886565b905090565b60606105317f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561056b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261059291908101906118b1565b6040516020016105a29190611973565b604051602081830303815290604052905090565b5f6105c1825f610af8565b92915050565b5f336105d4818585610b4f565b5060019392505050565b5f6105c1826001610b61565b5f336105f7858285610baf565b610602858585610c63565b60019150505b9392505050565b5f807f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e0090505f815461065c919074010000000000000000000000000000000000000000900460ff166119b8565b91505090565b5f8061066c610cf2565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156106985750825b90505f8267ffffffffffffffff1660011480156106b45750303b155b9050811580156106c2575080155b156106f9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561074457845468ff00000000000000001916680100000000000000001785555b5f610751888a018a611766565b90506001600160a01b038116610793576040517f7cde9b7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079c81610d1a565b6107c260405180602001604052805f81525060405180602001604052805f815250610d2e565b6040516001600160a01b0382169033907fdf5fabff9e49f8c35d69a1f2d0c5e80c933c31cf836cf70de57e3a6e7dc86ebb905f90a37fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3965050831561086657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505092915050565b5f5f19610882565b60405180910390fd5b5f61088c85610aa8565b905061089a33858784610d44565b949350505050565b5f5f195f6108af8561096e565b905061089a33858388610d44565b60606108f07f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b6001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561092a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261095191908101906118b1565b6040516020016105a291906119d1565b5f336105d4818585610c63565b5f6105c1826001610af8565b5f8061098583610ab3565b9050808511156109da576040517ffe9cceec0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810186905260448101829052606401610879565b5f6109e4866105de565b90506109f33386868985610db4565b95945050505050565b5f80610a0783610abc565b905080851115610a5c576040517fb94abeec0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810186905260448101829052606401610879565b5f610a66866105b6565b90506109f3338686848a610db4565b5f6040517faf1fbb2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c1825f610b61565b5f6105c16101f2835b6001600160a01b0381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0060205260408120546105c1565b5f610608610b04610446565b610b0f906001611a02565b610b1a5f600a611af5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610b469190611a02565b85919085610e53565b610b5c8383836001610e95565b505050565b5f610608610b7082600a611af5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610b9c9190611a02565b610ba4610446565b610b46906001611a02565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610c5d5781811015610c4f576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610879565b610c5d84848484035f610e95565b50505050565b6001600160a01b038316610ca5576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038216610ce7576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610b5c838383610fbe565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006105c1565b610d22611115565b610d2b81611155565b50565b610d36611115565b610d408282611219565b5050565b610d4e848361127c565b610d5883826112b8565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051610da6929190918252602082015260400190565b60405180910390a350505050565b826001600160a01b0316856001600160a01b031614610dd857610dd8838683610baf565b610de28382611305565b610dec8483611352565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610e44929190918252602082015260400190565b60405180910390a45050505050565b5f610e80610e608361138d565b8015610e7b57505f8480610e7657610e76611b03565b868809115b151590565b610e8b8686866113b9565b6109f39190611a02565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516610ef8576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038416610f3a576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610fb757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610fae91815260200190565b60405180910390a35b5050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b03841661100b5781816002015f8282546110009190611a02565b909155506110949050565b6001600160a01b0384165f9081526020829052604090205482811015611076576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810182905260448101849052606401610879565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166110b25760028101805483900390556110d0565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610da691815260200190565b61111d611469565b611153576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61115d611115565b7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e005f8061118984611487565b915091508161119957601261119b565b805b83547fffffffffffffffffffffff000000000000000000000000000000000000000000167401000000000000000000000000000000000000000060ff92909216919091027fffffffffffffffffffffffff000000000000000000000000000000000000000016176001600160a01b0394909416939093179091555050565b611221611115565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361126d8482611b93565b5060048101610c5d8382611b93565b610d406112b07f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b8330846114d3565b6001600160a01b0382166112fa576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610d405f8383610fbe565b6001600160a01b038216611347576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610879565b610d40825f83610fbe565b610d406113867f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00546001600160a01b031690565b8383611522565b5f60028260038111156113a2576113a2611c53565b6113ac9190611c67565b60ff166001149050919050565b5f805f6113c68686611570565b91509150815f036113ea578381816113e0576113e0611b03565b0492505050610608565b81841161140157611401600385150260111861158c565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f611472610cf2565b5468010000000000000000900460ff16919050565b7f313ce567000000000000000000000000000000000000000000000000000000005f818152908190602082600481875afa5f51601f3d1190911661010082101695908602945092505050565b6114e184848484600161159d565b610c5d576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610879565b61152f8383836001611623565b610b5c576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610879565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611612578383151615611606573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000005f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f51148316611692578383151615611686573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156116e3575f80fd5b5035919050565b6001600160a01b0381168114610d2b575f80fd5b5f806040838503121561170f575f80fd5b823561171a816116ea565b946020939093013593505050565b5f805f6060848603121561173a575f80fd5b8335611745816116ea565b92506020840135611755816116ea565b929592945050506040919091013590565b5f60208284031215611776575f80fd5b8135610608816116ea565b5f8060208385031215611792575f80fd5b823567ffffffffffffffff808211156117a9575f80fd5b818501915085601f8301126117bc575f80fd5b8135818111156117ca575f80fd5b8660208285010111156117db575f80fd5b60209290920196919550909350505050565b5f80604083850312156117fe575f80fd5b823591506020830135611810816116ea565b809150509250929050565b5f805f6060848603121561182d575f80fd5b83359250602084013561183f816116ea565b9150604084013561184f816116ea565b809150509250925092565b5f806040838503121561186b575f80fd5b8235611876816116ea565b91506020830135611810816116ea565b5f60208284031215611896575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156118c1575f80fd5b815167ffffffffffffffff808211156118d8575f80fd5b818401915084601f8301126118eb575f80fd5b8151818111156118fd576118fd61189d565b604051601f8201601f19908116603f011681019083821181831017156119255761192561189d565b8160405282815287602084870101111561193d575f80fd5b8260208601602083015e5f928101602001929092525095945050505050565b5f81518060208401855e5f93019283525090919050565b7f577261707065642000000000000000000000000000000000000000000000000081525f610608600883018461195c565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156105c1576105c16119a4565b7f770000000000000000000000000000000000000000000000000000000000000081525f610608600183018461195c565b808201808211156105c1576105c16119a4565b600181815b80851115611a4f57815f1904821115611a3557611a356119a4565b80851615611a4257918102915b93841c9390800290611a1a565b509250929050565b5f82611a65575060016105c1565b81611a7157505f6105c1565b8160018114611a875760028114611a9157611aad565b60019150506105c1565b60ff841115611aa257611aa26119a4565b50506001821b6105c1565b5060208310610133831016604e8410600b8410161715611ad0575081810a6105c1565b611ada8383611a15565b805f1904821115611aed57611aed6119a4565b029392505050565b5f61060860ff841683611a57565b634e487b7160e01b5f52601260045260245ffd5b600181811c90821680611b2b57607f821691505b602082108103611b4957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610b5c57805f5260205f20601f840160051c81016020851015611b745750805b601f840160051c820191505b81811015610fb7575f8155600101611b80565b815167ffffffffffffffff811115611bad57611bad61189d565b611bc181611bbb8454611b17565b84611b4f565b602080601f831160018114611bf4575f8415611bdd5750858301515b5f19600386901b1c1916600185901b178555611c4b565b5f85815260208120601f198616915b82811015611c2257888601518255948401946001909101908401611c03565b5085821015611c3f57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680611c8557634e487b7160e01b5f52601260045260245ffd5b8060ff8416069150509291505056"; diff --git a/src/generated/candidate/StoxWrappedTokenVaultBeacon.pointers.sol b/src/generated/candidate/StoxWrappedTokenVaultBeacon.pointers.sol index d142710b..c995c19c 100644 --- a/src/generated/candidate/StoxWrappedTokenVaultBeacon.pointers.sol +++ b/src/generated/candidate/StoxWrappedTokenVaultBeacon.pointers.sol @@ -14,11 +14,11 @@ bytes32 constant BYTECODE_HASH = bytes32(0x448cd06335de9e79ecdc51aa7c6647926860a /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0xa699659Aab26371e6414D01bCba6986714Ac1063); +address constant DEPLOYED_ADDRESS = address(0x844C72Ce098927ffd89C23cF6B6691972Faf78CC); /// @dev The creation bytecode of the contract. bytes constant CREATION_CODE = - hex"608060405234801561000f575f80fd5b507309e409fbc6896c4ca7440bd49ba52173ba4cc0cf738e4bdeec7ceb9570d440676345da1dce10329f5b80610049565b60405180910390fd5b61005281610063565b5061005c826100b2565b5050610130565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036100e75760405163211eb15960e21b81526001600160a01b0382166004820152602401610040565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6102d88061013d5f395ff3fe608060405234801561000f575f80fd5b5060043610610064575f3560e01c8063715018a61161004d578063715018a6146100a65780638da5cb5b146100ae578063f2fde38b146100be575f80fd5b80633659cfe6146100685780635c60da1b1461007d575b5f80fd5b61007b6100763660046102ab565b6100d1565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61007b6100e5565b5f546001600160a01b031661008a565b61007b6100cc3660046102ab565b6100f8565b6100d9610150565b6100e281610195565b50565b6100ed610150565b6100f65f610244565b565b610100610150565b6001600160a01b038116610147576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b6100e281610244565b5f546001600160a01b031633146100f6576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161013e565b806001600160a01b03163b5f036101e3576040517f847ac5640000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161013e565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102bb575f80fd5b81356001600160a01b03811681146102d1575f80fd5b939250505056"; + hex"608060405234801561000f575f80fd5b5073a2a2e94c9e0382a92b10695017bb925f5f507a8b738e4bdeec7ceb9570d440676345da1dce10329f5b80610049565b60405180910390fd5b61005281610063565b5061005c826100b2565b5050610130565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036100e75760405163211eb15960e21b81526001600160a01b0382166004820152602401610040565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6102d88061013d5f395ff3fe608060405234801561000f575f80fd5b5060043610610064575f3560e01c8063715018a61161004d578063715018a6146100a65780638da5cb5b146100ae578063f2fde38b146100be575f80fd5b80633659cfe6146100685780635c60da1b1461007d575b5f80fd5b61007b6100763660046102ab565b6100d1565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61007b6100e5565b5f546001600160a01b031661008a565b61007b6100cc3660046102ab565b6100f8565b6100d9610150565b6100e281610195565b50565b6100ed610150565b6100f65f610244565b565b610100610150565b6001600160a01b038116610147576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b6100e281610244565b5f546001600160a01b031633146100f6576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161013e565b806001600160a01b03163b5f036101e3576040517f847ac5640000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161013e565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102bb575f80fd5b81356001600160a01b03811681146102d1575f80fd5b939250505056"; /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = diff --git a/src/generated/candidate/StoxWrappedTokenVaultBeaconSetDeployer.pointers.sol b/src/generated/candidate/StoxWrappedTokenVaultBeaconSetDeployer.pointers.sol index cdaac3cd..3dd3f0ae 100644 --- a/src/generated/candidate/StoxWrappedTokenVaultBeaconSetDeployer.pointers.sol +++ b/src/generated/candidate/StoxWrappedTokenVaultBeaconSetDeployer.pointers.sol @@ -10,16 +10,16 @@ pragma solidity ^0.8.25; // file needs the contract to exist so that it can be compiled. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0xffecb06d78a58f60f50c7f90da14c5fe983f5612e2a5deb02446e33766fea7a3); +bytes32 constant BYTECODE_HASH = bytes32(0xf37f5435595b797ebacf389880e6cf17019cfcd43ed617e898814fe27ff6d1c3); /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0xD0395427938c83D5AC663bE80147fF149acE98e7); +address constant DEPLOYED_ADDRESS = address(0x5d94874c29Ba113445a849cfd7223363772A3b72); /// @dev The creation bytecode of the contract. bytes constant CREATION_CODE = - hex"6080604052348015600e575f80fd5b506109468061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063d786858b14610060575b5f80fd5b61004b610046366004610333565b610098565b60405190151581526020015b60405180910390f35b61007361006e366004610379565b610130565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610057565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fd786858b00000000000000000000000000000000000000000000000000000000148061012a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff821661017e576040517fe51a7ce200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73a699659aab26371e6414d01bcba6986714ac10636040516101a090610326565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff0801580156101e4573d5f803e3d5ffd5b506040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f82488d8ab594db2178e4a45b7106aaa804836e608f001b5d7fcb6c3514730b3e910160405180910390a16040805173ffffffffffffffffffffffffffffffffffffffff85811660208301527fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3929084169163439fab9191016040516020818303038152906040526040518263ffffffff1660e01b81526004016102af91906103ac565b6020604051808303815f875af11580156102cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ef91906103ff565b1461012a576040517f09c5931500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61052f8061041783390190565b5f60208284031215610343575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610372575f80fd5b9392505050565b5f60208284031215610389575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610372575f80fd5b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f6020828403121561040f575f80fd5b505191905056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056"; + hex"6080604052348015600e575f80fd5b506109468061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063d786858b14610060575b5f80fd5b61004b610046366004610333565b610098565b60405190151581526020015b60405180910390f35b61007361006e366004610379565b610130565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610057565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fd786858b00000000000000000000000000000000000000000000000000000000148061012a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff821661017e576040517fe51a7ce200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73844c72ce098927ffd89c23cf6b6691972faf78cc6040516101a090610326565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff0801580156101e4573d5f803e3d5ffd5b506040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f82488d8ab594db2178e4a45b7106aaa804836e608f001b5d7fcb6c3514730b3e910160405180910390a16040805173ffffffffffffffffffffffffffffffffffffffff85811660208301527fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3929084169163439fab9191016040516020818303038152906040526040518263ffffffff1660e01b81526004016102af91906103ac565b6020604051808303815f875af11580156102cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ef91906103ff565b1461012a576040517f09c5931500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61052f8061041783390190565b5f60208284031215610343575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610372575f80fd5b9392505050565b5f60208284031215610389575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610372575f80fd5b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f6020828403121561040f575f80fd5b505191905056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056"; /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = - hex"608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063d786858b14610060575b5f80fd5b61004b610046366004610333565b610098565b60405190151581526020015b60405180910390f35b61007361006e366004610379565b610130565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610057565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fd786858b00000000000000000000000000000000000000000000000000000000148061012a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff821661017e576040517fe51a7ce200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73a699659aab26371e6414d01bcba6986714ac10636040516101a090610326565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff0801580156101e4573d5f803e3d5ffd5b506040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f82488d8ab594db2178e4a45b7106aaa804836e608f001b5d7fcb6c3514730b3e910160405180910390a16040805173ffffffffffffffffffffffffffffffffffffffff85811660208301527fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3929084169163439fab9191016040516020818303038152906040526040518263ffffffff1660e01b81526004016102af91906103ac565b6020604051808303815f875af11580156102cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ef91906103ff565b1461012a576040517f09c5931500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61052f8061041783390190565b5f60208284031215610343575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610372575f80fd5b9392505050565b5f60208284031215610389575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610372575f80fd5b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f6020828403121561040f575f80fd5b505191905056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056"; + hex"608060405234801561000f575f80fd5b5060043610610034575f3560e01c806301ffc9a714610038578063d786858b14610060575b5f80fd5b61004b610046366004610333565b610098565b60405190151581526020015b60405180910390f35b61007361006e366004610379565b610130565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610057565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fd786858b00000000000000000000000000000000000000000000000000000000148061012a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff821661017e576040517fe51a7ce200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73844c72ce098927ffd89c23cf6b6691972faf78cc6040516101a090610326565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff0801580156101e4573d5f803e3d5ffd5b506040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f82488d8ab594db2178e4a45b7106aaa804836e608f001b5d7fcb6c3514730b3e910160405180910390a16040805173ffffffffffffffffffffffffffffffffffffffff85811660208301527fe0e57eda3f08f2a93bbe980d3df7f9c315eac41181f58b865a13d917fe769fc3929084169163439fab9191016040516020818303038152906040526040518263ffffffff1660e01b81526004016102af91906103ac565b6020604051808303815f875af11580156102cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ef91906103ff565b1461012a576040517f09c5931500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61052f8061041783390190565b5f60208284031215610343575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610372575f80fd5b9392505050565b5f60208284031215610389575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610372575f80fd5b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f6020828403121561040f575f80fd5b505191905056fe60a060405260405161052f38038061052f83398101604081905261002291610331565b61002c828261003e565b506001600160a01b031660805261040d565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e491906103ed565b82610209565b505050565b6100f76102aa565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d291906103ed565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f61021684846102cb565b905080801561023757505f3d118061023757505f846001600160a01b03163b115b1561024c576102446102de565b9150506102a4565b801561027657604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b3d15610289576102846102f7565b6102a2565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102c95760405163b398979f60e01b815260040160405180910390fd5b565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b80516001600160a01b0381168114610318575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610342575f80fd5b61034b83610302565b60208401519092506001600160401b0380821115610367575f80fd5b818501915085601f83011261037a575f80fd5b81518181111561038c5761038c61031d565b604051601f8201601f19908116603f011681019083821181831017156103b4576103b461031d565b816040528281528860208487010111156103cc575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f602082840312156103fd575f80fd5b61040682610302565b9392505050565b60805161010b6104245f395f6023015261010b5ff3fe608060405261000c61000e565b005b61001e610019610020565b6100b3565b565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906100d1565b905090565b365f80375f80365f845af43d5f803e8080156100cd573d5ff35b3d5ffd5b5f602082840312156100e1575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610104575f80fd5b939250505056"; diff --git a/src/interface/IST0xVaultBeaconSet.sol b/src/interface/IST0xVaultBeaconSet.sol index 21c34ba7..c2660f4b 100644 --- a/src/interface/IST0xVaultBeaconSet.sol +++ b/src/interface/IST0xVaultBeaconSet.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity ^0.8.25; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; /// @title IST0xVaultBeaconSet /// @notice The subset of `OffchainAssetReceiptVaultBeaconSetDeployer` the diff --git a/src/lib/LibAuthoriserInvariants.sol b/src/lib/LibAuthoriserInvariants.sol index 7a948b50..7dc9c951 100644 --- a/src/lib/LibAuthoriserInvariants.sol +++ b/src/lib/LibAuthoriserInvariants.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {LibSafeInvariants} from "./LibSafeInvariants.sol"; import {LibProdDeployV4} from "../generated/LibProdDeployV4.sol"; diff --git a/src/lib/LibBeaconInvariants.sol b/src/lib/LibBeaconInvariants.sol index 196a9bcf..22a2d216 100644 --- a/src/lib/LibBeaconInvariants.sol +++ b/src/lib/LibBeaconInvariants.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; import {LibMigrationInvariant} from "./LibMigrationInvariant.sol"; import {LibProdBeaconsBase} from "./LibProdBeaconsBase.sol"; import {LibProdBeacons0_1_1} from "./LibProdBeacons0_1_1.sol"; diff --git a/src/lib/LibSafeOps.sol b/src/lib/LibSafeOps.sol index 9cfea1e5..654f2888 100644 --- a/src/lib/LibSafeOps.sol +++ b/src/lib/LibSafeOps.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.25; import {Vm} from "forge-std-1.16.1/src/Vm.sol"; import {IGnosisSafe} from "../interface/IGnosisSafe.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; /// @notice Minimal `UpgradeableBeacon` surface used by the beacon n+1 /// helper: the privileged `upgradeTo` mutator. Declared inline so diff --git a/src/lib/LibTimelockInvariants.sol b/src/lib/LibTimelockInvariants.sol index fd258218..c769e536 100644 --- a/src/lib/LibTimelockInvariants.sol +++ b/src/lib/LibTimelockInvariants.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; -import {TimelockController} from "@openzeppelin-contracts-5.6.1/governance/TimelockController.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {TimelockController} from "@openzeppelin-contracts-5.7.0/governance/TimelockController.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {LibSafeInvariants} from "./LibSafeInvariants.sol"; diff --git a/test/concrete/MockERC20.sol b/test/concrete/MockERC20.sol index cab5c5a8..37aa2dfb 100644 --- a/test/concrete/MockERC20.sol +++ b/test/concrete/MockERC20.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {ERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/ERC20.sol"; +import {ERC20} from "@openzeppelin-contracts-5.7.0/token/ERC20/ERC20.sol"; /// @dev Minimal ERC20 for testing name/symbol delegation. contract MockERC20 is ERC20 { diff --git a/test/script/20260619-deploy-v4-authoriser-clone.t.sol b/test/script/20260619-deploy-v4-authoriser-clone.t.sol index ebc9f3ab..f1742796 100644 --- a/test/script/20260619-deploy-v4-authoriser-clone.t.sol +++ b/test/script/20260619-deploy-v4-authoriser-clone.t.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; import {VmSafe} from "forge-std-1.16.1/src/Vm.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {LibCloneFactoryDeploy} from "rain-factory-0.1.1/src/lib/LibCloneFactoryDeploy.sol"; import {ERC1167_PREFIX, ERC1167_SUFFIX} from "rain-extrospection-0.1.1/src/lib/LibExtrospectERC1167Proxy.sol"; diff --git a/test/script/20260623-upgrade-receipt-vaults-to-v4.t.sol b/test/script/20260623-upgrade-receipt-vaults-to-v4.t.sol index e0baa774..46daf27b 100644 --- a/test/script/20260623-upgrade-receipt-vaults-to-v4.t.sol +++ b/test/script/20260623-upgrade-receipt-vaults-to-v4.t.sol @@ -5,7 +5,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; import {IAuthorizableV1} from "rain-vats-0.1.6/src/interface/IAuthorizableV1.sol"; import {LibBeaconInvariants} from "../../src/lib/LibBeaconInvariants.sol"; diff --git a/test/script/20260706-deploy-tokens-ethereum.t.sol b/test/script/20260706-deploy-tokens-ethereum.t.sol index 1e1d93f8..0928854e 100644 --- a/test/script/20260706-deploy-tokens-ethereum.t.sol +++ b/test/script/20260706-deploy-tokens-ethereum.t.sol @@ -11,8 +11,8 @@ import { OwnershipHandoffFailed } from "../../script/20260706-deploy-tokens-ethereum.s.sol"; import {LibTokenInvariants, TokenInstance} from "../../src/lib/LibTokenInvariants.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {LibAuthoriserInvariants, RoleGrant} from "../../src/lib/LibAuthoriserInvariants.sol"; import {LibSafeInvariants} from "../../src/lib/LibSafeInvariants.sol"; import {LibProdDeployV4} from "../../src/generated/LibProdDeployV4.sol"; diff --git a/test/script/20260723-provision-additional-service-signer.prod.t.sol b/test/script/20260723-provision-additional-service-signer.prod.t.sol index 26d3c4b8..d0bf4c61 100644 --- a/test/script/20260723-provision-additional-service-signer.prod.t.sol +++ b/test/script/20260723-provision-additional-service-signer.prod.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import { diff --git a/test/script/20260723-provision-additional-service-signer.t.sol b/test/script/20260723-provision-additional-service-signer.t.sol index 6ea03248..bf672039 100644 --- a/test/script/20260723-provision-additional-service-signer.t.sol +++ b/test/script/20260723-provision-additional-service-signer.t.sol @@ -3,8 +3,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; -import {Clones} from "@openzeppelin-contracts-5.6.1/proxy/Clones.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; +import {Clones} from "@openzeppelin-contracts-5.7.0/proxy/Clones.sol"; import {ICLONEABLE_V2_SUCCESS} from "rain-factory-0.1.1/src/interface/ICloneableV2.sol"; import { OffchainAssetReceiptVaultAuthorizerV1Config diff --git a/test/script/20260729-migrate-governance-to-timelock.t.sol b/test/script/20260729-migrate-governance-to-timelock.t.sol index 00f7f953..e515f063 100644 --- a/test/script/20260729-migrate-governance-to-timelock.t.sol +++ b/test/script/20260729-migrate-governance-to-timelock.t.sol @@ -3,11 +3,11 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; -import {TimelockController} from "@openzeppelin-contracts-5.6.1/governance/TimelockController.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; -import {UpgradeableBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/UpgradeableBeacon.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; +import {TimelockController} from "@openzeppelin-contracts-5.7.0/governance/TimelockController.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; +import {UpgradeableBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/UpgradeableBeacon.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {DeployGovernanceTimelockHarness} from "./DeployGovernanceTimelockHarness.sol"; diff --git a/test/script/20260807-deploy-missing-tokens.t.sol b/test/script/20260807-deploy-missing-tokens.t.sol index 0f1c3f53..6ea07df7 100644 --- a/test/script/20260807-deploy-missing-tokens.t.sol +++ b/test/script/20260807-deploy-missing-tokens.t.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; import {Vm} from "forge-std-1.16.1/src/Vm.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; import { AuthoriserNotReady, AuthoriserNotWired, diff --git a/test/script/20260810-revoke-fireblocks-service-signer.prod.t.sol b/test/script/20260810-revoke-fireblocks-service-signer.prod.t.sol index 6c5ce6a4..8b0d958f 100644 --- a/test/script/20260810-revoke-fireblocks-service-signer.prod.t.sol +++ b/test/script/20260810-revoke-fireblocks-service-signer.prod.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {RevokeFireblocksServiceSigner} from "../../script/20260810-revoke-fireblocks-service-signer.s.sol"; diff --git a/test/script/20260810-revoke-fireblocks-service-signer.t.sol b/test/script/20260810-revoke-fireblocks-service-signer.t.sol index 7ee09eb0..217bc0ba 100644 --- a/test/script/20260810-revoke-fireblocks-service-signer.t.sol +++ b/test/script/20260810-revoke-fireblocks-service-signer.t.sol @@ -3,8 +3,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; -import {Clones} from "@openzeppelin-contracts-5.6.1/proxy/Clones.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; +import {Clones} from "@openzeppelin-contracts-5.7.0/proxy/Clones.sol"; import {ICLONEABLE_V2_SUCCESS} from "rain-factory-0.1.1/src/interface/ICloneableV2.sol"; import { OffchainAssetReceiptVaultAuthorizerV1Config diff --git a/test/src/concrete/InvariantVault.sol b/test/src/concrete/InvariantVault.sol index c0fe9b58..8439345d 100644 --- a/test/src/concrete/InvariantVault.sol +++ b/test/src/concrete/InvariantVault.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {StoxReceiptVault} from "../../../src/concrete/StoxReceiptVault.sol"; -import {ERC20Upgradeable} from "@openzeppelin-contracts-upgradeable-5.6.1/token/ERC20/ERC20Upgradeable.sol"; +import {ERC20Upgradeable} from "@openzeppelin-contracts-upgradeable-5.7.0/token/ERC20/ERC20Upgradeable.sol"; import {LibCorporateAction} from "../../../src/lib/LibCorporateAction.sol"; import {ACTION_TYPE_STOCK_SPLIT_V1} from "../../../src/interface/ICorporateActionsV1.sol"; import {LibERC20Storage} from "../../../src/lib/LibERC20Storage.sol"; diff --git a/test/src/concrete/Mock1271.sol b/test/src/concrete/Mock1271.sol index fa9eb857..b6719d99 100644 --- a/test/src/concrete/Mock1271.sol +++ b/test/src/concrete/Mock1271.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity =0.8.25; -import {IERC1271} from "@openzeppelin-contracts-5.6.1/interfaces/IERC1271.sol"; +import {IERC1271} from "@openzeppelin-contracts-5.7.0/interfaces/IERC1271.sol"; /// @dev EIP-1271 recipient mock. Returns the magic value when `accept`. contract Mock1271 is IERC1271 { diff --git a/test/src/concrete/ST0xOrchestrator.t.sol b/test/src/concrete/ST0xOrchestrator.t.sol index 73159d66..93e41b91 100644 --- a/test/src/concrete/ST0xOrchestrator.t.sol +++ b/test/src/concrete/ST0xOrchestrator.t.sol @@ -9,22 +9,22 @@ import {IST0xVaultBeaconSet} from "../../../src/interface/IST0xVaultBeaconSet.so import {IST0xOrchestratorV1, MintAuthV1, Digest} from "../../../src/interface/IST0xOrchestratorV1.sol"; import {LibProdDeployV4} from "../../../src/generated/LibProdDeployV4.sol"; -import {Initializable} from "@openzeppelin-contracts-upgradeable-5.6.1/proxy/utils/Initializable.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; -import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; -import {IERC1155} from "@openzeppelin-contracts-5.6.1/token/ERC1155/IERC1155.sol"; -import {IERC1155Receiver} from "@openzeppelin-contracts-5.6.1/token/ERC1155/IERC1155Receiver.sol"; -import {IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; -import {UpgradeableBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/UpgradeableBeacon.sol"; -import {BeaconProxy} from "@openzeppelin-contracts-5.6.1/proxy/beacon/BeaconProxy.sol"; -import {IERC1271} from "@openzeppelin-contracts-5.6.1/interfaces/IERC1271.sol"; +import {Initializable} from "@openzeppelin-contracts-upgradeable-5.7.0/proxy/utils/Initializable.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; +import {IERC20} from "@openzeppelin-contracts-5.7.0/token/ERC20/IERC20.sol"; +import {IERC1155} from "@openzeppelin-contracts-5.7.0/token/ERC1155/IERC1155.sol"; +import {IERC1155Receiver} from "@openzeppelin-contracts-5.7.0/token/ERC1155/IERC1155Receiver.sol"; +import {IERC165} from "@openzeppelin-contracts-5.7.0/utils/introspection/IERC165.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; +import {UpgradeableBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/UpgradeableBeacon.sol"; +import {BeaconProxy} from "@openzeppelin-contracts-5.7.0/proxy/beacon/BeaconProxy.sol"; +import {IERC1271} from "@openzeppelin-contracts-5.7.0/interfaces/IERC1271.sol"; import {Mock1271} from "./Mock1271.sol"; import {MockMintRecipient} from "./MockMintRecipient.sol"; import {ReentrantMintRecipient} from "./ReentrantMintRecipient.sol"; import {ReentrantBurnVault} from "./ReentrantBurnVault.sol"; import {MockManagerRevert1155} from "./MockManagerRevert1155.sol"; -import {ReentrancyGuardTransient} from "@openzeppelin-contracts-5.6.1/utils/ReentrancyGuardTransient.sol"; +import {ReentrancyGuardTransient} from "@openzeppelin-contracts-5.7.0/utils/ReentrancyGuardTransient.sol"; import {OffchainAssetReceiptVault} from "rain-vats-0.1.6/src/concrete/vault/OffchainAssetReceiptVault.sol"; import {ReceiptVault} from "rain-vats-0.1.6/src/abstract/ReceiptVault.sol"; import {IReceiptV3} from "rain-vats-0.1.6/src/interface/IReceiptV3.sol"; diff --git a/test/src/concrete/StoxCorporateActionsFacet.authorizerIntegration.t.sol b/test/src/concrete/StoxCorporateActionsFacet.authorizerIntegration.t.sol index ddcc292e..ab39786f 100644 --- a/test/src/concrete/StoxCorporateActionsFacet.authorizerIntegration.t.sol +++ b/test/src/concrete/StoxCorporateActionsFacet.authorizerIntegration.t.sol @@ -15,7 +15,7 @@ import { CANCEL_CORPORATE_ACTION_ADMIN } from "../../../src/concrete/authorize/StoxOffchainAssetReceiptVaultAuthorizerV1.sol"; import {Unauthorized} from "rain-vats-0.1.6/src/interface/IAuthorizeV1.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {CloneFactory} from "rain-factory-0.1.1/src/concrete/CloneFactory.sol"; /// @title StoxCorporateActionsFacetAuthorizerIntegrationTest diff --git a/test/src/concrete/StoxReceipt.t.sol b/test/src/concrete/StoxReceipt.t.sol index 942f0e9a..cbdcffaa 100644 --- a/test/src/concrete/StoxReceipt.t.sol +++ b/test/src/concrete/StoxReceipt.t.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; import {StoxReceipt} from "../../../src/concrete/StoxReceipt.sol"; -import {Initializable} from "@openzeppelin-contracts-upgradeable-5.6.1/proxy/utils/Initializable.sol"; +import {Initializable} from "@openzeppelin-contracts-upgradeable-5.7.0/proxy/utils/Initializable.sol"; contract StoxReceiptTest is Test { /// Constructor disables initializers on the implementation. diff --git a/test/src/concrete/StoxReceiptRebaseIntegrationTest.t.sol b/test/src/concrete/StoxReceiptRebaseIntegrationTest.t.sol index 629716b8..0855553e 100644 --- a/test/src/concrete/StoxReceiptRebaseIntegrationTest.t.sol +++ b/test/src/concrete/StoxReceiptRebaseIntegrationTest.t.sol @@ -12,7 +12,7 @@ import { CORPORATE_ACTION_RECEIPT_STORAGE_LOCATION } from "../../../src/lib/LibCorporateActionReceipt.sol"; import {IReceiptManagerV2} from "rain-vats-0.1.6/src/interface/IReceiptManagerV2.sol"; -import {IERC1155Errors} from "@openzeppelin-contracts-5.6.1/interfaces/draft-IERC6093.sol"; +import {IERC1155Errors} from "@openzeppelin-contracts-5.7.0/interfaces/draft-IERC6093.sol"; import {MockVault} from "./MockVault.sol"; import {TestStoxReceipt} from "./TestStoxReceipt.sol"; import {RecordingReceiver} from "./RecordingReceiver.sol"; diff --git a/test/src/concrete/StoxReceiptVault.setAuthorizerGuard.t.sol b/test/src/concrete/StoxReceiptVault.setAuthorizerGuard.t.sol index 8f794a45..48446369 100644 --- a/test/src/concrete/StoxReceiptVault.setAuthorizerGuard.t.sol +++ b/test/src/concrete/StoxReceiptVault.setAuthorizerGuard.t.sol @@ -20,8 +20,8 @@ import { import {IAuthorizeV1} from "rain-vats-0.1.6/src/interface/IAuthorizeV1.sol"; import {CloneFactory} from "rain-factory-0.1.1/src/concrete/CloneFactory.sol"; import {VerifyAlwaysApproved} from "rain-verify-interface-0.1.0/src/concrete/VerifyAlwaysApproved.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; -import {IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; +import {IERC165} from "@openzeppelin-contracts-5.7.0/utils/introspection/IERC165.sol"; import { IncompatibleAuthorizer, OffchainAssetReceiptVault @@ -29,7 +29,7 @@ import { import {AuthorizerMissingCorporateActionAdmin} from "../../../src/error/ErrCorporateAction.sol"; import {SCHEDULE_CORPORATE_ACTION, CANCEL_CORPORATE_ACTION} from "../../../src/lib/LibCorporateAction.sol"; import {MockERC20} from "../../concrete/MockERC20.sol"; -import {OwnableUpgradeable} from "@openzeppelin-contracts-upgradeable-5.6.1/access/OwnableUpgradeable.sol"; +import {OwnableUpgradeable} from "@openzeppelin-contracts-upgradeable-5.7.0/access/OwnableUpgradeable.sol"; /// @title StoxReceiptVault setAuthorizer guard /// @notice Pins that `StoxReceiptVault.setAuthorizer` rejects authorizers diff --git a/test/src/concrete/StoxReceiptVault.t.sol b/test/src/concrete/StoxReceiptVault.t.sol index 94e75253..c2887722 100644 --- a/test/src/concrete/StoxReceiptVault.t.sol +++ b/test/src/concrete/StoxReceiptVault.t.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; import {StoxReceiptVault} from "../../../src/concrete/StoxReceiptVault.sol"; -import {Initializable} from "@openzeppelin-contracts-upgradeable-5.6.1/proxy/utils/Initializable.sol"; +import {Initializable} from "@openzeppelin-contracts-upgradeable-5.7.0/proxy/utils/Initializable.sol"; contract StoxReceiptVaultTest is Test { /// Constructor disables initializers on the implementation. diff --git a/test/src/concrete/StoxReceiptVaultMigrationIntegrationTest.t.sol b/test/src/concrete/StoxReceiptVaultMigrationIntegrationTest.t.sol index cf0d6eea..5997cf6e 100644 --- a/test/src/concrete/StoxReceiptVaultMigrationIntegrationTest.t.sol +++ b/test/src/concrete/StoxReceiptVaultMigrationIntegrationTest.t.sol @@ -5,8 +5,8 @@ pragma solidity =0.8.25; import {Test, Vm} from "forge-std-1.16.1/src/Test.sol"; import {Float, LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; import {StoxReceiptVault} from "../../../src/concrete/StoxReceiptVault.sol"; -import {ERC20Upgradeable} from "@openzeppelin-contracts-upgradeable-5.6.1/token/ERC20/ERC20Upgradeable.sol"; -import {IERC20Errors} from "@openzeppelin-contracts-5.6.1/interfaces/draft-IERC6093.sol"; +import {ERC20Upgradeable} from "@openzeppelin-contracts-upgradeable-5.7.0/token/ERC20/ERC20Upgradeable.sol"; +import {IERC20Errors} from "@openzeppelin-contracts-5.7.0/interfaces/draft-IERC6093.sol"; import {NODE_NONE} from "../../../src/lib/LibCorporateActionNode.sol"; import { ACTION_TYPE_STOCK_SPLIT_V1, diff --git a/test/src/concrete/StoxWrappedTokenVault.t.sol b/test/src/concrete/StoxWrappedTokenVault.t.sol index 2b0b893f..db38af10 100644 --- a/test/src/concrete/StoxWrappedTokenVault.t.sol +++ b/test/src/concrete/StoxWrappedTokenVault.t.sol @@ -5,7 +5,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; import {StoxWrappedTokenVault, ZeroAsset} from "../../../src/concrete/StoxWrappedTokenVault.sol"; import {ICloneableV2, ICLONEABLE_V2_SUCCESS} from "rain-factory-0.1.1/src/interface/ICloneableV2.sol"; -import {BeaconProxy} from "@openzeppelin-contracts-5.6.1/proxy/beacon/BeaconProxy.sol"; +import {BeaconProxy} from "@openzeppelin-contracts-5.7.0/proxy/beacon/BeaconProxy.sol"; import { StoxWrappedTokenVaultBeaconSetDeployer, ZeroVaultAsset @@ -14,7 +14,7 @@ import {StoxWrappedTokenVaultBeacon} from "../../../src/concrete/StoxWrappedToke import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {LibProdDeployV4} from "../../../src/generated/LibProdDeployV4.sol"; import {LibTestDeploy} from "../../lib/LibTestDeploy.sol"; -import {Initializable} from "@openzeppelin-contracts-upgradeable-5.6.1/proxy/utils/Initializable.sol"; +import {Initializable} from "@openzeppelin-contracts-upgradeable-5.7.0/proxy/utils/Initializable.sol"; import {MockERC20} from "../../concrete/MockERC20.sol"; contract StoxWrappedTokenVaultTest is Test { diff --git a/test/src/concrete/StoxWrappedTokenVaultBeacon.t.sol b/test/src/concrete/StoxWrappedTokenVaultBeacon.t.sol index 23ce40ea..ec263400 100644 --- a/test/src/concrete/StoxWrappedTokenVaultBeacon.t.sol +++ b/test/src/concrete/StoxWrappedTokenVaultBeacon.t.sol @@ -8,8 +8,8 @@ import {StoxWrappedTokenVault} from "../../../src/concrete/StoxWrappedTokenVault import {StoxWrappedTokenVaultBeacon} from "../../../src/concrete/StoxWrappedTokenVaultBeacon.sol"; import {LibProdDeployV1} from "../../../src/lib/LibProdDeployV1.sol"; import {LibProdDeployV4} from "../../../src/generated/LibProdDeployV4.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; -import {UpgradeableBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/UpgradeableBeacon.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; +import {UpgradeableBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/UpgradeableBeacon.sol"; contract StoxWrappedTokenVaultBeaconTest is Test { function deployBeacon() internal returns (address) { diff --git a/test/src/concrete/StoxWrappedTokenVaultV1.prod.base.t.sol b/test/src/concrete/StoxWrappedTokenVaultV1.prod.base.t.sol index bfcc8b91..a3dcd04c 100644 --- a/test/src/concrete/StoxWrappedTokenVaultV1.prod.base.t.sol +++ b/test/src/concrete/StoxWrappedTokenVaultV1.prod.base.t.sol @@ -5,8 +5,8 @@ pragma solidity =0.8.25; import {Test, Vm} from "forge-std-1.16.1/src/Test.sol"; import {LibProdDeployV1} from "../../../src/lib/LibProdDeployV1.sol"; import {LibTestProd} from "../../lib/LibTestProd.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; -import {BeaconProxy} from "@openzeppelin-contracts-5.6.1/proxy/beacon/BeaconProxy.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; +import {BeaconProxy} from "@openzeppelin-contracts-5.7.0/proxy/beacon/BeaconProxy.sol"; import {ICLONEABLE_V2_SUCCESS} from "rain-factory-0.1.1/src/interface/ICloneableV2.sol"; /// @title StoxWrappedTokenVaultV1ProdBaseTest diff --git a/test/src/concrete/TestStoxReceiptVault.sol b/test/src/concrete/TestStoxReceiptVault.sol index 4311cc6c..6994ba1d 100644 --- a/test/src/concrete/TestStoxReceiptVault.sol +++ b/test/src/concrete/TestStoxReceiptVault.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {StoxReceiptVault} from "../../../src/concrete/StoxReceiptVault.sol"; -import {ERC20Upgradeable} from "@openzeppelin-contracts-upgradeable-5.6.1/token/ERC20/ERC20Upgradeable.sol"; +import {ERC20Upgradeable} from "@openzeppelin-contracts-upgradeable-5.7.0/token/ERC20/ERC20Upgradeable.sol"; import {LibCorporateAction} from "../../../src/lib/LibCorporateAction.sol"; import {LibERC20Storage} from "../../../src/lib/LibERC20Storage.sol"; import {LibTotalSupply} from "../../../src/lib/LibTotalSupply.sol"; diff --git a/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultAuthorizerV1.initializeGuard.t.sol b/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultAuthorizerV1.initializeGuard.t.sol index d5fe91d4..f243b4e2 100644 --- a/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultAuthorizerV1.initializeGuard.t.sol +++ b/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultAuthorizerV1.initializeGuard.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {Clones} from "@openzeppelin-contracts-5.6.1/proxy/Clones.sol"; +import {Clones} from "@openzeppelin-contracts-5.7.0/proxy/Clones.sol"; import {SCHEDULE_CORPORATE_ACTION, CANCEL_CORPORATE_ACTION} from "../../../../src/lib/LibCorporateAction.sol"; import { OffchainAssetReceiptVaultAuthorizerV1Config diff --git a/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultAuthorizerV1.t.sol b/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultAuthorizerV1.t.sol index beaeb70c..3f687998 100644 --- a/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultAuthorizerV1.t.sol +++ b/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultAuthorizerV1.t.sol @@ -6,7 +6,7 @@ import {Test} from "forge-std-1.16.1/src/Test.sol"; import { StoxOffchainAssetReceiptVaultAuthorizerV1 } from "../../../../src/concrete/authorize/StoxOffchainAssetReceiptVaultAuthorizerV1.sol"; -import {Initializable} from "@openzeppelin-contracts-upgradeable-5.6.1/proxy/utils/Initializable.sol"; +import {Initializable} from "@openzeppelin-contracts-upgradeable-5.7.0/proxy/utils/Initializable.sol"; contract StoxOffchainAssetReceiptVaultAuthorizerV1Test is Test { /// Constructor disables initializers on the implementation. diff --git a/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.corporateActionPairingGap.t.sol b/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.corporateActionPairingGap.t.sol index 667c474c..5a61730f 100644 --- a/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.corporateActionPairingGap.t.sol +++ b/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.corporateActionPairingGap.t.sol @@ -11,7 +11,7 @@ import { } from "rain-vats-0.1.6/src/concrete/authorize/OffchainAssetReceiptVaultPaymentMintAuthorizerV1.sol"; import {CloneFactory} from "rain-factory-0.1.1/src/concrete/CloneFactory.sol"; import {VerifyAlwaysApproved} from "rain-verify-interface-0.1.0/src/concrete/VerifyAlwaysApproved.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {SCHEDULE_CORPORATE_ACTION, CANCEL_CORPORATE_ACTION} from "../../../../src/lib/LibCorporateAction.sol"; import {MockERC20} from "../../../concrete/MockERC20.sol"; diff --git a/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.t.sol b/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.t.sol index 4b6ad75c..c134b498 100644 --- a/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.t.sol +++ b/test/src/concrete/authorize/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.t.sol @@ -6,7 +6,7 @@ import {Test} from "forge-std-1.16.1/src/Test.sol"; import { StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1 } from "../../../../src/concrete/authorize/StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1.sol"; -import {Initializable} from "@openzeppelin-contracts-upgradeable-5.6.1/proxy/utils/Initializable.sol"; +import {Initializable} from "@openzeppelin-contracts-upgradeable-5.7.0/proxy/utils/Initializable.sol"; contract StoxOffchainAssetReceiptVaultPaymentMintAuthorizerV1Test is Test { /// Constructor disables initializers on the implementation. diff --git a/test/src/concrete/deploy/BeaconOwnerMigrationPin.t.sol b/test/src/concrete/deploy/BeaconOwnerMigrationPin.t.sol index f07980d2..d72f4709 100644 --- a/test/src/concrete/deploy/BeaconOwnerMigrationPin.t.sol +++ b/test/src/concrete/deploy/BeaconOwnerMigrationPin.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {LibBeaconInvariants} from "../../../../src/lib/LibBeaconInvariants.sol"; import {LibMigrationInvariant} from "../../../../src/lib/LibMigrationInvariant.sol"; diff --git a/test/src/concrete/deploy/GovernanceTimelockMigration.t.sol b/test/src/concrete/deploy/GovernanceTimelockMigration.t.sol index 150d0782..bb987dfe 100644 --- a/test/src/concrete/deploy/GovernanceTimelockMigration.t.sol +++ b/test/src/concrete/deploy/GovernanceTimelockMigration.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {LibAuthoriserInvariants, RoleGrant} from "../../../../src/lib/LibAuthoriserInvariants.sol"; diff --git a/test/src/concrete/deploy/ST0xOrchestratorBeaconSetDeployer.t.sol b/test/src/concrete/deploy/ST0xOrchestratorBeaconSetDeployer.t.sol index caa0665f..1c3912b8 100644 --- a/test/src/concrete/deploy/ST0xOrchestratorBeaconSetDeployer.t.sol +++ b/test/src/concrete/deploy/ST0xOrchestratorBeaconSetDeployer.t.sol @@ -3,10 +3,10 @@ pragma solidity =0.8.25; import {Test, Vm} from "forge-std-1.16.1/src/Test.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; -import {UpgradeableBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/UpgradeableBeacon.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; -import {IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; +import {UpgradeableBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/UpgradeableBeacon.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; +import {IERC165} from "@openzeppelin-contracts-5.7.0/utils/introspection/IERC165.sol"; import { ST0xOrchestratorBeaconSetDeployer, diff --git a/test/src/concrete/deploy/StoxCrossChainParity.t.sol b/test/src/concrete/deploy/StoxCrossChainParity.t.sol index 8148756a..aaa7e090 100644 --- a/test/src/concrete/deploy/StoxCrossChainParity.t.sol +++ b/test/src/concrete/deploy/StoxCrossChainParity.t.sol @@ -3,10 +3,10 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; -import {IERC4626} from "@openzeppelin-contracts-5.6.1/interfaces/IERC4626.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; -import {ERC1967Utils} from "@openzeppelin-contracts-5.6.1/proxy/ERC1967/ERC1967Utils.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.7.0/token/ERC20/extensions/IERC20Metadata.sol"; +import {IERC4626} from "@openzeppelin-contracts-5.7.0/interfaces/IERC4626.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; +import {ERC1967Utils} from "@openzeppelin-contracts-5.7.0/proxy/ERC1967/ERC1967Utils.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {IGnosisSafe} from "../../../../src/interface/IGnosisSafe.sol"; import {IOwnable} from "../../../../src/interface/IOwnable.sol"; diff --git a/test/src/concrete/deploy/StoxProdV2.t.sol b/test/src/concrete/deploy/StoxProdV2.t.sol index aff4534c..99b3133e 100644 --- a/test/src/concrete/deploy/StoxProdV2.t.sol +++ b/test/src/concrete/deploy/StoxProdV2.t.sol @@ -9,8 +9,8 @@ import {LibSafeInvariants} from "../../../../src/lib/LibSafeInvariants.sol"; import {LibInvariants} from "../../../../src/lib/LibInvariants.sol"; import {IGnosisSafe} from "../../../../src/interface/IGnosisSafe.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; import { IOffchainAssetReceiptVaultBeaconSetDeployerV1 } from "rain-vats-0.1.6/src/interface/IOffchainAssetReceiptVaultBeaconSetDeployerV1.sol"; diff --git a/test/src/concrete/deploy/StoxProdV4.t.sol b/test/src/concrete/deploy/StoxProdV4.t.sol index 6700e02e..dd39cef1 100644 --- a/test/src/concrete/deploy/StoxProdV4.t.sol +++ b/test/src/concrete/deploy/StoxProdV4.t.sol @@ -7,7 +7,7 @@ import {LibProdDeployV4} from "../../../../src/generated/LibProdDeployV4.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {LibStoxDeployNetworks} from "../../../../src/lib/LibStoxDeployNetworks.sol"; import {LibBeaconInvariants} from "../../../../src/lib/LibBeaconInvariants.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; import { IOffchainAssetReceiptVaultBeaconSetDeployerV2 } from "rain-vats-0.1.6/src/interface/IOffchainAssetReceiptVaultBeaconSetDeployerV2.sol"; diff --git a/test/src/concrete/deploy/StoxUnifiedDeployer.ierc165.t.sol b/test/src/concrete/deploy/StoxUnifiedDeployer.ierc165.t.sol index 39467779..4379bdb5 100644 --- a/test/src/concrete/deploy/StoxUnifiedDeployer.ierc165.t.sol +++ b/test/src/concrete/deploy/StoxUnifiedDeployer.ierc165.t.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol"; +import {IERC165} from "@openzeppelin-contracts-5.7.0/utils/introspection/IERC165.sol"; import {StoxUnifiedDeployer} from "../../../../src/concrete/deploy/StoxUnifiedDeployer.sol"; import {IStoxUnifiedDeployerV1} from "../../../../src/interface/IStoxUnifiedDeployerV1.sol"; diff --git a/test/src/concrete/deploy/StoxUnifiedDeployer.prod.base.t.sol b/test/src/concrete/deploy/StoxUnifiedDeployer.prod.base.t.sol index 3bc3e551..6da775a1 100644 --- a/test/src/concrete/deploy/StoxUnifiedDeployer.prod.base.t.sol +++ b/test/src/concrete/deploy/StoxUnifiedDeployer.prod.base.t.sol @@ -16,8 +16,8 @@ import {ReceiptVaultConfigV2} from "rain-vats-0.1.6/src/abstract/ReceiptVault.so import { StoxWrappedTokenVaultBeaconSetDeployer } from "../../../../src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; import {MockERC20} from "../../../concrete/MockERC20.sol"; contract StoxProdBaseTest is Test { diff --git a/test/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.ierc165.t.sol b/test/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.ierc165.t.sol index 2e32ef86..6a5082fb 100644 --- a/test/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.ierc165.t.sol +++ b/test/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.ierc165.t.sol @@ -4,7 +4,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IERC165} from "@openzeppelin-contracts-5.6.1/utils/introspection/IERC165.sol"; +import {IERC165} from "@openzeppelin-contracts-5.7.0/utils/introspection/IERC165.sol"; import { StoxWrappedTokenVaultBeaconSetDeployer } from "../../../../src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.sol"; diff --git a/test/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.t.sol b/test/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.t.sol index 3319060d..846858e4 100644 --- a/test/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.t.sol +++ b/test/src/concrete/deploy/StoxWrappedTokenVaultBeaconSetDeployer.t.sol @@ -15,7 +15,7 @@ import {MockERC20} from "../../../concrete/MockERC20.sol"; import {BadInitializeVault} from "../../../concrete/BadInitializeVault.sol"; import {LibTestDeploy} from "../../../lib/LibTestDeploy.sol"; import {LibProdDeployV4} from "../../../../src/generated/LibProdDeployV4.sol"; -import {UpgradeableBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/UpgradeableBeacon.sol"; +import {UpgradeableBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/UpgradeableBeacon.sol"; contract StoxWrappedTokenVaultBeaconSetDeployerTest is Test { /// newStoxWrappedTokenVault reverts with ZeroVaultAsset when asset is diff --git a/test/src/concrete/integration/BurnAfterForwardSplit.t.sol b/test/src/concrete/integration/BurnAfterForwardSplit.t.sol index 5ef4bb61..09847205 100644 --- a/test/src/concrete/integration/BurnAfterForwardSplit.t.sol +++ b/test/src/concrete/integration/BurnAfterForwardSplit.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity =0.8.25; -import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.7.0/token/ERC20/IERC20.sol"; import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; import {MintAuthV1} from "../../../../src/interface/IST0xOrchestratorV1.sol"; diff --git a/test/src/concrete/integration/BurnFractionalSplitTruncationDust.t.sol b/test/src/concrete/integration/BurnFractionalSplitTruncationDust.t.sol index 255e884f..69f52da8 100644 --- a/test/src/concrete/integration/BurnFractionalSplitTruncationDust.t.sol +++ b/test/src/concrete/integration/BurnFractionalSplitTruncationDust.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity =0.8.25; -import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.7.0/token/ERC20/IERC20.sol"; import {LibDecimalFloat} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; import {IST0xOrchestratorV1, MintAuthV1} from "../../../../src/interface/IST0xOrchestratorV1.sol"; diff --git a/test/src/concrete/integration/BurnHappyPath.t.sol b/test/src/concrete/integration/BurnHappyPath.t.sol index d73eaab8..7e0ae95c 100644 --- a/test/src/concrete/integration/BurnHappyPath.t.sol +++ b/test/src/concrete/integration/BurnHappyPath.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity =0.8.25; -import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.7.0/token/ERC20/IERC20.sol"; import {IST0xOrchestratorV1, MintAuthV1} from "../../../../src/interface/IST0xOrchestratorV1.sol"; import {OrchestratorIntegrationTest} from "./OrchestratorIntegrationTest.sol"; diff --git a/test/src/concrete/integration/BurnInfoAuditTrail.t.sol b/test/src/concrete/integration/BurnInfoAuditTrail.t.sol index e1dc25b7..3c0416c3 100644 --- a/test/src/concrete/integration/BurnInfoAuditTrail.t.sol +++ b/test/src/concrete/integration/BurnInfoAuditTrail.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity =0.8.25; -import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.7.0/token/ERC20/IERC20.sol"; import {IReceiptVaultV1} from "rain-vats-0.1.6/src/interface/deprecated/IReceiptVaultV1.sol"; import {IReceiptV3} from "rain-vats-0.1.6/src/interface/IReceiptV3.sol"; diff --git a/test/src/concrete/integration/CertificationLapse.t.sol b/test/src/concrete/integration/CertificationLapse.t.sol index f55c98a5..8051a1d9 100644 --- a/test/src/concrete/integration/CertificationLapse.t.sol +++ b/test/src/concrete/integration/CertificationLapse.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity =0.8.25; -import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.7.0/token/ERC20/IERC20.sol"; import {CertificationExpired} from "rain-vats-0.1.6/src/concrete/authorize/OffchainAssetReceiptVaultAuthorizerV1.sol"; import {MintAuthV1} from "../../../../src/interface/IST0xOrchestratorV1.sol"; diff --git a/test/src/concrete/integration/GuardHaltsAfterVaultBeaconUpgrade.t.sol b/test/src/concrete/integration/GuardHaltsAfterVaultBeaconUpgrade.t.sol index c35bbff9..8f8d59b2 100644 --- a/test/src/concrete/integration/GuardHaltsAfterVaultBeaconUpgrade.t.sol +++ b/test/src/concrete/integration/GuardHaltsAfterVaultBeaconUpgrade.t.sol @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity =0.8.25; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; -import {UpgradeableBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/UpgradeableBeacon.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; +import {UpgradeableBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/UpgradeableBeacon.sol"; import {ST0xOrchestrator} from "../../../../src/concrete/ST0xOrchestrator.sol"; import {IST0xOrchestratorV1, MintAuthV1} from "../../../../src/interface/IST0xOrchestratorV1.sol"; diff --git a/test/src/concrete/integration/MintWithEcdsaSignature.t.sol b/test/src/concrete/integration/MintWithEcdsaSignature.t.sol index ef8253bf..b1236b11 100644 --- a/test/src/concrete/integration/MintWithEcdsaSignature.t.sol +++ b/test/src/concrete/integration/MintWithEcdsaSignature.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity =0.8.25; -import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.7.0/token/ERC20/IERC20.sol"; import {Unauthorized} from "rain-vats-0.1.6/src/interface/IAuthorizeV1.sol"; import {ST0xOrchestrator} from "../../../../src/concrete/ST0xOrchestrator.sol"; diff --git a/test/src/concrete/integration/OrchestratorIntegrationTest.sol b/test/src/concrete/integration/OrchestratorIntegrationTest.sol index d7e3faae..95a56a1c 100644 --- a/test/src/concrete/integration/OrchestratorIntegrationTest.sol +++ b/test/src/concrete/integration/OrchestratorIntegrationTest.sol @@ -4,9 +4,9 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IERC1155} from "@openzeppelin-contracts-5.6.1/token/ERC1155/IERC1155.sol"; -import {UpgradeableBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/UpgradeableBeacon.sol"; -import {BeaconProxy} from "@openzeppelin-contracts-5.6.1/proxy/beacon/BeaconProxy.sol"; +import {IERC1155} from "@openzeppelin-contracts-5.7.0/token/ERC1155/IERC1155.sol"; +import {UpgradeableBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/UpgradeableBeacon.sol"; +import {BeaconProxy} from "@openzeppelin-contracts-5.7.0/proxy/beacon/BeaconProxy.sol"; import {CloneFactory} from "rain-factory-0.1.1/src/concrete/CloneFactory.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {Float} from "rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol"; diff --git a/test/src/concrete/integration/ReceiptTransferInLowersPointer.t.sol b/test/src/concrete/integration/ReceiptTransferInLowersPointer.t.sol index 1c605126..fd69c5f2 100644 --- a/test/src/concrete/integration/ReceiptTransferInLowersPointer.t.sol +++ b/test/src/concrete/integration/ReceiptTransferInLowersPointer.t.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 S01 Issuer GmbH pragma solidity =0.8.25; -import {IERC20} from "@openzeppelin-contracts-5.6.1/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin-contracts-5.7.0/token/ERC20/IERC20.sol"; import {IST0xOrchestratorV1, MintAuthV1} from "../../../../src/interface/IST0xOrchestratorV1.sol"; import {OrchestratorIntegrationTest} from "./OrchestratorIntegrationTest.sol"; diff --git a/test/src/concrete/upgrade/V3UpgradeShadowFork.t.sol b/test/src/concrete/upgrade/V3UpgradeShadowFork.t.sol index 672e4095..72f033b1 100644 --- a/test/src/concrete/upgrade/V3UpgradeShadowFork.t.sol +++ b/test/src/concrete/upgrade/V3UpgradeShadowFork.t.sol @@ -3,9 +3,9 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {Ownable} from "@openzeppelin-contracts-5.6.1/access/Ownable.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; -import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; +import {Ownable} from "@openzeppelin-contracts-5.7.0/access/Ownable.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.7.0/token/ERC20/extensions/IERC20Metadata.sol"; import {LibProdDeployV1} from "../../../../src/lib/LibProdDeployV1.sol"; import {LibProdDeployV4} from "../../../../src/generated/LibProdDeployV4.sol"; diff --git a/test/src/lib/LibAuthoriserInvariants.t.sol b/test/src/lib/LibAuthoriserInvariants.t.sol index 7a7d02d1..eb35545c 100644 --- a/test/src/lib/LibAuthoriserInvariants.t.sol +++ b/test/src/lib/LibAuthoriserInvariants.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import { LibAuthoriserInvariants, RoleGrant, diff --git a/test/src/lib/LibBeaconInvariants.t.sol b/test/src/lib/LibBeaconInvariants.t.sol index b0ef6eda..5ab64d18 100644 --- a/test/src/lib/LibBeaconInvariants.t.sol +++ b/test/src/lib/LibBeaconInvariants.t.sol @@ -19,7 +19,7 @@ import {LibProdDeployV1} from "../../../src/lib/LibProdDeployV1.sol"; import {LibStoxDeployNetworks} from "../../../src/lib/LibStoxDeployNetworks.sol"; import {LibBeaconInvariantsHarness} from "./LibBeaconInvariantsHarness.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; -import {IBeacon} from "@openzeppelin-contracts-5.6.1/proxy/beacon/IBeacon.sol"; +import {IBeacon} from "@openzeppelin-contracts-5.7.0/proxy/beacon/IBeacon.sol"; /// @title LibBeaconInvariantsTest /// @notice Inverted fork tests that exercise each invariant in diff --git a/test/src/lib/LibProdTokenConfig.t.sol b/test/src/lib/LibProdTokenConfig.t.sol index 57f5c7d0..91b54ece 100644 --- a/test/src/lib/LibProdTokenConfig.t.sol +++ b/test/src/lib/LibProdTokenConfig.t.sol @@ -3,7 +3,7 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.7.0/token/ERC20/extensions/IERC20Metadata.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import {LibProdTokenConfig, TokenConfig} from "../../../src/lib/LibProdTokenConfig.sol"; import {LibTokenInvariants, TokenInstance} from "../../../src/lib/LibTokenInvariants.sol"; diff --git a/test/src/lib/LibTimelockInvariants.t.sol b/test/src/lib/LibTimelockInvariants.t.sol index c3babd27..958bc851 100644 --- a/test/src/lib/LibTimelockInvariants.t.sol +++ b/test/src/lib/LibTimelockInvariants.t.sol @@ -3,8 +3,8 @@ pragma solidity =0.8.25; import {Test} from "forge-std-1.16.1/src/Test.sol"; -import {TimelockController} from "@openzeppelin-contracts-5.6.1/governance/TimelockController.sol"; -import {IAccessControl} from "@openzeppelin-contracts-5.6.1/access/IAccessControl.sol"; +import {TimelockController} from "@openzeppelin-contracts-5.7.0/governance/TimelockController.sol"; +import {IAccessControl} from "@openzeppelin-contracts-5.7.0/access/IAccessControl.sol"; import {LibRainDeploy} from "rain-deploy-0.1.4/src/lib/LibRainDeploy.sol"; import { LibTimelockInvariants, diff --git a/test/src/lib/LibTokenInvariants.addresses.t.sol b/test/src/lib/LibTokenInvariants.addresses.t.sol index b558ddf1..b0827eff 100644 --- a/test/src/lib/LibTokenInvariants.addresses.t.sol +++ b/test/src/lib/LibTokenInvariants.addresses.t.sol @@ -6,8 +6,8 @@ import {Test} from "forge-std-1.16.1/src/Test.sol"; import {LibTokenInvariants} from "../../../src/lib/LibTokenInvariants.sol"; import {LibProdDeployV1} from "../../../src/lib/LibProdDeployV1.sol"; import {LibTestProd} from "../../lib/LibTestProd.sol"; -import {IERC20Metadata} from "@openzeppelin-contracts-5.6.1/token/ERC20/extensions/IERC20Metadata.sol"; -import {IERC4626} from "@openzeppelin-contracts-5.6.1/interfaces/IERC4626.sol"; +import {IERC20Metadata} from "@openzeppelin-contracts-5.7.0/token/ERC20/extensions/IERC20Metadata.sol"; +import {IERC4626} from "@openzeppelin-contracts-5.7.0/interfaces/IERC4626.sol"; import {IReceiptVaultV3} from "rain-vats-0.1.6/src/interface/IReceiptVaultV3.sol"; import {IReceiptV3} from "rain-vats-0.1.6/src/interface/IReceiptV3.sol"; import { diff --git a/test/src/lib/TestERC1155.sol b/test/src/lib/TestERC1155.sol index 8ac0a649..db1f2cc8 100644 --- a/test/src/lib/TestERC1155.sol +++ b/test/src/lib/TestERC1155.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {ERC1155Upgradeable} from "@openzeppelin-contracts-upgradeable-5.6.1/token/ERC1155/ERC1155Upgradeable.sol"; +import {ERC1155Upgradeable} from "@openzeppelin-contracts-upgradeable-5.7.0/token/ERC1155/ERC1155Upgradeable.sol"; import {LibERC1155Storage} from "src/lib/LibERC1155Storage.sol"; /// @dev A minimal `ERC1155Upgradeable` subclass that exposes `_mint` / `_burn` diff --git a/test/src/lib/TestERC20.sol b/test/src/lib/TestERC20.sol index b1e7f3b8..080ebcc2 100644 --- a/test/src/lib/TestERC20.sol +++ b/test/src/lib/TestERC20.sol @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; -import {ERC20Upgradeable} from "@openzeppelin-contracts-upgradeable-5.6.1/token/ERC20/ERC20Upgradeable.sol"; +import {ERC20Upgradeable} from "@openzeppelin-contracts-upgradeable-5.7.0/token/ERC20/ERC20Upgradeable.sol"; import {LibERC20Storage} from "src/lib/LibERC20Storage.sol"; /// @dev A minimal `ERC20Upgradeable` subclass that exposes `_mint` / `_burn`