diff --git a/AUDIT.md b/AUDIT.md new file mode 100644 index 0000000..9f09171 --- /dev/null +++ b/AUDIT.md @@ -0,0 +1,390 @@ +# ERC1155 Token and Marketplace Audit Plan + +Last updated: 2026-06-05 + +## Purpose + +This document defines a security audit plan for the RARE Protocol ERC1155 collection system and the ERC1155 marketplace execution stack. It is an audit plan, not a completed audit report. The goal is to give reviewers a precise map of the system, assets at risk, expected invariants, high-risk flows, and verification work required before production deployment or upgrade. + +## Primary Scope + +Token contracts: + +- `src/token/ERC1155/RareERC1155.sol` +- `src/token/ERC1155/IRareERC1155.sol` +- `src/token/ERC1155/RareERC1155ContractFactory.sol` +- `src/token/ERC1155/IRareERC1155ContractFactory.sol` + +Marketplace contracts: + +- `src/marketplace/RareERC1155Marketplace.sol` +- `src/marketplace/RareERC1155MarketplaceStorage.sol` +- `src/marketplace/RareERC1155ExecutionModuleBase.sol` +- `src/marketplace/RareERC1155TradeExecutionModule.sol` +- `src/marketplace/RareERC1155CheckoutExecutionModule.sol` +- `src/marketplace/RareERC1155MarketplacePayments.sol` +- `src/marketplace/IRareERC1155Marketplace.sol` +- `src/marketplace/IRareERC1155MarketplaceTypes.sol` +- `src/marketplace/IRareERC1155TradeExecutionModule.sol` +- `src/marketplace/IRareERC1155CheckoutExecutionModule.sol` + +Integration scope: + +- `MarketConfigV2` dependency bundle and the contracts it points to: marketplace settings, approved token registry, royalty engine, payments, staking settings, staking registry, space operator registry, ERC20 approval manager, and ERC1155 approval manager. +- Deployment and upgrade scripts that initialize or rotate marketplace dependencies and execution modules. +- Existing Foundry tests under `src/test/token/ERC1155` and `src/test/marketplace`, including settlement, checkout, gas, and upgrade-related coverage. + +Out of scope unless requested separately: + +- Full audits of legacy ERC721 marketplace contracts, staking contracts, royalty engine internals, and approval manager internals. Their behavior must still be modeled through mocks and integration assumptions because the ERC1155 marketplace trusts them. +- Platform operator error or misconfiguration, including incorrect deployment parameters, unsafe owner-authorized dependency rotation, incorrect registry administration, operational key management, or governance/timelock process failures. The audit should still verify that contract-level validation and access controls behave as specified. + +## System Model + +The ERC1155 collection is clone-based. `RareERC1155ContractFactory` deploys EIP-1167 clones of `RareERC1155`, then initializes each clone with caller ownership, collection metadata, a creator royalty receiver, and an optional default minter. + +`RareERC1155Marketplace` is the UUPS proxy-facing state owner. It stores marketplace state in an ERC-7201 namespace and routes execution through delegatecall into two module contracts: + +- `RareERC1155TradeExecutionModule` handles direct batch mints, batch listing buys, and offer acceptance. +- `RareERC1155CheckoutExecutionModule` handles best-effort multi-item carts that can fill valid items, skip invalid or failed items, and refund unused ETH. + +`RareERC1155MarketplacePayments` centralizes payment collection, fee checks, split validation, primary payouts, secondary payouts, marketplace fee allocation, royalty payouts, and refunds. + +The most sensitive design choices are: + +- Delegatecall modules share marketplace proxy storage and execution context. +- Checkout intentionally catches per-item failures and continues. +- Offers escrow buyer funds up front and allocate marketplace fees across partial fills. +- ETH payouts and refunds route through `Payments`; ERC20 payouts transfer directly. +- Direct sale minting depends on collection-wide minter approval granted to the marketplace. +- Secondary transfers depend on an ERC1155 approval manager rather than direct marketplace operator approval. + +## Assets and Security Objectives + +Assets at risk: + +- Buyer ETH and ERC20 funds. +- Seller ERC1155 balances. +- Escrowed offer funds and marketplace fee reserves. +- Creator primary-sale proceeds and royalty proceeds. +- Network beneficiary and staking reward fees. +- Collection lifetime mint supply and per-token max supply. +- Marketplace storage integrity across UUPS upgrades and module delegatecalls. +- Marketplace and collection owner authorities. +- Sale, offer, checkout, and token creation event integrity for off-chain indexers. + +Core objectives: + +- No buyer can receive tokens without paying the exact configured gross amount plus required fees. +- No seller can lose tokens without the expected sale proceeds being paid or escrowed according to payment rules. +- No token can be minted above its lifetime max supply, including after burns. +- Marketplace state transitions remain atomic for ordinary trade execution. +- Checkout skips must not leak state, tokens, or funds from failed items. +- Offer escrows must always conserve buyer principal plus remaining marketplace fee. +- Delegatecall modules must not be callable as standalone settlement contracts. +- Upgrades and module rotations must preserve storage layout and cannot accidentally disable critical guards. +- Approved currencies, split recipients, royalties, staking fees, and platform commissions cannot break accounting or liveness. + +## Threat Model + +Auditors should assume the following adversaries: + +- Malicious buyer attempting underpayment, replayed checkout items, ERC20 allowance races, self-purchase bypasses, or reentrancy through token receiver hooks. +- Malicious seller attempting stale listings, revoked approvals, balance manipulation, self-dealing, malicious split recipients, or royalty DoS. +- Malicious collection contract that claims ERC1155 support but returns inconsistent balances, reverts selectively, mints incorrectly, or implements hostile receiver callbacks. +- Malicious ERC20 that charges transfer fees, returns malformed data, reenters through approval manager hooks, or mutates balances unexpectedly. +- Malicious payout recipient that reverts, consumes gas, or attempts reentrancy from fallback functions. +- External dependency contracts returning extreme fee values, zero reward accumulators, excessive royalty arrays, or failing static calls. +- MEV actors racing listing cancellation, offer cancellation, allowance revocation, ownership transfer, sale start, allowlist expiry, and price changes. + +Trusted roles and assumptions: + +- Marketplace owner can upgrade the UUPS implementation and rotate dependencies and execution modules. +- Correct platform operation of privileged owner actions is trusted and excluded from this audit except for contract-level guardrails explicitly implemented in code. +- Collection owner controls token creation, token URI updates, royalty receiver updates, minter approvals, and direct-sale configuration. +- Approved minters have collection-wide mint authority over all existing token ids. +- Approved token registry screens ERC20s, but marketplace code still rejects fee-on-transfer behavior at settlement time. +- `Payments` is expected to prevent ETH recipient DoS by escrowing failed ETH sends. +- Token allowlist roots are intentionally stored per `(collection, tokenId)`, while leaves are address-only: `keccak256(abi.encodePacked(account))`. Reusing the same address allowlist root across multiple tokens is an intentional collection-owner configuration choice, not a cross-token proof replay issue. Future audits should only flag this area if an unauthorized caller can set/reuse a root, if the documented off-chain leaf format diverges from on-chain verification, or if the product requirement changes to require roots cryptographically bound to `(collection, tokenId, account)`. +- Direct-sale setup intentionally allows `price == 0` for free mints, `startTime == 0` for immediately live sales, and `maxMints == 0` for no per-transaction quantity cap. These are collection-owner-controlled drop configuration choices, not missing validation, provided zero-price execution preserves zero gross amount, zero marketplace fee, zero payout, and exact payment checks. +- Creators are intentionally allowed to mint ERC1155 inventory to themselves and later sell that inventory through secondary listing or offer paths. This means a creator can choose a secondary-market sale route instead of the direct-sale mint route, even when that route avoids primary-market platform commission. This is an accepted product tradeoff in favor of creator custody and flexibility, not a security finding, as long as the selected settlement path still charges and distributes the fees required for that path. + +## Audit Workstreams + +### 1. Specification and Architecture Review + +- Build a state-machine diagram for each user-facing flow: collection creation, token creation, minting, direct sale setup, direct sale cancellation, allowlist setup, limit setup, listing setup, listing cancellation, offer creation, offer cancellation, direct mint purchase, listing purchase, offer acceptance, and checkout. +- Confirm intended semantics for best-effort checkout: which failures should skip an item, which failures should revert the whole cart, and what observable event/result data must be emitted. +- Confirm business rules for primary fees, secondary fees, staking fee split, royalties, platform commission, split rounding, allowlist expiry, mint limits, transaction limits, max mints per transaction, and sale/listing expiration. +- Confirm deployment assumptions for UUPS proxy initialization, module deployment, module rotation, and clone factory configuration. + +### 2. Access Control and Authority Review + +- Verify every owner-only marketplace setter validates non-zero and contract-code requirements where appropriate. +- Verify `RareERC1155.renounceOwnership` cannot make creator resolution return zero. +- Verify collection disablement permanently blocks all intended owner-managed writes and minting paths. +- Verify direct sale setup and cancellation require current collection ownership. +- Verify collection ownership transfer after sale setup cannot allow stale direct sale configs to mint under a former owner. +- Verify approved minter behavior is intentionally collection-wide and cannot be confused with per-token sale authorization. +- Verify module contracts reject direct external calls and only execute through marketplace delegatecall. + +### 3. Delegatecall, UUPS, and Storage Review + +- Confirm marketplace, trade module, and checkout module all share the exact `RareERC1155MarketplaceStorage` layout and ERC-7201 storage slot. +- Confirm module immutables, inherited storage, and local state do not collide with proxy state. Execution modules must remain storage-less except for immutables; persistent marketplace fields belong only in the ERC-7201 `MarketplaceStorage` namespace. +- Confirm UUPS initialization cannot be repeated and implementation contracts are locked. +- Diff storage layout against the currently deployed or target-base implementation before upgrade. Run `script/marketplace/check-erc1155-storage-layout.sh`; `RareERC1155Marketplace` should show only OZ upgradeable inherited storage/gaps, while `RareERC1155TradeExecutionModule` and `RareERC1155CheckoutExecutionModule` should show empty storage arrays. +- Verify module rotation cannot point to EOAs, zero addresses, destructed contracts, or contracts with incompatible selectors. +- Add tests proving old offer, listing, limit, and direct-sale state remains readable after implementation/module upgrades. + +### 4. Token Invariants + +Required properties for `RareERC1155`: + +- Token ids start at 1 and are monotonically increasing. +- `maxSupplyForToken(tokenId) == 0` only for non-existent token ids. +- `totalMintedForToken(tokenId)` is monotonic and never decreases on burn. +- `totalMintedForToken(tokenId) <= maxSupplyForToken(tokenId)` for every created token id. +- Minting zero amount, minting to zero address, minting unknown token ids, duplicate batch token ids, unsorted batch token ids, and oversized batches revert. +- `mintTo` and `mintBatchTo` enforce the same mint authority and supply constraints. +- Owner and approved minters can mint; all other accounts cannot. +- Collection-wide royalty receiver updates propagate to all existing token ids while preserving each token's royalty percentage. +- Default royalty percentage updates do not mutate existing token-specific royalty percentages; they only affect fallback royalty info and tokens created afterward. +- Token-specific royalty receiver updates preserve the token-specific royalty percentage until a later collection-wide receiver update. +- ERC165 support includes ERC1155, ERC2981, `IRareERC1155`, and `ITokenCreator`. +- `uri(tokenId)` returns token-specific URI when present and base URI fallback otherwise. +- Disabled collections reject token creation, minting, minter updates, royalty updates, and URI updates while preserving reads, transfers, and burns according to intended policy. + +### 5. Marketplace Accounting Invariants + +Required properties for direct sale mints: + +- Buyer payment equals `sum(price * quantity + marketplaceFee)` for all filled items. +- Zero-price direct-sale mints are valid: gross amount, marketplace fee, payout, and required payment are all zero. +- Per-address mint limits and transaction limits increase only for successful mints. +- Checkout failures roll back limit counter increments for skipped items. +- `maxMints` applies per transaction and across duplicate checkout items for the same token id. +- Transaction limits count one successful mint transaction per `(buyer, collection, tokenId)`, so duplicate direct-sale checkout items for the same token in one checkout consume one transaction-limit unit while mint limits still consume total minted quantity. +- Direct sale seller remains the current collection owner at execution time. +- Allowlist proof verification uses the exact intended leaf domain and cannot be reused across incompatible contexts if domain separation is required. +- Mint balance deltas prove the buyer received exactly the requested quantity. + +Required properties for secondary listing buys: + +- Seller cannot buy from self. +- Sale price, currency, expiration, available quantity, approval, and seller balance are checked at execution time. +- Listing quantity decreases exactly by the filled amount and deletes at zero. +- Failed checkout listing items do not decrease listing quantity or collect payment. +- Transfer balance deltas prove seller lost and buyer received exactly the requested quantity. +- Creator-owned, pre-minted `RareERC1155` inventory is allowed to settle through the secondary listing path. Auditors should not classify primary-market commission avoidance from that creator choice as a protocol bug unless the product requirement changes. + +Required properties for offers: + +- Offer creation escrows gross amount plus marketplace fee and refunds any replaced offer. +- Offer cancellation deletes state before refunding. +- Offer acceptance cannot be performed by the buyer. +- Partial fills reduce quantity and marketplace fee remaining using cumulative allocation, not naive per-fill rounding. +- Final fill deletes all offer fields and pays exactly the remaining marketplace fee. +- Expired offers cannot be accepted but can be cancelled and refunded. +- ERC20 and ETH offer refund paths cannot leave stale offer state that can be double-refunded. + +Required properties for checkout: + +- `filledCount + skippedCount == items.length`. +- `ethSpent + ethRefunded == msg.value` for ETH-denominated filled items and skipped ETH items. +- ERC20 is collected per filled ERC20 item only after payment prechecks pass. +- Mixed ETH and ERC20 carts cannot cross-subsidize failed items. +- Per-item failure stages are stable: validation, payment collection, mint, transfer, payout. +- Reverts from external calls cannot spoof an incorrect failure stage or corrupt result decoding. +- Unknown future item kinds are skipped with an unsupported-kind failure, not executed. +- Events and returned `CheckoutExecution` results are consistent for every item. + +Required properties for payouts: + +- Split ratios must sum to 100 and have no zero recipients or zero ratios. +- Split rounding remainder goes to the last recipient and total payout equals sale amount. +- Primary sale platform commission cannot exceed 100%. +- Secondary royalties cannot exceed sale amount. +- Secondary royalty payouts follow the existing v2 marketplace policy: at most the first five royalty recipients returned by the royalty engine are paid. +- Secondary royalty recipients with nonzero royalty amounts cannot be the zero address, preventing ETH from being forwarded to `Payments` without a withdrawable payee. +- Staking fee cannot exceed marketplace fee. +- Zero-value recipients are skipped for ERC20 payout loops where applicable. +- Failed ETH recipient sends are escrowed through `Payments` instead of reverting the sale. +- ERC20 fee-on-transfer tokens are rejected during payment collection. + +### 6. Reentrancy and External Call Review + +High-priority external call sites: + +- ERC1155 `safeTransferFrom`, `safeBatchTransferFrom`, `balanceOf`, `balanceOfBatch`, `isApprovedForAll`, and `mintBatchTo`. +- ERC20 `balanceOf`, `allowance`, approval manager `transferFrom`, and `safeTransfer`. +- Royalty engine `getRoyalty`. +- Payments `payout` and `refund`. +- Marketplace settings fee calculations and space operator/staking registry calls. +- Collection `owner()` staticcall used for direct sale ownership checks. + +Required tests: + +- Reenter marketplace write functions from ERC1155 receiver callbacks during mints and transfers. +- Reenter marketplace write functions from malicious ETH recipients through payout/refund paths. +- Reenter or mutate balances from malicious ERC20 `balanceOf`, `allowance`, `transfer`, and approval-manager-mediated `transferFrom`. +- Reenter from royalty receiver discovery or malicious royalty engine responses. +- Confirm `nonReentrant` on the marketplace facade still protects delegatecall module execution because delegatecalled code runs in marketplace context. +- Confirm best-effort checkout catches expected per-item failures but does not catch failures that should be whole-transaction invariant violations. + +### 7. Denial-of-Service and Gas Review + +- Measure worst-case gas for `MAX_BATCH_SIZE == 75` trade batches and `MAX_CHECKOUT_SIZE == 50` checkout carts. +- Stress maximum split recipients, maximum royalty recipients from royalty engine, mixed currencies, repeated duplicate direct-sale checkout items, and all-skipped checkout carts. +- Treat long Merkle allowlist proofs as caller-paid gas overhead unless evidence shows a third-party griefing path. Proof verification hashes once per supplied proof element, so an oversized proof can make the caller's own mint/checkout more expensive, but it does not force work onto other users or persistent state. +- Confirm no user can force persistent storage growth without paying expected costs or create unbounded loops over attacker-controlled historical state. +- Confirm payout recipient arrays from royalty engine cannot make settlement exceed block gas in common marketplace flows; ERC1155 settlement truncates royalty recipients to the first five before summing or paying royalties. +- Confirm Payments escrow path bounds recipient gas and preserves liveness for sales and refunds. + +### 8. Static Analysis + +Run and triage: + +- `forge build` +- `forge test --no-match-path src/test/forks/**/*.sol` +- `npm run lint` +- Slither against the in-scope contracts, with explicit review of delegatecall, reentrancy, arbitrary-send, unchecked-transfer, missing-events, and weak-prng findings. +- A second static analyzer such as Aderyn or Semgrep Solidity rules to catch tool-specific gaps. +- Storage layout extraction before and after proposed upgrades, including `script/marketplace/check-erc1155-storage-layout.sh`. + +Expected false positives: + +- Intentional delegatecall from marketplace into trusted execution modules. +- Intentional low-level calls to `Payments`. +- Intentional unchecked loop increments after bounded batch-size validation. +- Address-only Merkle allowlist leaves without `(collection, tokenId)` domain separation; roots are keyed by `(collection, tokenId)`, and intentional root reuse across tokens is owner-controlled. +- Unbounded per-item Merkle proof arrays for mint/checkout allowlists; extra proof elements only add caller-paid calldata and hashing gas, making this self-DoS rather than a marketplace or third-party DoS vector. +- Permissive direct-sale parameters where `price == 0`, `startTime == 0`, or `maxMints == 0`; these intentionally mean free mint, immediately live sale, and unlimited per-transaction quantity respectively. + +False positives must still be documented with the exact invariant or test that makes each pattern safe. + +### 9. Fuzzing and Stateful Invariant Testing + +Implement Foundry invariant suites with actors for buyer, seller, creator, marketplace owner, malicious ERC1155 receiver, malicious ERC20, malicious royalty engine, and rejecting payout recipient. + +Suggested invariant handlers: + +- Token handler: create tokens, approve minters, mint single, mint batch, burn, transfer, disable, update royalty, update URI. +- Marketplace handler: configure direct sales, configure allowlists, configure limits, set listings, cancel listings, make offers, cancel offers, mint direct sale, buy listing, accept offer, checkout mixed carts. +- Admin handler: pause/unpause, rotate dependencies to valid mocks, rotate execution modules to compatible mocks, upgrade proxy in a harness. + +Global invariants: + +- Marketplace ETH plus ERC20 balances equal active offer escrow plus transient checkout balances at transaction end, excluding funds intentionally handed to `Payments`. +- No account receives ERC1155 balance delta without an equal settled payment obligation. +- No seller loses ERC1155 balance delta without payout, escrow, or expected revert. +- Sum of active offer remaining principal and marketplace fee remaining equals escrow owed to buyers. +- Listing quantities never underflow and never become non-zero after delete. +- Checkout skipped items have no persistent side effects. +- Paused marketplace rejects all configured write/execution entrypoints that are intended to pause. +- Direct module calls always revert. + +### 10. Fork and Deployment Validation + +- Run deployment scripts against a local fork with the target mainnet/base addresses. +- Verify proxy initialization arguments, owner, UUPS implementation slot, module addresses, marketplace dependency addresses, and approval manager addresses. +- Simulate module rotation from old settlement architecture to trade/checkout modules if this audit supports an upgrade. +- Replay representative live-style flows on fork: creator collection setup, token creation, direct sale mint, listing buy, offer lifecycle, mixed checkout, payout recipient escrow. +- Confirm ABI generation and frontend-facing interfaces match deployed selectors and events. + +## High-Risk Review Questions by Contract + +`RareERC1155.sol`: + +- Can any approved minter mint unintended token ids after creator approval? +- Can lifetime max supply be bypassed through burns, batch duplication, reentrancy, or malformed receiver hooks? +- Are royalty percentage units and ERC2981 basis points conversions consistently applied? +- Does disabling the contract intentionally leave transfers and burns available? + +`RareERC1155ContractFactory.sol`: + +- Can the factory owner point clones to an incompatible implementation? +- Are clones initialized atomically and impossible to front-run or reinitialize? +- Is the default minter configuration safe for marketplace deployment order? + +`RareERC1155Marketplace.sol`: + +- Does every public write path have the intended pause and reentrancy behavior? +- Do owner dependency and module setters enforce the contract-level guardrails specified in code, excluding platform operator error or intentionally unsafe authorized changes? +- Does delegatecall bubble errors correctly for non-checkout execution? +- Are cancellation functions intentionally callable while paused? + +`RareERC1155MarketplaceStorage.sol`: + +- Is the ERC-7201 slot correct and stable? +- Are batch-size limits sufficient to bound every loop using user-provided arrays? +- Is the documented address-only Merkle allowlist leaf format consistently used off-chain and on-chain, and are only authorized collection owners able to configure per-token roots? +- Are ERC1155 and owner checks robust against malformed contracts? + +`RareERC1155ExecutionModuleBase.sol`: + +- Are shared validation helpers identical between revert-all trade flows and best-effort checkout flows? +- Can `_decodeCheckoutItemExecutionFailed` return memory that is later corrupted or misinterpreted? +- Does marketplace fee allocation for partial offers handle all rounding and final-fill cases? + +`RareERC1155TradeExecutionModule.sol`: + +- Are state writes performed before external calls only where reentrancy protection and rollback semantics make that safe? +- Can listing or offer state be consumed before a transfer/payout failure in a way that creates stuck state? +- Are batch transfer balance checks sufficient for non-standard ERC1155 implementations? + +`RareERC1155CheckoutExecutionModule.sol`: + +- Can a failed checkout item leak payment collection, limit counters, listing decrements, or minted/transferred tokens? +- Are nested delegatecalls to the checkout module necessary and safe under the module rotation model? +- Can failure data spoofing produce misleading stages or suppress critical failures? +- Are ETH refunds correct for mixed-currency carts and all-skipped carts? + +`RareERC1155MarketplacePayments.sol`: + +- Does every payout path conserve value exactly after fees, royalties, staking, platform commission, and splits? +- Are ERC20 transfers compatible only with approved plain ERC20s, and is fee-on-transfer rejection sufficient? +- Can malicious royalty or staking dependencies force revert or gas DoS beyond intended policy? +- Are ETH refunds and payouts safe under the specified `Payments` interface and failure model? + +## Evidence Matrix + +| Property | Manual review | Unit tests | Fuzz/invariant | Fork/deploy | +| ------------------------------------------------ | ------------- | ---------- | -------------- | ----------- | +| ERC1155 max supply cannot be exceeded | Required | Required | Required | Optional | +| Burns do not reopen supply | Required | Required | Required | Optional | +| Clone initialization cannot be hijacked | Required | Required | Optional | Required | +| Direct sale ownership is current at execution | Required | Required | Required | Required | +| Checkout skipped items have no side effects | Required | Required | Required | Optional | +| ETH accounting conserves `msg.value` in checkout | Required | Required | Required | Optional | +| ERC20 fee-on-transfer rejected | Required | Required | Required | Optional | +| Offer partial fee allocation is exact | Required | Required | Required | Optional | +| Delegatecall modules cannot run standalone | Required | Required | Required | Required | +| UUPS/module upgrade preserves storage | Required | Required | Optional | Required | +| Payout recipient DoS does not block ETH sales | Required | Required | Required | Required | +| Pause behavior matches policy | Required | Required | Required | Optional | + +## Deliverables + +Auditors should produce: + +- Architecture and trust-boundary memo. +- Threat model and attack tree notes. +- Findings report with severity, exploit narrative, affected contracts, proof of concept, and remediation guidance. +- Test gap report with proposed unit, fuzz, invariant, fork, and gas tests. +- Static analysis triage log, including documented false positives. +- Storage layout and upgrade safety memo. +- Remediation verification report after fixes. + +## Acceptance Criteria + +Before sign-off: + +- All critical and high findings are fixed or explicitly accepted with owner sign-off. +- All medium findings have remediation, mitigation, or documented risk acceptance. +- In-scope Foundry tests pass. +- New invariant tests cover token supply, checkout side effects, offer escrow accounting, and delegatecall-only modules. +- Static analysis findings are triaged. +- Deployment scripts have been simulated on fork with final addresses. +- Storage layout compatibility is documented for any marketplace upgrade. +- A final smoke test exercises collection creation, token creation, direct mint purchase, listing purchase, offer lifecycle, mixed checkout, failed payout escrow, pause/unpause, and module direct-call rejection. diff --git a/abis/ERC1155ApprovalManager.json b/abis/ERC1155ApprovalManager.json new file mode 100644 index 0000000..9191b36 --- /dev/null +++ b/abis/ERC1155ApprovalManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MANAGER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x60806040818152346100ed576000808052602091818352808220338352835260ff8183205416156100b7575b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0892838352828152818320338452815260ff82842054161561007e575b6001805460ff191690556110da85816100f38239f35b83835282815281832090338452528120600160ff1982541617905533916000805160206111cd833981519152339280a438808080610068565b8180528183528082203383528352808220600160ff198254161790553333836000805160206111cd8339815191528180a461002b565b600080fdfe6080604081526101006040526004908136101561001b57600080fd5b600091823560e01c90816301eed9b11461076f57816301ffc9a7146107185781631e482447146106af578163248a9ca31461068257816327ac0c58146106585781632f2770db1461060b5781632f2ff15d1461055d57816336568abe146104ca5781637ee7f69b1461034a57816391d1485414610301578163a217fddf146102e5578163b219f7d7146102bb578163d547741f14610277578163eb46c45b1461016f57508063ec87621c14610134578063ee070805146101105763f5b541a6146100e457600080fd5b3461010c578160031936011261010c5760209051516000805160206110658339815191528152f35b5080fd5b503461010c578160031936011261010c5760209060ff600154169051519015158152f35b503461010c578160031936011261010c5760209051517f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b088152f35b8391503461010c5760c036600319011261010c5761018b610803565b92610194610819565b61019c61082f565b9260a4356001600160401b038111610273576101bb9036908301610845565b92909660ff600154166102625786976101d2610aa4565b6001600160a01b0391821692833b1561025e5761022e8996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015260a0608485015260a484019161101f565b03925af190811561025457506102415750f35b61024a90610cf8565b6102515780f35b80fd5b51513d84823e3d90fd5b8880fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102b75780513660031901126102b7576102b491356102af600161029d610819565b93838752866020525186200154610bca565b610e71565b80f35b8280fd5b8334610251576020366003190112610251576102b46102d8610803565b6102e0610872565b610de9565b50503461010c578160031936011261010c575151908152602090f35b8391503461010c57825136600319011261010c57602092610320610819565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010c576003199260c0368501126102b757610367610803565b61036f610819565b9061037861082f565b60c0526001600160401b036064358181116104c65761039a90369086016107ce565b60849291923582811161025e576103b490369088016107ce565b99909260a4359081116104c2576103ce9036908901610845565b97909360ff600154166104b2578a9b6103e89b9a9b610aa4565b6001600160a01b0398888a163b156104ae578b9761047d96610462958f61044e948e91515160a060e0528060e05152631759616b60e11b9052169060e0515101528b60c05116602460e05151015260e051604460e05151015260a460e051510191611040565b9160e0515160648682860301910152611040565b90608460e05151918284030191015260e0515196879361101f565b039260e0515192165af19081156104a257506104965780f35b6102b460e05151610cf8565b5151913d9150823e3d90fd5b8b80fd5b50885151631a8854fd60e31b8152fd5b8980fd5b8680fd5b83833461010c5751918260031936011261010c576104e6610819565b90336001600160a01b0383160361050257906102b49135610e71565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102b757815190816003193601126106075735916105926001610581610819565b938587528660205286200154610bca565b82845283602052518084209160018060a01b03169182855260205260ff8185205416156105bd578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b8380fd5b8334610251578060031936011261025157610624610872565b600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b8334610251576020366003190112610251576102b4610675610803565b61067d610872565b610d5d565b9050346102b75760203660031901126102b757602092916001913583528284525180922001549051908152f35b83903461010c57602036600319011261010c578035906001600160401b0382116102b7576106df913691016107ce565b6106e7610872565b825b8181106106f4578380f35b8061070e6102e0610709610713948688610ffb565b61100b565b610fd6565b6106e9565b9050346102b75760203660031901126102b757359063ffffffff60e01b82168092036102b75760209250637965db0b60e01b821491821561075e575b5051519015158152f35b6301ffc9a760e01b14915038610754565b83903461010c57602036600319011261010c578035906001600160401b0382116102b75761079f913691016107ce565b6107a7610872565b825b8181106107b4578380f35b8061070e61067d6107096107c9948688610ffb565b6107a9565b9181601f840112156107fe578235916001600160401b0383116107fe576020808501948460051b0101116107fe57565b600080fd5b600435906001600160a01b03821682036107fe57565b602435906001600160a01b03821682036107fe57565b604435906001600160a01b03821682036107fe57565b9181601f840112156107fe578235916001600160401b0383116107fe57602083818601950101116107fe57565b3360009081527fe84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee6456020908152604080832054909291907f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b089060ff16156108d85750505050565b6108e133610ec8565b908451906108ee82610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610a22575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190610cd5565b01036028810189520187610d3c565b5194859362461bcd60e51b8552600485015251809281602486015285850190610cd5565b601f01601f19168101030190fd5b60648386519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610a528587610ea1565b5360041c928015610a685760001901919061091f565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b3360009081526000805160206110858339815191526020908152604080832054909291906000805160206110658339815191529060ff1615610ae65750505050565b610aef33610ec8565b90845190610afc82610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610b84575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bb48587610ea1565b5360041c928015610a6857600019019190610b2d565b60008181526020818152604092838320338452825260ff848420541615610bf15750505050565b610bfa33610ec8565b90845190610c0782610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610c8f575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610cbf8587610ea1565b5360041c928015610a6857600019019190610c38565b60005b838110610ce85750506000910152565b8181015183820152602001610cd8565b6001600160401b038111610d0b57604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b03821117610d0b57604052565b90601f801991011681019081106001600160401b03821117610d0b57604052565b6001600160a01b0316600081815260008051602061108583398151915260205260408120549091906000805160206110658339815191529060ff1615610da257505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b0316600081815260008051602061108583398151915260205260408120549091906000805160206110658339815191529060ff16610e2d57505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e2d57505050565b908151811015610eb2570160200190565b634e487b7160e01b600052603260045260246000fd5b60405190606082018281106001600160401b03821117610d0b57604052602a8252602082016040368237825115610eb257603090538151600190811015610eb257607860218401536029905b808211610f68575050610f245790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610fc1576f181899199a1a9b1b9c1cb0b131b232b360811b901a610f978486610ea1565b5360041c918015610fac576000190190610f14565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b6000198114610fe55760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610eb25760051b0190565b356001600160a01b03811681036107fe5790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116107fe5760209260051b80928483013701019056fe97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929ee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319fa2646970667358221220368f9211353122569d8a908e51b78108f467192cf847f7e27ba27243bfda699e64736f6c634300081200332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","sourceMap":"547:3633:85:-:0;;;;;;;;2198:4:33;547:3633:85;;;;;;;;;;;1173:10;547:3633;;;;;;;;;;7669:23:33;7665:149;;-1:-1:-1;711:25:85;547:3633;;;;;;;;;;1173:10;547:3633;;;;;;;;;;7669:23:33;7665:149;;-1:-1:-1;1410:16:85;711:25;;-1:-1:-1;;711:25:85;;;547:3633;711:25;547:3633;;711:25;547:3633;;7665:149:33;547:3633:85;;;;;;;;;1173:10;;547:3633;;;;;7740:4:33;711:25:85;;;;;;;;1173:10;;-1:-1:-1;;;;;;;;;;;1173:10:85;7763:40:33;;;7665:149;;;;;;;547:3633:85;;;;;;;;;1173:10;547:3633;;;;;;;7740:4:33;711:25:85;;;;;;;;1173:10;;7763:40:33;-1:-1:-1;;;;;;;;;;;7763:40:33;;;7665:149;;547:3633:85;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604081526101006040526004908136101561001b57600080fd5b600091823560e01c90816301eed9b11461076f57816301ffc9a7146107185781631e482447146106af578163248a9ca31461068257816327ac0c58146106585781632f2770db1461060b5781632f2ff15d1461055d57816336568abe146104ca5781637ee7f69b1461034a57816391d1485414610301578163a217fddf146102e5578163b219f7d7146102bb578163d547741f14610277578163eb46c45b1461016f57508063ec87621c14610134578063ee070805146101105763f5b541a6146100e457600080fd5b3461010c578160031936011261010c5760209051516000805160206110658339815191528152f35b5080fd5b503461010c578160031936011261010c5760209060ff600154169051519015158152f35b503461010c578160031936011261010c5760209051517f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b088152f35b8391503461010c5760c036600319011261010c5761018b610803565b92610194610819565b61019c61082f565b9260a4356001600160401b038111610273576101bb9036908301610845565b92909660ff600154166102625786976101d2610aa4565b6001600160a01b0391821692833b1561025e5761022e8996928793858a51519b8c998a988997637921219560e11b895216908701521660248501526064356044850152608435606485015260a0608485015260a484019161101f565b03925af190811561025457506102415750f35b61024a90610cf8565b6102515780f35b80fd5b51513d84823e3d90fd5b8880fd5b845151631a8854fd60e31b81528390fd5b8580fd5b919050346102b75780513660031901126102b7576102b491356102af600161029d610819565b93838752866020525186200154610bca565b610e71565b80f35b8280fd5b8334610251576020366003190112610251576102b46102d8610803565b6102e0610872565b610de9565b50503461010c578160031936011261010c575151908152602090f35b8391503461010c57825136600319011261010c57602092610320610819565b91358352828452518092209060018060a01b0316600052825260ff81600020541690519015158152f35b83833461010c576003199260c0368501126102b757610367610803565b61036f610819565b9061037861082f565b60c0526001600160401b036064358181116104c65761039a90369086016107ce565b60849291923582811161025e576103b490369088016107ce565b99909260a4359081116104c2576103ce9036908901610845565b97909360ff600154166104b2578a9b6103e89b9a9b610aa4565b6001600160a01b0398888a163b156104ae578b9761047d96610462958f61044e948e91515160a060e0528060e05152631759616b60e11b9052169060e0515101528b60c05116602460e05151015260e051604460e05151015260a460e051510191611040565b9160e0515160648682860301910152611040565b90608460e05151918284030191015260e0515196879361101f565b039260e0515192165af19081156104a257506104965780f35b6102b460e05151610cf8565b5151913d9150823e3d90fd5b8b80fd5b50885151631a8854fd60e31b8152fd5b8980fd5b8680fd5b83833461010c5751918260031936011261010c576104e6610819565b90336001600160a01b0383160361050257906102b49135610e71565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b9050346102b757815190816003193601126106075735916105926001610581610819565b938587528660205286200154610bca565b82845283602052518084209160018060a01b03169182855260205260ff8185205416156105bd578380f35b828452836020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b8380fd5b8334610251578060031936011261025157610624610872565b600160ff1981541617600155337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd8280a280f35b8334610251576020366003190112610251576102b4610675610803565b61067d610872565b610d5d565b9050346102b75760203660031901126102b757602092916001913583528284525180922001549051908152f35b83903461010c57602036600319011261010c578035906001600160401b0382116102b7576106df913691016107ce565b6106e7610872565b825b8181106106f4578380f35b8061070e6102e0610709610713948688610ffb565b61100b565b610fd6565b6106e9565b9050346102b75760203660031901126102b757359063ffffffff60e01b82168092036102b75760209250637965db0b60e01b821491821561075e575b5051519015158152f35b6301ffc9a760e01b14915038610754565b83903461010c57602036600319011261010c578035906001600160401b0382116102b75761079f913691016107ce565b6107a7610872565b825b8181106107b4578380f35b8061070e61067d6107096107c9948688610ffb565b6107a9565b9181601f840112156107fe578235916001600160401b0383116107fe576020808501948460051b0101116107fe57565b600080fd5b600435906001600160a01b03821682036107fe57565b602435906001600160a01b03821682036107fe57565b604435906001600160a01b03821682036107fe57565b9181601f840112156107fe578235916001600160401b0383116107fe57602083818601950101116107fe57565b3360009081527fe84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee6456020908152604080832054909291907f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b089060ff16156108d85750505050565b6108e133610ec8565b908451906108ee82610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610a22575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190610cd5565b01036028810189520187610d3c565b5194859362461bcd60e51b8552600485015251809281602486015285850190610cd5565b601f01601f19168101030190fd5b60648386519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610a528587610ea1565b5360041c928015610a685760001901919061091f565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b3360009081526000805160206110858339815191526020908152604080832054909291906000805160206110658339815191529060ff1615610ae65750505050565b610aef33610ec8565b90845190610afc82610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610b84575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610bb48587610ea1565b5360041c928015610a6857600019019190610b2d565b60008181526020818152604092838320338452825260ff848420541615610bf15750505050565b610bfa33610ec8565b90845190610c0782610d21565b60428252838201946060368737825115610a905760308653825190600191821015610a905790607860218501536041915b818311610c8f575050506109e057846109ae60486109d293604497985198899161099f8984019876020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a52610976815180928d603789019101610cd5565b909192600f81166010811015610a7c576f181899199a1a9b1b9c1cb0b131b232b360811b901a610cbf8587610ea1565b5360041c928015610a6857600019019190610c38565b60005b838110610ce85750506000910152565b8181015183820152602001610cd8565b6001600160401b038111610d0b57604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b03821117610d0b57604052565b90601f801991011681019081106001600160401b03821117610d0b57604052565b6001600160a01b0316600081815260008051602061108583398151915260205260408120549091906000805160206110658339815191529060ff1615610da257505050565b808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4565b6001600160a01b0316600081815260008051602061108583398151915260205260408120549091906000805160206110658339815191529060ff16610e2d57505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff604084205416610e2d57505050565b908151811015610eb2570160200190565b634e487b7160e01b600052603260045260246000fd5b60405190606082018281106001600160401b03821117610d0b57604052602a8252602082016040368237825115610eb257603090538151600190811015610eb257607860218401536029905b808211610f68575050610f245790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610fc1576f181899199a1a9b1b9c1cb0b131b232b360811b901a610f978486610ea1565b5360041c918015610fac576000190190610f14565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b6000198114610fe55760010190565b634e487b7160e01b600052601160045260246000fd5b9190811015610eb25760051b0190565b356001600160a01b03811681036107fe5790565b908060209392818452848401376000828201840152601f01601f1916010190565b81835290916001600160fb1b0383116107fe5760209260051b80928483013701019056fe97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929ee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319fa2646970667358221220368f9211353122569d8a908e51b78108f467192cf847f7e27ba27243bfda699e64736f6c63430008120033","sourceMap":"547:3633:85:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;929:29;547:3633;;;;;;;;;;;;;;;;;;;;;;;;;;;;711:25;547:3633;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;:::i;:::-;;;;;;;;1637:44;;2642:4:33;;;;:::i;:::-;-1:-1:-1;;;;;547:3633:85;;;;3593:52;;;;;547:3633;;;;;;;;;;;;;;;;;;;;3593:52;;547:3633;3593:52;;;547:3633;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3593:52;;;;;;;;;;;;547:3633;;3593:52;;;;:::i;:::-;547:3633;;3593:52;547:3633;;;;3593:52;547:3633;;;;;;;;;3593:52;547:3633;;;1637:44;547:3633;;;-1:-1:-1;;;1658:23:85;;547:3633;;1658:23;547:3633;;;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;5486:7:33;547:3633:85;;2642:4:33;547:3633:85;;;:::i;:::-;;;;;;;;;;;4604:22:33;547:3633:85;2642:4:33;:::i;:::-;5486:7;:::i;:::-;547:3633:85;;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;2472:8;547:3633;;:::i;:::-;2642:4:33;;:::i;:::-;2472:8:85;:::i;547:3633::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;1641:8;547:3633;;1637:44;;2642:4:33;;;;;;;:::i;:::-;-1:-1:-1;;;;;547:3633:85;;;;4112:59;;;;547:3633;;;;;;;;;;;;;;;;;;;4112:59;547:3633;;;4112:59;;547:3633;;;;4112:59;;547:3633;;;;;;;;4112:59;547:3633;;;;;;;4112:59;547:3633;;;;;4112:59;547:3633;;;:::i;:::-;;;;4112:59;547:3633;;;;;;;;;;:::i;:::-;;;;;4112:59;547:3633;;;;;;;;;;4112:59;547:3633;;;;:::i;:::-;4112:59;547:3633;;;4112:59;547:3633;;4112:59;;;;;;;;;;547:3633;;4112:59;;547:3633;;4112:59;;:::i;:::-;547:3633;;;;;-1:-1:-1;547:3633:85;;;;;4112:59;547:3633;;;1637:44;-1:-1:-1;547:3633:85;;;-1:-1:-1;;;1658:23:85;;;547:3633;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;719:10:49;;-1:-1:-1;;;;;547:3633:85;;6133:23:33;547:3633:85;;;6237:7:33;547:3633:85;;6237:7:33;:::i;547:3633:85:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;2642:4:33;547:3633:85;;;:::i;:::-;;;;;;;;;;4604:22:33;547:3633:85;2642:4:33;:::i;:::-;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7669:23:33;7665:149;;547:3633:85;;;7665:149:33;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;;719:10:49;7763:40:33;;;;;7665:149;;;547:3633:85;;;;;;;;;;;;;;;;;;;;2642:4:33;;:::i;:::-;1892::85;547:3633;;;;;;1892:4;547:3633;1928:10;1911:28;;;;547:3633;;;;;;;;;-1:-1:-1;;547:3633:85;;;;2206:8;547:3633;;:::i;:::-;2642:4:33;;:::i;:::-;2206:8:85;:::i;547:3633::-;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;;;;;;;;;;;;;4604:22:33;547:3633:85;;;;;;;;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;:::i;:::-;2642:4:33;;:::i;:::-;2999:13:85;3014:20;;;;;;547:3633;;;3036:3;3159:12;;;;3036:3;3159:12;;;;:::i;:::-;;:::i;:::-;3036:3;:::i;:::-;2999:13;;547:3633;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2840:47:33;;;:87;;;;547:3633:85;;;;;;;;;;2840:87:33;-1:-1:-1;;;937:40:52;;-1:-1:-1;2840:87:33;;;547:3633:85;;;;;;;;-1:-1:-1;;547:3633:85;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;:::i;:::-;2642:4:33;;:::i;:::-;2647:13:85;2662:20;;;;;;547:3633;;;2684:3;2809:12;;;;2684:3;2809:12;;;;:::i;2684:3::-;2647:13;;547:3633;;;;;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:3633:85;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;547:3633:85;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;;;;;:::o;3460:103:33:-;719:10:49;3130:6:33;547:3633:85;;;;;;;;;;;;;;;3130:6:33;547:3633:85;711:25;;547:3633;;3931:23:33;3927:390;;3460:103;;;;:::o;3927:390::-;2497:52:51;719:10:49;2497:52:51;:::i;:::-;1818:437;547:3633:85;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1975:15:51;;;547:3633:85;;;;;;;;;;;2000:15:51;547:3633:85;;;2000:15:51;547:3633:85;2025:128:51;2058:5;;;;;;2170:10;;;278:18;;547:3633:85;4022:252:33;547:3633:85;;;;;;;4022:252:33;;;547:3633:85;4022:252:33;;;547:3633:85;-1:-1:-1;;;547:3633:85;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;547:3633:85;;;;;;;;;;;;:::i;:::-;;4022:252:33;;;;;;;;;:::i;:::-;547:3633:85;;;;;;;3970:336:33;;2141:1:51;3970:336:33;;547:3633:85;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;547:3633:85;;;3970:336:33;;;;278:18:51;;547:3633:85;;;;;;;278:18:51;;;2141:1;278:18;;;;;;547:3633:85;278:18:51;547:3633:85;;;278:18:51;;2065:3;2105:11;;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:51;;2084:33;;;;:::i;:::-;;2141:1;547:3633:85;2065:3:51;547:3633:85;;;;-1:-1:-1;;547:3633:85;;2030:26:51;;;547:3633:85;-1:-1:-1;;;547:3633:85;;;2141:1:51;547:3633:85;;;;2096:21:51;-1:-1:-1;;;547:3633:85;;;2141:1:51;547:3633:85;;;;;-1:-1:-1;;;547:3633:85;;;;;;;;3460:103:33;719:10:49;3130:6:33;547:3633:85;;;-1:-1:-1;;;;;;;;;;;547:3633:85;;;;;;;;;;;3130:6:33;547:3633:85;-1:-1:-1;;;;;;;;;;;846:26:85;547:3633;;3931:23:33;3927:390;;3460:103;;;;:::o;3927:390::-;2497:52:51;719:10:49;2497:52:51;:::i;:::-;1818:437;547:3633:85;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1975:15:51;;;547:3633:85;;;;;;;;;;;2000:15:51;547:3633:85;;;2000:15:51;547:3633:85;2025:128:51;2058:5;;;;;;2170:10;;;278:18;;547:3633:85;4022:252:33;547:3633:85;;;;;;;4022:252:33;;;547:3633:85;4022:252:33;;;547:3633:85;-1:-1:-1;;;547:3633:85;;;;;;;;;;;;;;:::i;2065:3:51:-;2105:11;;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:51;;2084:33;;;;:::i;:::-;;2141:1;547:3633:85;2065:3:51;547:3633:85;;;;-1:-1:-1;;547:3633:85;;2030:26:51;;;3460:103:33;3130:6;547:3633:85;;;;;;;;;;;;719:10:49;547:3633:85;;;;;;;;;;3931:23:33;3927:390;;3460:103;;;;:::o;3927:390::-;2497:52:51;719:10:49;2497:52:51;:::i;:::-;4214:38:33;547:3633:85;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1975:15:51;;;547:3633:85;;;;;;;;;;;2000:15:51;547:3633:85;;;2000:15:51;547:3633:85;2025:128:51;2058:5;;;;;;2170:10;;;278:18;;547:3633:85;4022:252:33;547:3633:85;;;;;;;4022:252:33;;;547:3633:85;4022:252:33;;;547:3633:85;-1:-1:-1;;;547:3633:85;;;;;;;;;;;;;;:::i;2065:3:51:-;2105:11;;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:51;;2084:33;;;;:::i;:::-;;2141:1;547:3633:85;2065:3:51;547:3633:85;;;;-1:-1:-1;;547:3633:85;;2030:26:51;;;547:3633:85;;;;;;;;-1:-1:-1;;547:3633:85;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;:::o;7587:233:33:-;-1:-1:-1;;;;;547:3633:85;3130:6:33;547:3633:85;;;-1:-1:-1;;;;;;;;;;;547:3633:85;;;;;;3130:6:33;;547:3633:85;-1:-1:-1;;;;;;;;;;;846:26:85;547:3633;;7669:23:33;7665:149;;7587:233;;;:::o;7665:149::-;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;;;7763:40:33;719:10:49;7763:40:33;;;7587:233::o;7991:234::-;-1:-1:-1;;;;;547:3633:85;3130:6:33;547:3633:85;;;-1:-1:-1;;;;;;;;;;;547:3633:85;;;;;;3130:6:33;;547:3633:85;-1:-1:-1;;;;;;;;;;;846:26:85;547:3633;;8070:149:33;;7991:234;;;:::o;8070:149::-;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;8168:40:33;719:10:49;8168:40:33;;;7991:234::o;:::-;;3130:6;547:3633:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8070:149:33;;7991:234;;;:::o;547:3633:85:-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1818:437:51;547:3633:85;;;;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;;;;;;;;;;;;1975:15:51;;;547:3633:85;;;;;;;;;2000:15:51;547:3633:85;;;2000:15:51;547:3633:85;2025:128:51;2058:5;;;;;;2170:10;;278:18;;1818:437;:::o;278:18::-;;547:3633:85;;;;;278:18:51;;547:3633:85;2141:1:51;278:18;;;547:3633:85;278:18:51;;;547:3633:85;278:18:51;547:3633:85;;;278:18:51;;2065:3;2105:11;;2113:3;2105:11;;2096:21;;;;;;-1:-1:-1;;;2096:21:51;;2084:33;;;;:::i;:::-;;2141:1;547:3633:85;2065:3:51;547:3633:85;;;;-1:-1:-1;;547:3633:85;;2030:26:51;;547:3633:85;;;;;;;;;2141:1:51;547:3633:85;;2096:21:51;547:3633:85;;;;;;;;2141:1:51;547:3633:85;;;-1:-1:-1;;547:3633:85;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;547:3633:85;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;547:3633:85;;;;;;;;-1:-1:-1;;547:3633:85;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;547:3633:85;;;;;;;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MANAGER_ROLE()":"ec87621c","OPERATOR_ROLE()":"f5b541a6","batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","getRoleAdmin(bytes32)":"248a9ca3","grantOperatorRole(address)":"27ac0c58","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeOperatorRole(address)":"b219f7d7","revokeRole(bytes32,address)":"d547741f","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Users approve this manager on ERC1155 collections, and operator contracts execute transfers through it.\",\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"title\":\"ERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"MANAGER_ROLE()\":{\"notice\":\"Role for managing operators.\"},\"OPERATOR_ROLE()\":{\"notice\":\"Role for contracts allowed to transfer tokens.\"},\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"constructor\":{\"notice\":\"Grants deployer admin and manager roles.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Whether the contract is disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"A central approval manager for ERC1155 tokens that allows whitelisted contracts to transfer tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":\"ERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88\",\"dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf\",\"dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa4d55322aca75d8e1023d0fe14c23cbd4978db46bba8f070e7c6c32d8d507c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3e25f715051a410101d290440a6cdba0f456269a069f87ada6c15f521889eca\",\"dweb:/ipfs/QmRaBjbqtEZaRU7yy2KAAD879wGjDQEpUVGQfGbrMC2K86\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"userdoc":{"kind":"user","methods":{"MANAGER_ROLE()":{"notice":"Role for managing operators."},"OPERATOR_ROLE()":{"notice":"Role for contracts allowed to transfer tokens."},"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"constructor":{"notice":"Grants deployer admin and manager roles."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Whether the contract is disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":"ERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xbc7fc49ba05b312e318d3d7b517ed0254489320bedef2e91f80c3bd4e904fc0c","urls":["bzz-raw://e411d112f89fcadbff89da0579d61eafdf76272aaa91fb18728a86337440bb88","dweb:/ipfs/QmfKJqMJ2CF1mw4UwDajoFdrrfKWSZwetkAByUP56EeqSQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57","urls":["bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a","dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x2626d8ab3dfdad0fad630c212ad146d59473d0f48b771784c61a7c1dbbea1f3f","urls":["bzz-raw://d7c144532f1e7c76ac95fb6a8f617c1f740d7a73442a907eb60910e99dfa1fbf","dweb:/ipfs/QmZsGyooD6emxB8JCuugRjnRYS2MPZEL586uuV7dgC8Jng"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b","urls":["bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d","dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc","urls":["bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7","dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"],"license":"MIT"},"src/v2/approver/ERC1155/ERC1155ApprovalManager.sol":{"keccak256":"0xa4d55322aca75d8e1023d0fe14c23cbd4978db46bba8f070e7c6c32d8d507c28","urls":["bzz-raw://d3e25f715051a410101d290440a6cdba0f456269a069f87ada6c15f521889eca","dweb:/ipfs/QmRaBjbqtEZaRU7yy2KAAD879wGjDQEpUVGQfGbrMC2K86"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"}},"version":1},"id":85} \ No newline at end of file diff --git a/abis/IERC1155ApprovalManager.json b/abis/IERC1155ApprovalManager.json new file mode 100644 index 0000000..40b934b --- /dev/null +++ b/abis/IERC1155ApprovalManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"batchGrantOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchRevokeOperatorRole","inputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disable","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"grantOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeOperatorRole","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"disabler","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContractDisabledError","inputs":[]},{"type":"error","name":"NotOperator","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"batchGrantOperatorRole(address[])":"01eed9b1","batchRevokeOperatorRole(address[])":"1e482447","disable()":"2f2770db","disabled()":"ee070805","grantOperatorRole(address)":"27ac0c58","revokeOperatorRole(address)":"b219f7d7","safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":"7ee7f69b","safeTransferFrom(address,address,address,uint256,uint256,bytes)":"eb46c45b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ContractDisabledError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperator\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disabler\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchGrantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"batchRevokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"grantOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperatorRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ContractDisabled(address)\":{\"params\":{\"disabler\":\"The manager that disabled the approval manager.\"}}},\"kind\":\"dev\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to grant the role to.\"}},\"batchRevokeOperatorRole(address[])\":{\"params\":{\"operators\":\"Contract addresses to revoke the role from.\"}},\"disable()\":{\"details\":\"Callable by an account with the manager role.\"},\"disabled()\":{\"returns\":{\"_0\":\"True when token transfer execution is disabled.\"}},\"grantOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to grant the role to.\"}},\"revokeOperatorRole(address)\":{\"params\":{\"operator\":\"The contract address to revoke the role from.\"}},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"params\":{\"amounts\":\"The amounts of each token id to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"ids\":\"The token ids to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"data\":\"Additional data with no specified format.\",\"from\":\"The address to transfer from.\",\"id\":\"The token id to transfer.\",\"to\":\"The recipient address.\",\"token\":\"The ERC1155 token contract address.\"}}},\"title\":\"IERC1155ApprovalManager\",\"version\":1},\"userdoc\":{\"errors\":{\"ContractDisabledError()\":[{\"notice\":\"Error thrown when contract is disabled.\"}],\"NotOperator()\":[{\"notice\":\"Error thrown when caller is not an operator.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Event emitted when contract is disabled.\"}},\"kind\":\"user\",\"methods\":{\"batchGrantOperatorRole(address[])\":{\"notice\":\"Grants operator transfer permissions to multiple contracts.\"},\"batchRevokeOperatorRole(address[])\":{\"notice\":\"Revokes operator transfer permissions from multiple contracts.\"},\"disable()\":{\"notice\":\"Disables token transfers through the approval manager permanently.\"},\"disabled()\":{\"notice\":\"Returns whether the approval manager is permanently disabled.\"},\"grantOperatorRole(address)\":{\"notice\":\"Grants operator transfer permissions to a contract.\"},\"revokeOperatorRole(address)\":{\"notice\":\"Revokes operator transfer permissions from a contract.\"},\"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Safely transfer a batch of ERC1155 tokens from a user to a recipient.\"},\"safeTransferFrom(address,address,address,uint256,uint256,bytes)\":{\"notice\":\"Safely transfer ERC1155 tokens from a user to a recipient.\"}},\"notice\":\"Interface for managing ERC1155 token approvals and transfers.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":\"IERC1155ApprovalManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ContractDisabledError"},{"inputs":[],"type":"error","name":"NotOperator"},{"inputs":[{"internalType":"address","name":"disabler","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantOperatorRole"},{"inputs":[{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchRevokeOperatorRole"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disable"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantOperatorRole"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeOperatorRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"}],"devdoc":{"kind":"dev","methods":{"batchGrantOperatorRole(address[])":{"params":{"operators":"Contract addresses to grant the role to."}},"batchRevokeOperatorRole(address[])":{"params":{"operators":"Contract addresses to revoke the role from."}},"disable()":{"details":"Callable by an account with the manager role."},"disabled()":{"returns":{"_0":"True when token transfer execution is disabled."}},"grantOperatorRole(address)":{"params":{"operator":"The contract address to grant the role to."}},"revokeOperatorRole(address)":{"params":{"operator":"The contract address to revoke the role from."}},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"params":{"amounts":"The amounts of each token id to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","ids":"The token ids to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"params":{"amount":"The amount of tokens to transfer.","data":"Additional data with no specified format.","from":"The address to transfer from.","id":"The token id to transfer.","to":"The recipient address.","token":"The ERC1155 token contract address."}}},"version":1},"userdoc":{"kind":"user","methods":{"batchGrantOperatorRole(address[])":{"notice":"Grants operator transfer permissions to multiple contracts."},"batchRevokeOperatorRole(address[])":{"notice":"Revokes operator transfer permissions from multiple contracts."},"disable()":{"notice":"Disables token transfers through the approval manager permanently."},"disabled()":{"notice":"Returns whether the approval manager is permanently disabled."},"grantOperatorRole(address)":{"notice":"Grants operator transfer permissions to a contract."},"revokeOperatorRole(address)":{"notice":"Revokes operator transfer permissions from a contract."},"safeBatchTransferFrom(address,address,address,uint256[],uint256[],bytes)":{"notice":"Safely transfer a batch of ERC1155 tokens from a user to a recipient."},"safeTransferFrom(address,address,address,uint256,uint256,bytes)":{"notice":"Safely transfer ERC1155 tokens from a user to a recipient."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":"IERC1155ApprovalManager"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"}},"version":1},"id":86} \ No newline at end of file diff --git a/abis/IRareERC1155.json b/abis/IRareERC1155.json new file mode 100644 index 0000000..8d6ad27 --- /dev/null +++ b/abis/IRareERC1155.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"royaltyAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","init(string,string,string,address,address)":"a7eae21c","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","royaltyInfo(uint256,uint256)":"2a55205a","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve the collection creator.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"Collection owner reported as creator when the token id is created.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"disabled()\":{\"returns\":{\"_0\":\"True when disabled.\"}},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"name()\":{\"returns\":{\"_0\":\"Collection name.\"}},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"returns\":{\"_0\":\"Collection symbol.\"}},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"title\":\"IRareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 token.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155.sol\":\"IRareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"MAX_BATCH_SIZE()":{"returns":{"_0":"Maximum supported batch item count."}},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"disabled()":{"returns":{"_0":"True when disabled."}},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"name()":{"returns":{"_0":"Collection name."}},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"returns":{"_0":"Collection symbol."}},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155.sol":"IRareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":80} \ No newline at end of file diff --git a/abis/IRareERC1155CheckoutExecutionModule.json b/abis/IRareERC1155CheckoutExecutionModule.json new file mode 100644 index 0000000..b4359cb --- /dev/null +++ b/abis/IRareERC1155CheckoutExecutionModule.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutItem","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_remainingEth","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[{"name":"totalPaid","type":"uint256","internalType":"uint256"},{"name":"newRemainingEth","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutPayout","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":"59a8a40a","executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":"d65852a6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_remainingEth\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutItem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newRemainingEth\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutPayout\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Module-only entrypoint; the marketplace proxy does not expose this selector.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"details\":\"Module-only entrypoint; the marketplace proxy does not expose this selector.\"}},\"title\":\"IRareERC1155CheckoutExecutionModule\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes one already validated checkout item through a nested delegatecall rollback boundary.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes payout for a checkout item through a nested rollback boundary.\"}},\"notice\":\"Checkout entrypoints executed through `RareERC1155Marketplace` delegatecalls.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155CheckoutExecutionModule.sol\":\"IRareERC1155CheckoutExecutionModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/marketplace/IRareERC1155CheckoutExecutionModule.sol\":{\"keccak256\":\"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a\",\"dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"uint256","name":"_remainingEth","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutItem","outputs":[{"internalType":"uint256","name":"totalPaid","type":"uint256"},{"internalType":"uint256","name":"newRemainingEth","type":"uint256"}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutPayout"}],"devdoc":{"kind":"dev","methods":{"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"details":"Module-only entrypoint; the marketplace proxy does not expose this selector."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"details":"Module-only entrypoint; the marketplace proxy does not expose this selector."}},"version":1},"userdoc":{"kind":"user","methods":{"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Executes one already validated checkout item through a nested delegatecall rollback boundary."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"notice":"Executes payout for a checkout item through a nested rollback boundary."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155CheckoutExecutionModule.sol":"IRareERC1155CheckoutExecutionModule"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/marketplace/IRareERC1155CheckoutExecutionModule.sol":{"keccak256":"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564","urls":["bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a","dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"}},"version":1},"id":158} \ No newline at end of file diff --git a/abis/IRareERC1155ContractFactory.json b/abis/IRareERC1155ContractFactory.json new file mode 100644 index 0000000..e39087c --- /dev/null +++ b/abis/IRareERC1155ContractFactory.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"clone","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","rareERC1155()":"014812a2","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"clone\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"clone\":\"Address of the newly created ERC1155 clone.\"}},\"defaultMinter()\":{\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155()\":{\"returns\":{\"_0\":\"ERC1155 implementation address.\"}},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}}},\"title\":\"IRareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Interface for the RARE Protocol ERC1155 clone factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":\"IRareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"clone","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"clone":"Address of the newly created ERC1155 clone."}},"defaultMinter()":{"returns":{"_0":"Default minter address. Zero address means no default minter."}},"rareERC1155()":{"returns":{"_0":"ERC1155 implementation address."}},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}}},"version":1},"userdoc":{"kind":"user","methods":{"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":"IRareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"}},"version":1},"id":81} \ No newline at end of file diff --git a/abis/IRareERC1155Listings.json b/abis/IRareERC1155Listings.json new file mode 100644 index 0000000..c3b4d04 --- /dev/null +++ b/abis/IRareERC1155Listings.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelSalePrices(address,uint256[])":"2f79f335","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address)":"76902b83","isPaused()":"b187bd26","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Listings.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Listings.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155Listings.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Primary sales are configured per `(collection, tokenId)`. Secondary listings are approval-based and keyed by `(collection, tokenId, seller)`. Secondary listings intentionally do not expire on-chain; they remain fillable until sold, cancelled, or made invalid by seller balance, ERC1155 approval, or currency policy.\",\"errors\":{\"AddressNotAllowlisted(address)\":[{\"params\":{\"_account\":\"Buyer account that failed allowlist verification.\"}}],\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"ContractHasNoOwner(address)\":[{\"params\":{\"_contractAddress\":\"Contract that did not expose a valid `owner()`.\"}}],\"CurrencyMismatch(address,address)\":[{\"params\":{\"_configuredCurrency\":\"Currency stored in marketplace configuration.\",\"_suppliedCurrency\":\"Currency supplied by the caller.\"}}],\"CurrencyNotApproved(address)\":[{\"params\":{\"_currencyAddress\":\"Currency that failed approval.\"}}],\"DirectSaleNotConfigured(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Token id missing a primary sale config.\"}}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"params\":{\"_currencyAddress\":\"ERC20 token address.\",\"_expectedAmount\":\"Amount expected by the marketplace.\",\"_receivedAmount\":\"Amount actually received by the marketplace.\"}}],\"IncorrectETHAmount(uint256,uint256)\":[{\"params\":{\"_requiredAmount\":\"Amount required by the marketplace.\",\"_suppliedAmount\":\"Amount supplied as `msg.value`.\"}}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Account whose balance was checked.\",\"_availableQuantity\":\"Quantity available at check time.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_requestedQuantity\":\"Quantity required by the operation.\",\"_tokenId\":\"Token id whose balance was checked.\"}}],\"InvalidERC1155Contract(address)\":[{\"params\":{\"_contractAddress\":\"Collection address that failed validation.\"}}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"params\":{\"_buyer\":\"Buyer whose balance should increase.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_quantity\":\"Quantity that should be transferred.\",\"_seller\":\"Seller whose balance should decrease.\",\"_tokenId\":\"Token id transferred.\"}}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"params\":{\"_field\":\"Name of the dependency field that was zero.\"}}],\"MarketplaceNotApproved(address,address)\":[{\"params\":{\"_account\":\"ERC1155 owner that must approve the marketplace.\",\"_contractAddress\":\"ERC1155 collection address.\"}}],\"MaxMintExceeded(uint256,uint256)\":[{\"params\":{\"_maxMints\":\"Configured max quantity per transaction.\",\"_requestedQuantity\":\"Requested mint quantity.\"}}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured mint limit.\",\"_mintedQuantity\":\"Quantity already minted by the account.\",\"_requestedQuantity\":\"Requested mint quantity.\",\"_tokenId\":\"Token id being minted.\"}}],\"NotContractOwner(address,address)\":[{\"params\":{\"_account\":\"Account that failed the owner check.\",\"_contractAddress\":\"Collection address whose owner was checked.\"}}],\"PayoutFailed(bytes)\":[{\"params\":{\"_revertData\":\"Raw revert data returned by the failed payout call.\"}}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"params\":{\"_amountsLength\":\"Number of payout amounts supplied.\",\"_recipientsLength\":\"Number of payout recipients supplied.\"}}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"params\":{\"_actualAmount\":\"Sum of supplied payout amounts.\",\"_expectedAmount\":\"Amount expected to be paid by the batch.\"}}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"params\":{\"_maxPlatformCommission\":\"Maximum supported platform commission percentage.\",\"_platformCommission\":\"Supplied primary platform commission percentage.\"}}],\"PriceMismatch(uint256,uint256)\":[{\"params\":{\"_configuredPrice\":\"Price stored in marketplace configuration.\",\"_suppliedPrice\":\"Price supplied by the caller.\"}}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"params\":{\"_availableQuantity\":\"Quantity currently listed.\",\"_requestedQuantity\":\"Quantity requested by the buyer.\"}}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"params\":{\"_royalties\":\"Total royalties returned by the royalty engine.\",\"_saleAmount\":\"Gross sale amount before royalty deduction.\"}}],\"SaleNotStarted(uint256)\":[{\"params\":{\"_startTime\":\"Configured sale start timestamp.\"}}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SalePriceExpirationInvalid(uint256,uint256)\":[{\"params\":{\"_currentTime\":\"Current block timestamp.\",\"_expirationTime\":\"Expiration supplied for the listing.\"}}],\"SalePriceExpired(address,uint256,address,uint256)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_expirationTime\":\"Stored listing expiration timestamp.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SelfPurchaseUnsupported(address)\":[{\"params\":{\"_seller\":\"Seller whose listing was targeted.\"}}],\"SplitLengthMismatch(uint256,uint256)\":[{\"params\":{\"_ratiosLength\":\"Supplied ratio count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitRatioCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split ratio.\"}}],\"SplitRecipientCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split recipient.\"}}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"params\":{\"_maxRecipients\":\"Maximum supported recipient count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitTotalInvalid(uint256,uint256)\":[{\"params\":{\"_requiredTotal\":\"Required ratio total.\",\"_totalRatio\":\"Supplied ratio total.\"}}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"params\":{\"_marketplaceFee\":\"Total marketplace fee collected from the buyer.\",\"_stakingFee\":\"Staking portion requested by staking settings.\"}}],\"TokenIdsNotStrictlyAscending(uint256,uint256,uint256)\":[{\"params\":{\"index\":\"Index of the token id that is not greater than the previous token id.\",\"previousTokenId\":\"Token id at `index - 1`.\",\"tokenId\":\"Token id at `index`.\"}}],\"TokenNotFound(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Missing token id.\"}}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured transaction limit.\",\"_tokenId\":\"Token id being minted.\",\"_usedTransactions\":\"Transactions already used by the account.\"}}]},\"events\":{\"ContractPausedUpdated(bool)\":{\"params\":{\"isPaused\":\"True when marketplace writes are paused.\"}},\"MarketplaceDependencyUpdated(bytes32,address)\":{\"params\":{\"dependency\":\"New dependency address.\",\"field\":\"Config field that was updated.\"}},\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"params\":{\"buyer\":\"Address that paid for and received the mint.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity minted.\",\"seller\":\"Creator/seller that received proceeds.\",\"tokenId\":\"Minted token id.\"}},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"maxMints\":\"Max quantity per transaction. Zero means unlimited.\",\"price\":\"Unit price per token.\",\"seller\":\"Creator/seller that receives sale proceeds.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"startTime\":\"Timestamp when minting may begin.\",\"tokenId\":\"Token id sold by the primary sale.\"}},\"SalePriceCancelled(address,address,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"seller\":\"Seller that cancelled the listing.\",\"tokenId\":\"Token id whose listing was cancelled.\"}},\"SalePriceSet(address,address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Listing currency. Zero address indicates ETH.\",\"expirationTime\":\"Timestamp when the listing can no longer be filled. Zero means no expiration.\",\"price\":\"Unit price per token.\",\"quantity\":\"Quantity listed.\",\"seller\":\"Seller that owns the listed ERC1155 balance.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"tokenId\":\"Listed token id.\"}},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"root\":\"Merkle root for allowlisted buyers.\",\"tokenId\":\"Token id controlled by the allowlist.\"}},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"params\":{\"buyer\":\"Buyer that paid and received the ERC1155 tokens.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Purchase currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity purchased.\",\"seller\":\"Seller that transferred the ERC1155 tokens.\",\"tokenId\":\"Purchased token id.\"}},\"TokenMintLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max quantity each address may mint while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"TokenTxLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max mint transactions each address may submit while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending. A one-token buy is represented by a one-item batch.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_requests\":\"Buy requests to execute.\",\"_seller\":\"Seller whose listing is being filled.\"}},\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenIds\":\"Listed token ids.\"}},\"getDirectSaleConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Primary sale config for the token id.\"}},\"getERC1155ApprovalManager()\":{\"returns\":{\"_0\":\"Current ERC1155 approval manager address.\"}},\"getMarketConfig()\":{\"returns\":{\"_0\":\"Current market config struct.\"}},\"getSalePrice(address,uint256,address)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing is returned.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Secondary fixed-price listing for the seller and token id.\"}},\"getTokenAllowListConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Allowlist config for the token id.\"}},\"getTokenMintLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Mint quantity limit. Zero means disabled/unlimited.\"}},\"getTokenMintsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose minted quantity is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Quantity minted by `_address` during enabled mint-limit periods.\"}},\"getTokenTxLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Transaction limit. Zero means disabled/unlimited.\"}},\"getTokenTxsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose transaction count is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Number of mint transactions used by `_address` during enabled tx-limit periods.\"}},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"params\":{\"_approvedTokenRegistry\":\"Registry of approved ERC20 currencies.\",\"_erc1155ApprovalManager\":\"ERC1155 transfer manager for seller token approvals.\",\"_erc20ApprovalManager\":\"ERC20 transfer manager for buyer currency approvals.\",\"_erc721ApprovalManager\":\"ERC721 transfer manager kept in shared V2 market config.\",\"_marketplaceSettings\":\"Marketplace settings contract.\",\"_networkBeneficiary\":\"Address receiving network marketplace fees.\",\"_payments\":\"Payments contract used for ETH fan-out.\",\"_royaltyEngine\":\"Royalty engine contract.\",\"_spaceOperatorRegistry\":\"Space operator registry contract.\",\"_stakingRegistry\":\"Staking registry contract.\",\"_stakingSettings\":\"Staking fee settings contract.\"}},\"isPaused()\":{\"returns\":{\"_0\":\"True when paused.\"}},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Request token ids must be strictly ascending. Each token id included in a batch consumes one transaction against that token's tx limit when the token tx limit is enabled.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_requests\":\"Mint requests to execute.\"}},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending. A one-token sale is represented by a one-item batch.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Sale currency. Zero address indicates ETH.\",\"_requests\":\"Sale configs to apply.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\"}},\"setApprovedTokenRegistry(address)\":{\"params\":{\"_approvedTokenRegistry\":\"New approved token registry contract.\"}},\"setContractPaused(bool)\":{\"params\":{\"_isPaused\":\"New pause state.\"}},\"setERC1155ApprovalManager(address)\":{\"params\":{\"_erc1155ApprovalManager\":\"New ERC1155 approval manager contract.\"}},\"setERC20ApprovalManager(address)\":{\"params\":{\"_erc20ApprovalManager\":\"New ERC20 approval manager contract.\"}},\"setERC721ApprovalManager(address)\":{\"params\":{\"_erc721ApprovalManager\":\"New ERC721 approval manager contract.\"}},\"setMarketplaceSettings(address)\":{\"params\":{\"_marketplaceSettings\":\"New marketplace settings contract.\"}},\"setNetworkBeneficiary(address)\":{\"params\":{\"_networkBeneficiary\":\"New network beneficiary.\"}},\"setPayments(address)\":{\"params\":{\"_payments\":\"New payments contract.\"}},\"setRoyaltyEngine(address)\":{\"params\":{\"_royaltyEngine\":\"New royalty engine contract.\"}},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending. `expirationTime == 0` means no expiration. Listings can be cancelled by the seller with `cancelSalePrices`.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Listing currency. Zero address indicates ETH.\",\"_requests\":\"Listing configs to apply.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\"}},\"setSpaceOperatorRegistry(address)\":{\"params\":{\"_spaceOperatorRegistry\":\"New space operator registry contract.\"}},\"setStakingRegistry(address)\":{\"params\":{\"_stakingRegistry\":\"New staking registry contract.\"}},\"setStakingSettings(address)\":{\"params\":{\"_stakingSettings\":\"New staking settings contract.\"}},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Allowlist configs to apply.\"}},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Mint limits to apply. Zero disables a token id's limit and disabled periods are not counted.\"}},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Transaction limits to apply. Zero disables a token id's limit and disabled periods are not counted.\"}}},\"title\":\"IRareERC1155Listings\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressNotAllowlisted(address)\":[{\"notice\":\"Reverted when a buyer is not included in an active allowlist.\"}],\"ApprovalManagerCannotBeZero()\":[{\"notice\":\"Reverted when an approval manager address is zero.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"ContractHasNoOwner(address)\":[{\"notice\":\"Reverted when ownership cannot be read from a collection.\"}],\"ContractPaused()\":[{\"notice\":\"Reverted when a write function is called while the marketplace is paused.\"}],\"CurrencyMismatch(address,address)\":[{\"notice\":\"Reverted when a caller-supplied currency does not match the configured currency.\"}],\"CurrencyNotApproved(address)\":[{\"notice\":\"Reverted when a currency is neither ETH nor approved by the token registry.\"}],\"DirectSaleNotConfigured(address,uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before sale configuration exists.\"}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"notice\":\"Reverted when an ERC20 transfer receives less or more than expected.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"IncorrectETHAmount(uint256,uint256)\":[{\"notice\":\"Reverted when an ETH purchase sends the wrong `msg.value`.\"}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a seller does not have enough ERC1155 balance for a listing or purchase.\"}],\"InvalidERC1155Contract(address)\":[{\"notice\":\"Reverted when a secondary collection is not a deployed ERC1155 contract.\"}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"notice\":\"Reverted when an ERC1155 transfer completes without exact seller and buyer balance deltas.\"}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"notice\":\"Reverted when a required market config dependency address is zero.\"}],\"MarketplaceNotApproved(address,address)\":[{\"notice\":\"Reverted when the marketplace is not approved to transfer a seller's ERC1155 tokens.\"}],\"MaxMintExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a mint quantity exceeds the sale's per-transaction max.\"}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address mint limit for a token id.\"}],\"MsgValueMustBeZero()\":[{\"notice\":\"Reverted when a free mint includes ETH.\"}],\"MsgValueUnsupportedForERC20()\":[{\"notice\":\"Reverted when ETH is supplied for an ERC20 purchase.\"}],\"NotContractOwner(address,address)\":[{\"notice\":\"Reverted when a caller is not the owner of a collection.\"}],\"PayoutFailed(bytes)\":[{\"notice\":\"Reverted when ETH payout through the Payments contract fails.\"}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout recipients and amounts have different lengths.\"}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout amounts do not sum to the expected batch amount.\"}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when primary platform commission exceeds 100%.\"}],\"PriceMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when a caller-supplied price does not match the configured price.\"}],\"QuantityCannotBeZero()\":[{\"notice\":\"Reverted when a quantity argument is zero.\"}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"notice\":\"Reverted when a purchase quantity exceeds listed quantity.\"}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"notice\":\"Reverted when royalties returned by the royalty engine exceed sale proceeds.\"}],\"SaleNotStarted(uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before the start time.\"}],\"SalePriceCannotBeZero()\":[{\"notice\":\"Reverted when a secondary listing price is zero.\"}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"notice\":\"Reverted when no secondary listing exists for a seller and token id.\"}],\"SalePriceExpirationInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when a secondary listing expiration is nonzero and not in the future.\"}],\"SalePriceExpired(address,uint256,address,uint256)\":[{\"notice\":\"Reverted when a buyer tries to fill an expired secondary listing.\"}],\"SelfPurchaseUnsupported(address)\":[{\"notice\":\"Reverted when a buyer tries to fill their own secondary listing.\"}],\"SplitLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when split recipient and ratio arrays have different lengths.\"}],\"SplitRatioCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split ratio is zero.\"}],\"SplitRecipientCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split recipient is the zero address.\"}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"notice\":\"Reverted when a sale config has more split recipients than supported.\"}],\"SplitRecipientsRequired()\":[{\"notice\":\"Reverted when a sale config has no split recipients.\"}],\"SplitTotalInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when split ratios do not total 100.\"}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"notice\":\"Reverted when the staking fee exceeds the buyer-paid marketplace fee.\"}],\"TokenIdsNotStrictlyAscending(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"TokenNotFound(address,uint256)\":[{\"notice\":\"Reverted when a token id has not been created on a collection.\"}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address transaction limit for a token id.\"}]},\"events\":{\"ContractPausedUpdated(bool)\":{\"notice\":\"Emitted when an owner updates marketplace pause state.\"},\"MarketplaceDependencyUpdated(bytes32,address)\":{\"notice\":\"Emitted when an owner updates a critical marketplace dependency.\"},\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a buyer mints through a primary sale.\"},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a creator configures a primary mint sale.\"},\"SalePriceCancelled(address,address,uint256)\":{\"notice\":\"Emitted when a seller cancels a secondary listing.\"},\"SalePriceSet(address,address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a seller creates or replaces a secondary fixed-price listing.\"},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"notice\":\"Emitted when a token allowlist config is set.\"},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when a buyer fills a secondary fixed-price listing.\"},\"TokenMintLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address mint limit is set for a token id.\"},\"TokenTxLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address transaction limit is set for a token id.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch operations.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"getDirectSaleConfig(address,uint256)\":{\"notice\":\"Returns the primary mint sale config for a token id.\"},\"getERC1155ApprovalManager()\":{\"notice\":\"Returns the ERC1155 approval manager used for secondary transfers.\"},\"getMarketConfig()\":{\"notice\":\"Returns the marketplace dependency configuration.\"},\"getSalePrice(address,uint256,address)\":{\"notice\":\"Returns a seller's secondary fixed-price listing.\"},\"getTokenAllowListConfig(address,uint256)\":{\"notice\":\"Returns the allowlist config for a token id.\"},\"getTokenMintLimit(address,uint256)\":{\"notice\":\"Returns the per-address mint quantity limit for a token id.\"},\"getTokenMintsPerAddress(address,uint256,address)\":{\"notice\":\"Returns quantity minted by an address for a token id while the mint limit was enabled.\"},\"getTokenTxLimit(address,uint256)\":{\"notice\":\"Returns the per-address transaction limit for a token id.\"},\"getTokenTxsPerAddress(address,uint256,address)\":{\"notice\":\"Returns mint transactions used by an address for a token id while the tx limit was enabled.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace implementation behind a proxy.\"},\"isPaused()\":{\"notice\":\"Returns whether marketplace writes are paused.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setApprovedTokenRegistry(address)\":{\"notice\":\"Updates the approved token registry address.\"},\"setContractPaused(bool)\":{\"notice\":\"Pauses or unpauses marketplace write operations.\"},\"setERC1155ApprovalManager(address)\":{\"notice\":\"Updates the ERC1155 approval manager address.\"},\"setERC20ApprovalManager(address)\":{\"notice\":\"Updates the ERC20 approval manager address.\"},\"setERC721ApprovalManager(address)\":{\"notice\":\"Updates the ERC721 approval manager address retained by the shared V2 market config.\"},\"setMarketplaceSettings(address)\":{\"notice\":\"Updates the marketplace settings contract address.\"},\"setNetworkBeneficiary(address)\":{\"notice\":\"Updates the network beneficiary address.\"},\"setPayments(address)\":{\"notice\":\"Updates the Payments contract address used for ETH fan-out.\"},\"setRoyaltyEngine(address)\":{\"notice\":\"Updates the royalty engine address.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setSpaceOperatorRegistry(address)\":{\"notice\":\"Updates the space operator registry address.\"},\"setStakingRegistry(address)\":{\"notice\":\"Updates the staking registry address.\"},\"setStakingSettings(address)\":{\"notice\":\"Updates the staking settings address.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets the max quantity each address may mint for token ids while the limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets the max number of mint transactions each address may submit for token ids while the limit is enabled.\"}},\"notice\":\"Interface for RARE Protocol ERC1155 primary mint sales and ERC1155 fixed-price secondary sales.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155Listings.sol\":\"IRareERC1155Listings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Listings.sol\":{\"keccak256\":\"0x4772059a1b272c84ea7ea7d463ba92e67aded8ec11219a7d8117e12b47e59f52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45ccce54d9d11c50b7829e31443a39b196e9b17bceae954b59b562bdcc3d1f43\",\"dweb:/ipfs/QmeMQR5XVVmFSYUUmofn2sHC88e63vAv6ENjWjotPYi8Xa\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"pure","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155Listings.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155Listings.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155Listings.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"}],"devdoc":{"kind":"dev","methods":{"MAX_BATCH_SIZE()":{"returns":{"_0":"Maximum supported batch item count."}},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Request token ids must be strictly ascending. A one-token buy is represented by a one-item batch.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_requests":"Buy requests to execute.","_seller":"Seller whose listing is being filled."}},"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_tokenIds":"Listed token ids."}},"getDirectSaleConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Primary sale config for the token id."}},"getERC1155ApprovalManager()":{"returns":{"_0":"Current ERC1155 approval manager address."}},"getMarketConfig()":{"returns":{"_0":"Current market config struct."}},"getSalePrice(address,uint256,address)":{"params":{"_contractAddress":"ERC1155 collection address.","_seller":"Seller whose listing is returned.","_tokenId":"Token id to inspect."},"returns":{"_0":"Secondary fixed-price listing for the seller and token id."}},"getTokenAllowListConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Allowlist config for the token id."}},"getTokenMintLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Mint quantity limit. Zero means disabled/unlimited."}},"getTokenMintsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose minted quantity is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Quantity minted by `_address` during enabled mint-limit periods."}},"getTokenTxLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Transaction limit. Zero means disabled/unlimited."}},"getTokenTxsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose transaction count is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Number of mint transactions used by `_address` during enabled tx-limit periods."}},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"params":{"_approvedTokenRegistry":"Registry of approved ERC20 currencies.","_erc1155ApprovalManager":"ERC1155 transfer manager for seller token approvals.","_erc20ApprovalManager":"ERC20 transfer manager for buyer currency approvals.","_erc721ApprovalManager":"ERC721 transfer manager kept in shared V2 market config.","_marketplaceSettings":"Marketplace settings contract.","_networkBeneficiary":"Address receiving network marketplace fees.","_payments":"Payments contract used for ETH fan-out.","_royaltyEngine":"Royalty engine contract.","_spaceOperatorRegistry":"Space operator registry contract.","_stakingRegistry":"Staking registry contract.","_stakingSettings":"Staking fee settings contract."}},"isPaused()":{"returns":{"_0":"True when paused."}},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Request token ids must be strictly ascending. Each token id included in a batch consumes one transaction against that token's tx limit when the token tx limit is enabled.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_requests":"Mint requests to execute."}},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending. A one-token sale is represented by a one-item batch.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Sale currency. Zero address indicates ETH.","_requests":"Sale configs to apply.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds."}},"setApprovedTokenRegistry(address)":{"params":{"_approvedTokenRegistry":"New approved token registry contract."}},"setContractPaused(bool)":{"params":{"_isPaused":"New pause state."}},"setERC1155ApprovalManager(address)":{"params":{"_erc1155ApprovalManager":"New ERC1155 approval manager contract."}},"setERC20ApprovalManager(address)":{"params":{"_erc20ApprovalManager":"New ERC20 approval manager contract."}},"setERC721ApprovalManager(address)":{"params":{"_erc721ApprovalManager":"New ERC721 approval manager contract."}},"setMarketplaceSettings(address)":{"params":{"_marketplaceSettings":"New marketplace settings contract."}},"setNetworkBeneficiary(address)":{"params":{"_networkBeneficiary":"New network beneficiary."}},"setPayments(address)":{"params":{"_payments":"New payments contract."}},"setRoyaltyEngine(address)":{"params":{"_royaltyEngine":"New royalty engine contract."}},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending. `expirationTime == 0` means no expiration. Listings can be cancelled by the seller with `cancelSalePrices`.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Listing currency. Zero address indicates ETH.","_requests":"Listing configs to apply.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds."}},"setSpaceOperatorRegistry(address)":{"params":{"_spaceOperatorRegistry":"New space operator registry contract."}},"setStakingRegistry(address)":{"params":{"_stakingRegistry":"New staking registry contract."}},"setStakingSettings(address)":{"params":{"_stakingSettings":"New staking settings contract."}},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Allowlist configs to apply."}},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Mint limits to apply. Zero disables a token id's limit and disabled periods are not counted."}},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Transaction limits to apply. Zero disables a token id's limit and disabled periods are not counted."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch operations."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"getDirectSaleConfig(address,uint256)":{"notice":"Returns the primary mint sale config for a token id."},"getERC1155ApprovalManager()":{"notice":"Returns the ERC1155 approval manager used for secondary transfers."},"getMarketConfig()":{"notice":"Returns the marketplace dependency configuration."},"getSalePrice(address,uint256,address)":{"notice":"Returns a seller's secondary fixed-price listing."},"getTokenAllowListConfig(address,uint256)":{"notice":"Returns the allowlist config for a token id."},"getTokenMintLimit(address,uint256)":{"notice":"Returns the per-address mint quantity limit for a token id."},"getTokenMintsPerAddress(address,uint256,address)":{"notice":"Returns quantity minted by an address for a token id while the mint limit was enabled."},"getTokenTxLimit(address,uint256)":{"notice":"Returns the per-address transaction limit for a token id."},"getTokenTxsPerAddress(address,uint256,address)":{"notice":"Returns mint transactions used by an address for a token id while the tx limit was enabled."},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace implementation behind a proxy."},"isPaused()":{"notice":"Returns whether marketplace writes are paused."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setApprovedTokenRegistry(address)":{"notice":"Updates the approved token registry address."},"setContractPaused(bool)":{"notice":"Pauses or unpauses marketplace write operations."},"setERC1155ApprovalManager(address)":{"notice":"Updates the ERC1155 approval manager address."},"setERC20ApprovalManager(address)":{"notice":"Updates the ERC20 approval manager address."},"setERC721ApprovalManager(address)":{"notice":"Updates the ERC721 approval manager address retained by the shared V2 market config."},"setMarketplaceSettings(address)":{"notice":"Updates the marketplace settings contract address."},"setNetworkBeneficiary(address)":{"notice":"Updates the network beneficiary address."},"setPayments(address)":{"notice":"Updates the Payments contract address used for ETH fan-out."},"setRoyaltyEngine(address)":{"notice":"Updates the royalty engine address."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setSpaceOperatorRegistry(address)":{"notice":"Updates the space operator registry address."},"setStakingRegistry(address)":{"notice":"Updates the staking registry address."},"setStakingSettings(address)":{"notice":"Updates the staking settings address."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets the max quantity each address may mint for token ids while the limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets the max number of mint transactions each address may submit for token ids while the limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155Listings.sol":"IRareERC1155Listings"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Listings.sol":{"keccak256":"0x4772059a1b272c84ea7ea7d463ba92e67aded8ec11219a7d8117e12b47e59f52","urls":["bzz-raw://45ccce54d9d11c50b7829e31443a39b196e9b17bceae954b59b562bdcc3d1f43","dweb:/ipfs/QmeMQR5XVVmFSYUUmofn2sHC88e63vAv6ENjWjotPYi8Xa"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":71} \ No newline at end of file diff --git a/abis/IRareERC1155Marketplace.json b/abis/IRareERC1155Marketplace.json new file mode 100644 index 0000000..0c8d0a9 --- /dev/null +++ b/abis/IRareERC1155Marketplace.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"getCheckoutExecutionModule","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.Offer","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"initialQuantity","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeTotal","type":"uint256","internalType":"uint256"},{"name":"stakingFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"stakingFeeTotal","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeExecutionModule","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"},{"name":"_tradeExecutionModule","type":"address","internalType":"address"},{"name":"_checkoutExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"makeOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCheckoutExecutionModule","inputs":[{"name":"_checkoutExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTradeExecutionModule","inputs":[{"name":"_tradeExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelMintDirectSales(address,uint256[])":"5e50c42e","cancelOffer(address,uint256,address)":"e92f94d1","cancelSalePrices(address,uint256[])":"2f79f335","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","getCheckoutExecutionModule()":"9400d601","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getOffer(address,uint256,address,address)":"e3409ce3","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","getTradeExecutionModule()":"ed5b25b5","initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)":"2fdd983d","isPaused()":"b187bd26","makeOffer(address,uint256,address,uint256,uint256,uint256)":"b38df71f","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","setApprovedTokenRegistry(address)":"e4e87e3b","setCheckoutExecutionModule(address)":"63cf9cef","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e","setTradeExecutionModule(address)":"a0f597dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"cancelOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCheckoutExecutionModule\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"getOffer\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeTotal\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakingFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakingFeeTotal\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.Offer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTradeExecutionModule\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tradeExecutionModule\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_checkoutExecutionModule\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"makeOffer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_checkoutExecutionModule\",\"type\":\"address\"}],\"name\":\"setCheckoutExecutionModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tradeExecutionModule\",\"type\":\"address\"}],\"name\":\"setTradeExecutionModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{\"cancelMintDirectSales(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Best-effort execution returns one result per item. All-skipped checkouts complete successfully.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"}},\"title\":\"IRareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer through the trade execution module.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings through the trade execution module.\"},\"cancelMintDirectSales(address,uint256[])\":{\"notice\":\"Cancels configured primary mint sales for token ids.\"},\"cancelOffer(address,uint256,address)\":{\"notice\":\"Cancels the caller's offer for one token id and currency.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace proxy.\"},\"makeOffer(address,uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Creates or replaces a token-level ERC1155 offer.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales through the trade execution module.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max quantity each address may mint for token ids while a limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max mint transactions each address may submit for token ids while a limit is enabled.\"}},\"notice\":\"Interface for ERC1155 marketplace state creation, escrow, configuration, and execution module routing.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155Marketplace.sol\":\"IRareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0xe1d12e07644cf56ed2dcb98e690ca93775b13a03189b4a802d6134c2c2e921b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1099e8215c451fa6dad6f8be5c196c3915dc3b911d4507d46cd9f7f20e29335e\",\"dweb:/ipfs/QmUiW9oVP6Ft4C57zGE6ZWnkMKzJ8DzJoaBemKzBdWbLUK\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70\",\"dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelMintDirectSales"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cancelOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCheckoutExecutionModule","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"view","type":"function","name":"getOffer","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.Offer","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"initialQuantity","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeTotal","type":"uint256"},{"internalType":"uint256","name":"stakingFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"stakingFeeTotal","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTradeExecutionModule","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"},{"internalType":"address","name":"_tradeExecutionModule","type":"address"},{"internalType":"address","name":"_checkoutExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"stateMutability":"payable","type":"function","name":"makeOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"address","name":"_checkoutExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setCheckoutExecutionModule"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"},{"inputs":[{"internalType":"address","name":"_tradeExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTradeExecutionModule"}],"devdoc":{"kind":"dev","methods":{"cancelMintDirectSales(address,uint256[])":{"details":"Token ids must be strictly ascending."},"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Best-effort execution returns one result per item. All-skipped checkouts complete successfully."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer through the trade execution module."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings through the trade execution module."},"cancelMintDirectSales(address,uint256[])":{"notice":"Cancels configured primary mint sales for token ids."},"cancelOffer(address,uint256,address)":{"notice":"Cancels the caller's offer for one token id and currency."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace proxy."},"makeOffer(address,uint256,address,uint256,uint256,uint256)":{"notice":"Creates or replaces a token-level ERC1155 offer."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales through the trade execution module."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets max quantity each address may mint for token ids while a limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets max mint transactions each address may submit for token ids while a limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155Marketplace.sol":"IRareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0xe1d12e07644cf56ed2dcb98e690ca93775b13a03189b4a802d6134c2c2e921b2","urls":["bzz-raw://1099e8215c451fa6dad6f8be5c196c3915dc3b911d4507d46cd9f7f20e29335e","dweb:/ipfs/QmUiW9oVP6Ft4C57zGE6ZWnkMKzJ8DzJoaBemKzBdWbLUK"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40","urls":["bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70","dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":159} \ No newline at end of file diff --git a/abis/IRareERC1155MarketplaceTypes.json b/abis/IRareERC1155MarketplaceTypes.json new file mode 100644 index 0000000..f3d0dec --- /dev/null +++ b/abis/IRareERC1155MarketplaceTypes.json @@ -0,0 +1 @@ +{"abi":[{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IRareERC1155MarketplaceTypes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Shared structs, events, and errors for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":\"IRareERC1155MarketplaceTypes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70\",\"dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":"IRareERC1155MarketplaceTypes"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40","urls":["bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70","dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM"],"license":"MIT"}},"version":1},"id":160} \ No newline at end of file diff --git a/abis/IRareERC1155TradeExecutionModule.json b/abis/IRareERC1155TradeExecutionModule.json new file mode 100644 index 0000000..868c647 --- /dev/null +++ b/abis/IRareERC1155TradeExecutionModule.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"}},\"title\":\"IRareERC1155TradeExecutionModule\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"}},\"notice\":\"Direct trade entrypoints executed through `RareERC1155Marketplace` delegatecalls.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/IRareERC1155TradeExecutionModule.sol\":\"IRareERC1155TradeExecutionModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]},\"src/marketplace/IRareERC1155TradeExecutionModule.sol\":{\"keccak256\":\"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89\",\"dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"}],"devdoc":{"kind":"dev","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/IRareERC1155TradeExecutionModule.sol":"IRareERC1155TradeExecutionModule"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"},"src/marketplace/IRareERC1155TradeExecutionModule.sol":{"keccak256":"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1","urls":["bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89","dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH"],"license":"MIT"}},"version":1},"id":161} \ No newline at end of file diff --git a/abis/RareERC1155.json b/abis/RareERC1155.json new file mode 100644 index 0000000..b311a19 --- /dev/null +++ b/abis/RareERC1155.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"balanceOfBatch","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnBatch","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createToken","inputs":[{"name":"_tokenURI","type":"string","internalType":"string"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"},{"name":"_royaltyReceiver","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"disableContract","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"exists","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"},{"name":"_creator","type":"address","internalType":"address"},{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isApprovedMinter","inputs":[{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"maxSupplyForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"mintBatchTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mintTo","inputs":[{"name":"_receiver","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"royaltyInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeBatchTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyPercentage","inputs":[{"name":"_percentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultRoyaltyReceiver","inputs":[{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinterApproval","inputs":[{"name":"_minter","type":"address","internalType":"address"},{"name":"_isMinter","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyReceiverForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_receiver","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"_interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenCreator","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"totalMintedForToken","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateTokenURI","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_tokenURI","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uri","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ContractDisabled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MinterApprovalUpdated","inputs":[{"name":"minter","type":"address","indexed":true,"internalType":"address"},{"name":"isMinter","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"TokenCreated","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"creator","type":"address","indexed":true,"internalType":"address"},{"name":"royaltyReceiver","type":"address","indexed":true,"internalType":"address"},{"name":"maxSupply","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenURI","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"TransferBatch","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"ids","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"values","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"TransferSingle","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"URI","inputs":[{"name":"value","type":"string","indexed":false,"internalType":"string"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AmountCannotBeZero","inputs":[]},{"type":"error","name":"BatchLengthMismatch","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CallerCannotMint","inputs":[{"name":"_caller","type":"address","internalType":"address"}]},{"type":"error","name":"ContractIsDisabled","inputs":[]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExceededMaxSupply","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedTotalMinted","type":"uint256","internalType":"uint256"},{"name":"_maxSupply","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MaxSupplyCannotBeZero","inputs":[]},{"type":"error","name":"RoyaltyPercentageTooHigh","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenDoesNotExist","inputs":[{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x60808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b6040516133e89081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461244157806301ffc9a71461238757806306fdde03146122f55780630de54ba0146122715780630e89341c146120ef5780631542bb9514611e7957806318e97fd114611cf65780632a55205a14611c485780632baf2acb14611bd75780632eb2c2d61461180f5780633512639c1461178f5780633a3d146f1461174f5780633ebc82c51461171657806340c1a064146116ed5780634e1273f41461154f5780634f558e79146115215780636b20c454146112d9578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d1366125c1565b6001600160a01b0390921691903383148015610397575b6101f19061289f565b8215926101fe8415612bb9565b61020782612b94565b9161021184612b94565b946000604051610220816124e9565b52610343575b60005b83518110156102c45761023c818561288b565b51610247828861288b565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612859565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c11565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46103416040516124e9565b005b929060005b835181101561038f578061035f61038a928861288b565b5161036a828761288b565b5160005260fb60205261038360406000209182546129bb565b9055612859565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d9612468565b6103e1612733565b6001600160a01b038116156103f9576103419061278b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be57610466612468565b61046e61247e565b90608480356001600160401b0381116101be5761048f9036906004016126b4565b6001600160a01b039190838316331480156107b8575b6104ae9061289f565b828516156104bc8115612902565b6104c7604435612b94565b6104d2606435612b94565b9185871615610778575b6106ca575b5050604435600052602094609786526040600020848616600052865260406000205461051160643582101561295c565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c60643582546129bb565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612525565b0393165af16000918161069b575b5061067157505060019061060d612ab3565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612b3f565b0390fd5b610644612ad1565b90816106505750610618565b61063860405192839262461bcd60e51b845260048401526024830190612525565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612a6a565b6106bc919250843d86116106c3575b6106b48183612504565b810190612a4a565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e6818661288b565b51906106f2818861288b565b518260005260fb602052604060002054818110610726576107219360005260fb60205203604060002055612859565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b61288b565b5161036a828a61288b565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be57610820612468565b61082861247e565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612733565b60ff610161541661089b576101665461034190600435906001600160a01b0316613288565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c961247e565b906108d2612733565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101686020526040600020549160648302928084046064149015171561093e576001600160601b036103419316916131db565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101656020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a23903690600401612594565b906024356001600160401b0381116101be57610a43903690600401612594565b6044356001600160401b0381116101be57610a62903690600401612594565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f54612494565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f61016054612494565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612cbd565b612cbd565b610bac3361278b565b369161266e565b91610bc960ff60005460081c16610b9e81612cbd565b82516001600160401b038111610e1457610be4609954612494565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612cbd565b610b9e81612cbd565b61016680546001600160a01b0319166064356001600160a01b0316179055600a610167556040516103e890602090610c72816124ce565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca760643561278b565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101646020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac36612565565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b82612494565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612504565b604051918291602083526020830190612525565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612733565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be57610954612733565b346101be5760603660031901126101be576112f2612468565b6024906001600160401b039082358281116101be57611315903690600401612650565b9160449081359081116101be57611330903690600401612650565b6001600160a01b039092169233841480156114f8575b61134f9061289f565b831561135b8115612bb9565b61136882518551146129c8565b6000604051611376816124e9565b526114c0575b60005b815181101561141857611392818361288b565b5161139d828661288b565b51908060005260fb6020818152604060002054928484106113d657906113d195949392916000525203604060002055612859565b61137f565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613393833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b825181101561148d5780611435611488928561288b565b51611440828761288b565b519080600052609760209080825260406000208760005282526040600020549261146c85851015612c11565b6000528152604060002090866000525203604060002055612859565b61141e565b50906000805160206133538339815191526114b2600094604051918291339583612a25565b0390a46103416040516124e9565b9260009491945b84518110156114ee57806114de6114e9928661288b565b5161036a828861288b565b6114c7565b509293909361137c565b5083600052609860205260406000203360005260205261134f60ff604060002054169050611346565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be5781600401359061158c826125eb565b9261159a6040519485612504565b82845260209260248486019160051b830101913683116101be57602401905b8282106116ce575050506024359081116101be576115db903690600401612650565b8251815103611677578251926115f0846125eb565b936115fe6040519586612504565b80855261160d601f19916125eb565b01368486013760005b81518110156116605761165b9061164b6001600160a01b03611638838661288b565b5116611644838761288b565b51906127d4565b611655828861288b565b52612859565b611616565b5050506111db6040519282849384528301906126ff565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115b9565b346101be5760203660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760203660031901126101be5761172f612468565b611737612733565b60ff610161541661089b576101675461034191613288565b346101be5760203660031901126101be576001600160a01b03611770612468565b16600052610164602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117a8612468565b6001600160401b03906024358281116101be576117c99036906004016126cf565b926044359081116101be576117e29036906004016126cf565b919060ff610161541661089b5761180161180992610341963691612602565b923691612602565b91612d1d565b346101be5760031960a0368201126101be57611829612468565b9061183261247e565b6044908135926001600160401b03938481116101be57611856903690600401612650565b606480358681116101be5761186f903690600401612650565b9460849687359081116101be5761188a9036906004016126b4565b6001600160a01b039489861633148015611bac575b6118a89061289f565b6118b585518951146129c8565b858716156118c38115612902565b868b1615611b69575b611ab4575b60005b855181101561196957806118eb611964928861288b565b518c6118f7838d61288b565b519180600052609790838c60209484865260406000208282166000528652604060002054916119288484101561295c565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261038360406000209182546129bb565b6118d4565b50888a9897969497896040518860008051602061335383398151915289808d169416928061199987339583612a25565b0390a4873b6119a457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119d8916126ff565b908487830301908701526119eb916126ff565b9184830301908401526119fd91612525565b03921691815a602094600091f160009181611a94575b50611a6c5750506001611a24612ab3565b6308c379a014611a35575b61061f57005b611a3d612ad1565b80611a485750611a2f565b60405162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612a6a565b611aad91925060203d81116106c3576106b48183612504565b9083611a13565b9796949060009993999692965b8551811015611b5957611ad4818761288b565b51611adf828961288b565b519080600052602060fb815260406000205491838310611b1857611b139493929160fb916000525203604060002055612859565b611ac1565b508b9067616c537570706c7960c01b8f6000805160206133938339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d1565b99969498959392919060005b8a51811015611b9d57808b61036a82611b91611b98958f61288b565b519261288b565b611b75565b509091929395989496996118cc565b50858a1660005260986020526040600020336000526020526118a860ff60406000205416905061189f565b346101be57611be5366125c1565b9160ff610161541661089b57602092611c409160405190611c05826124ce565b6001825285368184013760405192611c1c846124ce565b6001845286368186013785611c3084612868565b52611c3a84612868565b52612d1d565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611c7b836124ce565b546001600160a01b0380821680855260a09290921c6020850152929015611cd3575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611ce0816124ce565b61012d54838116825260a01c6020820152611c9d565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d2a903690600401612594565b9190611d34612733565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611e6057856000528352600180604060002001918511610e1457611d8885611d828454612494565b84612c69565b6000601f8611600114611de95791858060008051602061337383398151915297969593611dd995600093611dde575b501b906000198760031b1c19161790555b60405193838594855284019161315b565b0390a2005b85013592508a611db7565b601f1986169083600052856000209160005b818110611e4b575091879695939160008051602061337383398151915298611dd9969410611e31575b505085811b019055611dc8565b840135600019600389901b60f8161c191690558880611e24565b86830135845592840192918701918701611dfb565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611eaa903690600401612594565b602435916001600160a01b03604435818116938482036101be57611ecc612733565b60ff610161541661089b5785156120dd5784156109545761016295611ef18754612859565b809755604051606081018181108a821117610e1457604052818152611f1736848861266e565b986020998a83019081526040830191600183528a6000526101638c526040600020935184556001840191518051918211610e1457611f5f82611f598554612494565b85612c69565b8c908d601f841160011461206c5750918060029492611fad979694600092612061575b50508160011b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b61016754928760005261016889528360406000205560648402938085046064149015171561093e578794612010612056926001600160601b037fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2971690886131db565b856000805160206133738339815191526120368c6040519181839283528201898d61315b565b0390a26033541695604051938493845260408b850152604084019161315b565b0390a4604051908152f35b015190508f80611f82565b9190601f1984168560005283600020936000905b8282106120c5575050926001928592611fad99989660029896106120ac575b505050811b019055611f97565b015160001960f88460031b161c191690558f808061209f565b80600186978294978701518155019601940190612080565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be5760043560005261016381526001806040600020019082604051809360009080549061212b82612494565b80855291868116908115612250575060011461220f575b505061215092500383612504565b81511561216e5750905b6111db604051928284938452830190612525565b905060405190600090836099549161218583612494565b928386528582821691826000146121ef5750506001146121b5575b505050816121af910382612504565b9061215a565b91909250609960005282600020916000925b8284106121dc575050508201018183856121a0565b80548685018601529284019281016121c7565b60ff19168482015293151560051b840190920193508591508690506121a0565b9091506000528260002090846000925b828410612239575050509161215092820101859287612142565b80548885018701528794509285019286910161221f565b91505061215094925060ff191682840152151560051b820101859287612142565b346101be5761227f36612565565b90612288612733565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016482526122ea8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f80549061231b82612494565b9081845260019283811690816000146112205750600114612346576111db846111c781880382612504565b90935060005260209283600020916000925b82841061237457505050816111db936111c792820101936111b7565b8054858501870152928501928101612358565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612430575b81156123d3575b506040519015158152f35b63152a902d60e11b8114915081156123ed575b50826123c8565b636cdb3d1360e11b81149150811561241f575b811561240e575b50826123e6565b6301ffc9a760e01b14905082612407565b6303a24d0760e21b81149150612400565b631030681960e21b811491506123c1565b346101be5760403660031901126101be576020611c4061245f612468565b602435906127d4565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c921680156124c4575b60208310146124ae57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124a3565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b848110612551575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612530565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161260d826125eb565b9161261b6040519384612504565b829481845260208094019160051b81019283116101be57905b8282106126415750505050565b81358152908301908301612634565b9080601f830112156101be5781602061266b93359101612602565b90565b9291926001600160401b038211610e145760405191612697601f8201601f191660200184612504565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be5781602061266b9335910161266e565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b82811061271f575050505090565b835185529381019392810192600101612711565b6033546001600160a01b0316330361274757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561280157600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128755760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128755760209160051b010190565b156128a657565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561290957565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561296357565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b156129cf57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a3c61266b936040845260408401906126ff565b9160208184039101526126ff565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612ac057565b905060046000803e60005160e01c90565b600060443d1061266b57604051600319913d83016004833e81516001600160401b03918282113d602484011117612b2e57818401948551938411612b36573d85010160208487010111612b2e575061266b92910160200190612504565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612ba1826124ce565b6001825260203681840137612bb582612868565b5290565b15612bc057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c1857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c7757505050565b600091825260208220906020601f850160051c83019410612cb3575b601f0160051c01915b828110612ca857505050565b818155600101612c9c565b9092508290612c93565b15612cc457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610954576033541633141580613141575b61312957835115613117578351815103613105578351926064938481116130e7575060015b8551811015612dd557612d78818761288b565b516000198201828111612dc057612d8f908861288b565b511015612d9e57600101612d65565b612daa6024918761288b565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612ebf57612df3868461288b565b519586600052610163602081815260409060ff60028360002001541615612ea757612e1e848961288b565b5115612e96578960005261016590818152612e488360002054612e41878c61288b565b51906129bb565b938b60005281528260002054808511612e74575060009a8b525290972096909655600190950194612de0565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612ed5876124e9565b60008752612ee686518551146129c8565b60005b8651811015612f285780612f00612f23928761288b565b51612f0b828a61288b565b5160005260fb602052610383886000209182546129bb565b612ee9565b5090919560005b8651811015612f795780612f46612f74928761288b565b51612f51828a61288b565b5160005260206097815288600020908c60005252610383886000209182546129bb565b612f2f565b5091969093958160008851600080516020613353833981519152339180612fa18a8d83612a25565b0390a43b612fb2575b505050505050565b6130056000602094613014895197889687958694612ff263bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a48801906126ff565b90600319948588840301908801526126ff565b91848303016084850152612525565b03925af1600091816130c7575b5061309b5750506001613032612ab3565b6308c379a014613065575b61304e57505b388080808080612faa565b5162461bcd60e51b81528061063860048201612b3f565b61306d612ad1565b80613078575061303d565b825162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916036130b05750613043565b5162461bcd60e51b81528061063860048201612a6a565b6130e091925060203d81116106c3576106b48183612504565b9038613021565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016460205260ff6040600020541615612d40565b908060209392818452848401376000828201840152601f01601f1916010190565b1561318357565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906131f461271083111561317c565b6001600160a01b039081169283156132435760405193613213856124ce565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133325760018060a01b0319926101668185825416179055826101675560648302928084046064149015171561093e57613320906001600160601b0384166132eb61271082111561317c565b60206040516132f9816124ce565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a2646970667358221220b7720fa90ac9df32d7bfb6ee34e640368972d81f7eb46827b58be3edc6478e5764736f6c63430008120033","sourceMap":"1123:14094:82:-:0;;;;;;;6007:13:18;1123:14094:82;;;;;;;;;;;;;;6078:31:18;6074:139;;-1:-1:-1;1123:14094:82;;;;;;;;;6074:139:18;1123:14094:82;;;;;;6007:13:18;1123:14094:82;6174:28:18;1123:14094:82;;;;;;6174:28:18;6074:139;;;1123:14094:82;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461244157806301ffc9a71461238757806306fdde03146122f55780630de54ba0146122715780630e89341c146120ef5780631542bb9514611e7957806318e97fd114611cf65780632a55205a14611c485780632baf2acb14611bd75780632eb2c2d61461180f5780633512639c1461178f5780633a3d146f1461174f5780633ebc82c51461171657806340c1a064146116ed5780634e1273f41461154f5780634f558e79146115215780636b20c454146112d9578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d1366125c1565b6001600160a01b0390921691903383148015610397575b6101f19061289f565b8215926101fe8415612bb9565b61020782612b94565b9161021184612b94565b946000604051610220816124e9565b52610343575b60005b83518110156102c45761023c818561288b565b51610247828861288b565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612859565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c11565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46103416040516124e9565b005b929060005b835181101561038f578061035f61038a928861288b565b5161036a828761288b565b5160005260fb60205261038360406000209182546129bb565b9055612859565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d9612468565b6103e1612733565b6001600160a01b038116156103f9576103419061278b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be57610466612468565b61046e61247e565b90608480356001600160401b0381116101be5761048f9036906004016126b4565b6001600160a01b039190838316331480156107b8575b6104ae9061289f565b828516156104bc8115612902565b6104c7604435612b94565b6104d2606435612b94565b9185871615610778575b6106ca575b5050604435600052602094609786526040600020848616600052865260406000205461051160643582101561295c565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c60643582546129bb565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612525565b0393165af16000918161069b575b5061067157505060019061060d612ab3565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612b3f565b0390fd5b610644612ad1565b90816106505750610618565b61063860405192839262461bcd60e51b845260048401526024830190612525565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612a6a565b6106bc919250843d86116106c3575b6106b48183612504565b810190612a4a565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e6818661288b565b51906106f2818861288b565b518260005260fb602052604060002054818110610726576107219360005260fb60205203604060002055612859565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b61288b565b5161036a828a61288b565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be57610820612468565b61082861247e565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612733565b60ff610161541661089b576101665461034190600435906001600160a01b0316613288565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c961247e565b906108d2612733565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101686020526040600020549160648302928084046064149015171561093e576001600160601b036103419316916131db565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101656020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a23903690600401612594565b906024356001600160401b0381116101be57610a43903690600401612594565b6044356001600160401b0381116101be57610a62903690600401612594565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f54612494565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f61016054612494565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612cbd565b612cbd565b610bac3361278b565b369161266e565b91610bc960ff60005460081c16610b9e81612cbd565b82516001600160401b038111610e1457610be4609954612494565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612cbd565b610b9e81612cbd565b61016680546001600160a01b0319166064356001600160a01b0316179055600a610167556040516103e890602090610c72816124ce565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca760643561278b565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101646020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac36612565565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b82612494565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612504565b604051918291602083526020830190612525565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612733565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be57610954612733565b346101be5760603660031901126101be576112f2612468565b6024906001600160401b039082358281116101be57611315903690600401612650565b9160449081359081116101be57611330903690600401612650565b6001600160a01b039092169233841480156114f8575b61134f9061289f565b831561135b8115612bb9565b61136882518551146129c8565b6000604051611376816124e9565b526114c0575b60005b815181101561141857611392818361288b565b5161139d828661288b565b51908060005260fb6020818152604060002054928484106113d657906113d195949392916000525203604060002055612859565b61137f565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613393833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b825181101561148d5780611435611488928561288b565b51611440828761288b565b519080600052609760209080825260406000208760005282526040600020549261146c85851015612c11565b6000528152604060002090866000525203604060002055612859565b61141e565b50906000805160206133538339815191526114b2600094604051918291339583612a25565b0390a46103416040516124e9565b9260009491945b84518110156114ee57806114de6114e9928661288b565b5161036a828861288b565b6114c7565b509293909361137c565b5083600052609860205260406000203360005260205261134f60ff604060002054169050611346565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be5781600401359061158c826125eb565b9261159a6040519485612504565b82845260209260248486019160051b830101913683116101be57602401905b8282106116ce575050506024359081116101be576115db903690600401612650565b8251815103611677578251926115f0846125eb565b936115fe6040519586612504565b80855261160d601f19916125eb565b01368486013760005b81518110156116605761165b9061164b6001600160a01b03611638838661288b565b5116611644838761288b565b51906127d4565b611655828861288b565b52612859565b611616565b5050506111db6040519282849384528301906126ff565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115b9565b346101be5760203660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760203660031901126101be5761172f612468565b611737612733565b60ff610161541661089b576101675461034191613288565b346101be5760203660031901126101be576001600160a01b03611770612468565b16600052610164602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117a8612468565b6001600160401b03906024358281116101be576117c99036906004016126cf565b926044359081116101be576117e29036906004016126cf565b919060ff610161541661089b5761180161180992610341963691612602565b923691612602565b91612d1d565b346101be5760031960a0368201126101be57611829612468565b9061183261247e565b6044908135926001600160401b03938481116101be57611856903690600401612650565b606480358681116101be5761186f903690600401612650565b9460849687359081116101be5761188a9036906004016126b4565b6001600160a01b039489861633148015611bac575b6118a89061289f565b6118b585518951146129c8565b858716156118c38115612902565b868b1615611b69575b611ab4575b60005b855181101561196957806118eb611964928861288b565b518c6118f7838d61288b565b519180600052609790838c60209484865260406000208282166000528652604060002054916119288484101561295c565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261038360406000209182546129bb565b6118d4565b50888a9897969497896040518860008051602061335383398151915289808d169416928061199987339583612a25565b0390a4873b6119a457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119d8916126ff565b908487830301908701526119eb916126ff565b9184830301908401526119fd91612525565b03921691815a602094600091f160009181611a94575b50611a6c5750506001611a24612ab3565b6308c379a014611a35575b61061f57005b611a3d612ad1565b80611a485750611a2f565b60405162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612a6a565b611aad91925060203d81116106c3576106b48183612504565b9083611a13565b9796949060009993999692965b8551811015611b5957611ad4818761288b565b51611adf828961288b565b519080600052602060fb815260406000205491838310611b1857611b139493929160fb916000525203604060002055612859565b611ac1565b508b9067616c537570706c7960c01b8f6000805160206133938339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d1565b99969498959392919060005b8a51811015611b9d57808b61036a82611b91611b98958f61288b565b519261288b565b611b75565b509091929395989496996118cc565b50858a1660005260986020526040600020336000526020526118a860ff60406000205416905061189f565b346101be57611be5366125c1565b9160ff610161541661089b57602092611c409160405190611c05826124ce565b6001825285368184013760405192611c1c846124ce565b6001845286368186013785611c3084612868565b52611c3a84612868565b52612d1d565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611c7b836124ce565b546001600160a01b0380821680855260a09290921c6020850152929015611cd3575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611ce0816124ce565b61012d54838116825260a01c6020820152611c9d565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d2a903690600401612594565b9190611d34612733565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611e6057856000528352600180604060002001918511610e1457611d8885611d828454612494565b84612c69565b6000601f8611600114611de95791858060008051602061337383398151915297969593611dd995600093611dde575b501b906000198760031b1c19161790555b60405193838594855284019161315b565b0390a2005b85013592508a611db7565b601f1986169083600052856000209160005b818110611e4b575091879695939160008051602061337383398151915298611dd9969410611e31575b505085811b019055611dc8565b840135600019600389901b60f8161c191690558880611e24565b86830135845592840192918701918701611dfb565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611eaa903690600401612594565b602435916001600160a01b03604435818116938482036101be57611ecc612733565b60ff610161541661089b5785156120dd5784156109545761016295611ef18754612859565b809755604051606081018181108a821117610e1457604052818152611f1736848861266e565b986020998a83019081526040830191600183528a6000526101638c526040600020935184556001840191518051918211610e1457611f5f82611f598554612494565b85612c69565b8c908d601f841160011461206c5750918060029492611fad979694600092612061575b50508160011b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b61016754928760005261016889528360406000205560648402938085046064149015171561093e578794612010612056926001600160601b037fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2971690886131db565b856000805160206133738339815191526120368c6040519181839283528201898d61315b565b0390a26033541695604051938493845260408b850152604084019161315b565b0390a4604051908152f35b015190508f80611f82565b9190601f1984168560005283600020936000905b8282106120c5575050926001928592611fad99989660029896106120ac575b505050811b019055611f97565b015160001960f88460031b161c191690558f808061209f565b80600186978294978701518155019601940190612080565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be5760043560005261016381526001806040600020019082604051809360009080549061212b82612494565b80855291868116908115612250575060011461220f575b505061215092500383612504565b81511561216e5750905b6111db604051928284938452830190612525565b905060405190600090836099549161218583612494565b928386528582821691826000146121ef5750506001146121b5575b505050816121af910382612504565b9061215a565b91909250609960005282600020916000925b8284106121dc575050508201018183856121a0565b80548685018601529284019281016121c7565b60ff19168482015293151560051b840190920193508591508690506121a0565b9091506000528260002090846000925b828410612239575050509161215092820101859287612142565b80548885018701528794509285019286910161221f565b91505061215094925060ff191682840152151560051b820101859287612142565b346101be5761227f36612565565b90612288612733565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016482526122ea8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f80549061231b82612494565b9081845260019283811690816000146112205750600114612346576111db846111c781880382612504565b90935060005260209283600020916000925b82841061237457505050816111db936111c792820101936111b7565b8054858501870152928501928101612358565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612430575b81156123d3575b506040519015158152f35b63152a902d60e11b8114915081156123ed575b50826123c8565b636cdb3d1360e11b81149150811561241f575b811561240e575b50826123e6565b6301ffc9a760e01b14905082612407565b6303a24d0760e21b81149150612400565b631030681960e21b811491506123c1565b346101be5760403660031901126101be576020611c4061245f612468565b602435906127d4565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c921680156124c4575b60208310146124ae57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124a3565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b848110612551575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612530565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161260d826125eb565b9161261b6040519384612504565b829481845260208094019160051b81019283116101be57905b8282106126415750505050565b81358152908301908301612634565b9080601f830112156101be5781602061266b93359101612602565b90565b9291926001600160401b038211610e145760405191612697601f8201601f191660200184612504565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be5781602061266b9335910161266e565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b82811061271f575050505090565b835185529381019392810192600101612711565b6033546001600160a01b0316330361274757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561280157600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128755760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128755760209160051b010190565b156128a657565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561290957565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561296357565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b156129cf57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a3c61266b936040845260408401906126ff565b9160208184039101526126ff565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612ac057565b905060046000803e60005160e01c90565b600060443d1061266b57604051600319913d83016004833e81516001600160401b03918282113d602484011117612b2e57818401948551938411612b36573d85010160208487010111612b2e575061266b92910160200190612504565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612ba1826124ce565b6001825260203681840137612bb582612868565b5290565b15612bc057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c1857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c7757505050565b600091825260208220906020601f850160051c83019410612cb3575b601f0160051c01915b828110612ca857505050565b818155600101612c9c565b9092508290612c93565b15612cc457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610954576033541633141580613141575b61312957835115613117578351815103613105578351926064938481116130e7575060015b8551811015612dd557612d78818761288b565b516000198201828111612dc057612d8f908861288b565b511015612d9e57600101612d65565b612daa6024918761288b565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612ebf57612df3868461288b565b519586600052610163602081815260409060ff60028360002001541615612ea757612e1e848961288b565b5115612e96578960005261016590818152612e488360002054612e41878c61288b565b51906129bb565b938b60005281528260002054808511612e74575060009a8b525290972096909655600190950194612de0565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612ed5876124e9565b60008752612ee686518551146129c8565b60005b8651811015612f285780612f00612f23928761288b565b51612f0b828a61288b565b5160005260fb602052610383886000209182546129bb565b612ee9565b5090919560005b8651811015612f795780612f46612f74928761288b565b51612f51828a61288b565b5160005260206097815288600020908c60005252610383886000209182546129bb565b612f2f565b5091969093958160008851600080516020613353833981519152339180612fa18a8d83612a25565b0390a43b612fb2575b505050505050565b6130056000602094613014895197889687958694612ff263bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a48801906126ff565b90600319948588840301908801526126ff565b91848303016084850152612525565b03925af1600091816130c7575b5061309b5750506001613032612ab3565b6308c379a014613065575b61304e57505b388080808080612faa565b5162461bcd60e51b81528061063860048201612b3f565b61306d612ad1565b80613078575061303d565b825162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916036130b05750613043565b5162461bcd60e51b81528061063860048201612a6a565b6130e091925060203d81116106c3576106b48183612504565b9038613021565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016460205260ff6040600020541615612d40565b908060209392818452848401376000828201840152601f01601f1916010190565b1561318357565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906131f461271083111561317c565b6001600160a01b039081169283156132435760405193613213856124ce565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133325760018060a01b0319926101668185825416179055826101675560648302928084046064149015171561093e57613320906001600160601b0384166132eb61271082111561317c565b60206040516132f9816124ce565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a2646970667358221220b7720fa90ac9df32d7bfb6ee34e640368972d81f7eb46827b58be3edc6478e5764736f6c63430008120033","sourceMap":"1123:14094:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;10028:12;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;;929:10:29;764:23:24;;:66;;;;1123:14094:82;743:159:24;;;:::i;:::-;11246:18:21;;;11238:66;11246:18;;11238:66;:::i;:::-;11379:21;;;:::i;:::-;11437:25;;;;:::i;:::-;1123:14094:82;;;;;;;:::i;:::-;;1658:156:25;;1123:14094:82;;1896:3:25;1123:14094:82;;1880:14:25;;;;;1932:6;;;;:::i;:::-;1123:14094:82;1973:10:25;;;;:::i;:::-;1123:14094:82;;;;;2018:12:25;1123:14094:82;;;;;;;;2060:16:25;;;;1123:14094:82;;;1896:3:25;1123:14094:82;;;;;;;;;;;;;1896:3:25;:::i;:::-;1865:13;;1123:14094:82;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;;;;;;;1880:14:25;1123:14094:82;1880:14:25;;;1123:14094:82;;;11572:9:21;1123:14094:82;;;;;;;;;;;;;;;11601:70:21;11609:21;;;;11601:70;:::i;:::-;1123:14094:82;;;11572:9:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;11773:54:21;1123:14094:82;929:10:29;11773:54:21;;1123:14094:82;;;;:::i;:::-;;1658:156:25;1701:13;;1123:14094:82;1732:3:25;1123:14094:82;;1716:14:25;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:82;1768:6:25;;;;:::i;:::-;1123:14094:82;;;1755:12:25;1123:14094:82;;1755:34:25;1123:14094:82;;;;;;1755:34:25;:::i;:::-;1123:14094:82;;1732:3:25;:::i;:::-;1701:13;;1716:14;;;;1658:156;;764:66:24;1123:14094:82;;;;3873:18:21;1123:14094:82;;;;;929:10:29;1123:14094:82;;;;743:159:24;1123:14094:82;;;;;;764:66:24;;;;1123:14094:82;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;1303:62:12;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;2402:22:12;1123:14094:82;;2496:8:12;;;:::i;1123:14094:82:-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;;;:::i;:::-;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;;929:10:29;4184:20:21;:60;;;;1123:14094:82;4163:153:21;;;:::i;:::-;1123:14094:82;;;5507:16:21;5499:66;5507:16;;5499:66;:::i;:::-;5640:21;1123:14094:82;;5640:21:21;:::i;:::-;5698:25;1123:14094:82;;5698:25:21;:::i;:::-;1123:14094:82;;;;1662:18:25;1658:156;;1123:14094:82;1824:424:25;;1123:14094:82;;;;;;;;;5827:9:21;1123:14094:82;;;;;;;;;;;;;;;;5856:76:21;1123:14094:82;;5864:21:21;;;5856:76;:::i;:::-;1123:14094:82;;;;5827:9:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;5827:9:21;1123:14094:82;;;;;;;;;;;;;;;6028:27:21;1123:14094:82;;;;6028:27:21;:::i;:::-;1123:14094:82;;;;;;;;;;;;;;;;;;;;;929:10:29;6071:46:21;1123:14094:82;929:10:29;6071:46:21;;1713:19:28;;15996:538:21;;1123:14094:82;15996:538:21;1123:14094:82;;;;;;;;;;;;;;;;;;;16035:83:21;;;;929:10:29;1123:14094:82;16035:83:21;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16035:83:21;1123:14094:82;;16035:83:21;;1123:14094:82;;16035:83:21;;;15996:538;-1:-1:-1;16031:493:21;;;;1123:14094:82;16031:493:21;;;:::i;:::-;;;;;;;;;1123:14094:82;16031:493:21;1123:14094:82;;-1:-1:-1;;;16447:62:21;;1123:14094:82;16447:62:21;1123:14094:82;16447:62:21;;;:::i;:::-;;;;16031:493;16341:81;;:::i;:::-;;;;;16031:493;;;16341:81;1123:14094:82;;;;;;;;;16393:14:21;;1123:14094:82;16393:14:21;;1123:14094:82;;;;;;:::i;16031:493:21:-;-1:-1:-1;;;;;;1123:14094:82;16163:163:21;;-1:-1:-1;16031:493:21;16163:163;1123:14094:82;;-1:-1:-1;;;16257:50:21;;1123:14094:82;16257:50:21;1123:14094:82;16257:50:21;;;:::i;16035:83::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1824:424:25;1865:13;;;;;;1123:14094:82;1896:3:25;1123:14094:82;;1880:14:25;;;;;1932:6;;;;:::i;:::-;1123:14094:82;1973:10:25;;;;;:::i;:::-;1123:14094:82;;;;2018:12:25;1123:14094:82;;;;;;2060:16:25;;;1123:14094:82;;1896:3:25;1123:14094:82;;;2018:12:25;1123:14094:82;;;;;;;1896:3:25;:::i;:::-;1865:13;;1123:14094:82;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;;;;;;;1880:14:25;;;;;;;;;1824:424;;;;1658:156;1701:13;;1123:14094:82;1701:13:25;;;;;;1732:3;1123:14094:82;;1716:14:25;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:82;1768:6:25;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;1658:156;;4184:60:21;1123:14094:82;;;;;;3873:18:21;1123:14094:82;;;;;929:10:29;1123:14094:82;;;;4163:153:21;1123:14094:82;;;;;;4184:60:21;;;;1123:14094:82;;;;;;-1:-1:-1;;1123:14094:82;;;;;;1372:29;1123:14094;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3873:18:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;1303:62:12;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;8351:22;1123:14094;8375:11;;1123:14094;;;-1:-1:-1;;;;;1123:14094:82;8375:11;:::i;2877:41::-;1123:14094;;-1:-1:-1;;;2898:20:82;;1123:14094;;2898:20;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;:::i;:::-;1303:62:12;;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;1123:14094;;;3171:12;1123:14094;;;3171:29;1123:14094;;;3171:29;1123:14094;;3170:30;3166:70;;-1:-1:-1;;;;;1123:14094:82;;13268:23;13264:60;;1123:14094;;;13380:23;1123:14094;;;;;;;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;-1:-1:-1;;;;;13373:68:82;1123:14094;;13373:68;;:::i;1123:14094::-;;;;;;;;;;;;13264:60;1123:14094;;-1:-1:-1;;;13300:24:82;;1123:14094;;13300:24;3166:70;1123:14094;;;;3209:27;;;;;;1123:14094;3209:27;;1123:14094;3209:27;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;1558:3;1123:14094;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;10202:16;1123:14094;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;1033:12:25;1123:14094:82;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;3301:14:18;3347:34;;;;;;1123:14094:82;3346:108:18;;;;1123:14094:82;;;;-1:-1:-1;;1123:14094:82;;;;;;;3562:65:18;;1123:14094:82;-1:-1:-1;1123:14094:82;;-1:-1:-1;;;;;1123:14094:82;3708:22;3704:59;;-1:-1:-1;;;;;1123:14094:82;;;;;;;3864:12;1123:14094;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;-1:-1:-1;;;;;1123:14094:82;;;;;3886:16;1123:14094;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;3912:16;1123:14094;;;;;;;5366:69:18;1123:14094:82;;;;;;5366:69:18;;;:::i;:::-;;:::i;:::-;1195:12:12;929:10:29;1195:12:12;:::i;:::-;1123:14094:82;;;:::i;:::-;;5366:69:18;1123:14094:82;;;;;;5366:69:18;;;:::i;:::-;1123:14094:82;;-1:-1:-1;;;;;1123:14094:82;;;;;8623:13:21;1123:14094:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:21;1123:14094:82;;5366:69:18;1123:14094:82;;;;;;5366:69:18;;;:::i;:::-;;;;:::i;:::-;12807:34:82;1123:14094;;-1:-1:-1;;;;;;1123:14094:82;;;-1:-1:-1;;;;;1123:14094:82;;;;1694:2;12851:38;1123:14094;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;;;;3314:35:27;;;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;3292:57:27;1123:14094:82;;;4330:252;;1123:14094;;4710:8;1123:14094;;4710:8;:::i;:::-;3647:99:18;;1123:14094:82;3647:99:18;1123:14094:82;;;;;;;3721:14:18;1123:14094:82;;;;;;3721:14:18;1123:14094:82;4330:252;-1:-1:-1;;;;;1123:14094:82;;;;;4471:15;1123:14094;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;4528:43;;;4330:252;;;1123:14094;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;8623:13:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:13:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;3886:16;1123:14094;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3886:16;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;-1:-1:-1;1123:14094:82;;;;;3864:12;1123:14094;;;;;-1:-1:-1;1123:14094:82;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3864:12;1123:14094;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;-1:-1:-1;1123:14094:82;;;3562:65:18;-1:-1:-1;;1123:14094:82;;;;;3562:65:18;;;1123:14094:82;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;3346:108:18;3426:4;;1713:19:28;:23;3387:66:18;;3346:108;3387:66;1123:14094:82;;;;;3436:17:18;3346:108;;3347:34;1123:14094:82;;;;;3365:16:18;3347:34;;1123:14094:82;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;929:10:29;13309:17:21;;1123:14094:82;;929:10:29;1123:14094:82;;13382:18:21;1123:14094:82;;;;;;;;;;13382:46:21;1123:14094:82;;;;;;;;;;;;;;;;;;;13382:46:21;1123:14094:82;;;;;;;13443:41:21;1123:14094:82;929:10:29;13443:41:21;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;1337:29;;1123:14094;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;1513:6:12;1123:14094:82;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;1303:62:12;;:::i;:::-;9274:15:82;1123:14094;;-1:-1:-1;;1123:14094:82;9285:4;1123:14094;;;9321:10;9304:28;-1:-1:-1;;9304:28:82;1123:14094;;;;;;;-1:-1:-1;;1123:14094:82;;;;1303:62:12;;:::i;1123:14094:82:-;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;929:10:29;1080:23:24;;:66;;;;1123:14094:82;1059:159:24;;;:::i;:::-;12266:18:21;;12258:66;12266:18;;12258:66;:::i;:::-;12334:81;1123:14094:82;;;;12342:28:21;12334:81;:::i;:::-;1123:14094:82;;;;;;:::i;:::-;;1658:156:25;;1123:14094:82;;1896:3:25;1123:14094:82;;1880:14:25;;;;;1932:6;;;;:::i;:::-;1123:14094:82;1973:10:25;;;;:::i;:::-;1123:14094:82;;;;;2018:12:25;1123:14094:82;;;;;;;;2060:16:25;;;;1123:14094:82;;;1896:3:25;1123:14094:82;;;;;;;;;;;;;1896:3:25;:::i;:::-;1865:13;;1123:14094:82;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;;;;;;;1880:14:25;;;;1123:14094:82;12581:3:21;1123:14094:82;;12565:14:21;;;;;12613:6;;12581:3;12613:6;;;:::i;:::-;1123:14094:82;12650:10:21;;;;:::i;:::-;1123:14094:82;;;;;12697:9:21;1123:14094:82;;;;;;;;;;;;;;;;;12738:21:21;12730:70;12738:21;;;;12730:70;:::i;:::-;1123:14094:82;;;;;;;;;;;;;;;;;12581:3:21;:::i;:::-;12550:13;;12565:14;;;-1:-1:-1;;;;;;;;;;;12924:55:21;1123:14094:82;12565:14:21;1123:14094:82;;929:10:29;;;;12924:55:21;;;:::i;:::-;;;;1123:14094:82;;;;:::i;1658:156:25:-;1701:13;1123:14094:82;1701:13:25;;;1732:3;1123:14094:82;;1716:14:25;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:82;1768:6:25;;;;:::i;1732:3::-;1701:13;;1716:14;;;;;;1658:156;;1080:66:24;1123:14094:82;;;;3873:18:21;1123:14094:82;;;;;929:10:29;1123:14094:82;;;;1059:159:24;1123:14094:82;;;;;;1080:66:24;;;;1123:14094:82;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;1033:12:25;1123:14094:82;;;;;;;1229:44:25;;1123:14094:82;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3146:29:21;1123:14094:82;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3347:3:21;1123:14094:82;;3326:19:21;;;;;3347:3;;3385:30;-1:-1:-1;;;;;3395:11:21;1123:14094:82;3395:11:21;;:::i;:::-;1123:14094:82;;3408:6:21;;;;:::i;:::-;1123:14094:82;3385:30:21;;:::i;:::-;3366:49;;;;:::i;:::-;1123:14094:82;3347:3:21;:::i;:::-;3311:13;;3326:19;;;;1123:14094:82;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;1513:6:12;1123:14094:82;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;1303:62:12;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;8154:24;1123:14094;8154:24;;;:::i;1123:14094::-;;;;;;-1:-1:-1;;1123:14094:82;;;;-1:-1:-1;;;;;1123:14094:82;;:::i;:::-;;;;9863:15;1123:14094;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;2881:8;1123:14094;;2877:41;;1123:14094;;;5618:44;1123:14094;;;;:::i;:::-;;;;;:::i;:::-;5618:44;;:::i;1123:14094::-;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;929:10:29;4675:20:21;:60;;;;1123:14094:82;4654:153:21;;;:::i;:::-;6817:81;1123:14094:82;;;;6825:28:21;6817:81;:::i;:::-;1123:14094:82;;;6916:16:21;6908:66;6916:16;;6908:66;:::i;:::-;1123:14094:82;;;1662:18:25;1658:156;;1123:14094:82;1824:424:25;;1123:14094:82;;7134:3:21;1123:14094:82;;7118:14:21;;;;;7166:6;;7134:3;7166:6;;;:::i;:::-;1123:14094:82;7203:10:21;;;;;:::i;:::-;1123:14094:82;;;;;7250:9:21;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;7291:21:21;7283:76;7291:21;;;;7283:76;:::i;:::-;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7471:27:21;1123:14094:82;;;;;;7471:27:21;:::i;7134:3::-;7103:13;;7118:14;;;;;;;;;1123:14094:82;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;;;929:10:29;;7524:47:21;929:10:29;;7524:47:21;;;:::i;:::-;;;;1713:19:28;;16774:580:21;;1123:14094:82;16774:580:21;1123:14094:82;;;;;;;;;;;16813:90:21;;;;929:10:29;1123:14094:82;16813:90:21;;1123:14094:82;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;16813:90:21;1123:14094:82;;16813:90:21;;;1123:14094:82;16813:90:21;1123:14094:82;16813:90:21;;1123:14094:82;;16813:90:21;;;16774:580;-1:-1:-1;16809:535:21;;;;1123:14094:82;16809:535:21;;:::i;:::-;;;;;;;;1123:14094:82;16809:535:21;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14094:82;;-1:-1:-1;;;17213:14:21;;1123:14094:82;;17213:14:21;;1123:14094:82;;;;;;;;;;;:::i;16809:535:21:-;-1:-1:-1;;;;;;1123:14094:82;16978:168:21;16809:535;16978:168;1123:14094:82;;-1:-1:-1;;;17077:50:21;;1123:14094:82;17077:50:21;1123:14094:82;17077:50:21;;;:::i;16813:90::-;;;;;1123:14094:82;16813:90:21;;;;;;;;;:::i;:::-;;;;;1824:424:25;1865:13;;;;1123:14094:82;1865:13:25;;;;;;1896:3;1123:14094:82;;1880:14:25;;;;;1932:6;;;;:::i;:::-;1123:14094:82;1973:10:25;;;;:::i;:::-;1123:14094:82;;;;;;2018:12:25;1123:14094:82;;;;;;2060:16:25;;;;1123:14094:82;;1896:3:25;1123:14094:82;;;;2018:12:25;1123:14094:82;;;;;;;;;1896:3:25;:::i;:::-;1865:13;;1123:14094:82;;;;-1:-1:-1;;;1123:14094:82;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;1880:14:25;;;;;;;;;;;;1824:424;;1658:156;1701:13;;;;;;;;;1123:14094:82;1732:3:25;1123:14094:82;;1716:14:25;;;;;1779:10;;1768:6;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:82;1768:6:25;;:::i;1732:3::-;1701:13;;1716:14;;;;;;;;;;;1658:156;;4675:60:21;1123:14094:82;;;;;;3873:18:21;1123:14094:82;;;;;929:10:29;1123:14094:82;;;;4654:153:21;1123:14094:82;;;;;;4675:60:21;;;;1123:14094:82;;;;;;;:::i;:::-;;;2881:8;1123:14094;;2877:41;;1123:14094;;5387:7;1123:14094;;;;;;;:::i;:::-;5225:1;1123:14094;;;;;;;;;;;;;;:::i;:::-;5225:1;1123:14094;;;;;;;;5290:22;;;;:::i;:::-;1123:14094;5322:20;;;:::i;:::-;1123:14094;5387:7;:::i;:::-;1123:14094;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;2122:17:27;1123:14094:82;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;2163:30:27;2159:90;;1123:14094:82;-1:-1:-1;;;;;1123:14094:82;2296:23:27;;1123:14094:82;;;;;;;;;;;;;;;;;;;2756:5:27;1123:14094:82;;;;;;;;;;;;;;;2159:90:27;1123:14094:82;;;;;;:::i;:::-;2219:19:27;1123:14094:82;;;;;;;;;;;;2159:90:27;;1123:14094:82;;;;;;-1:-1:-1;;1123:14094:82;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;:::i;:::-;1303:62:12;;;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;1123:14094;;;3171:12;1123:14094;;;;;;;3171:29;1123:14094;;;3171:29;1123:14094;;3170:30;3166:70;;1123:14094;;;;;;;;;;8933:31;1123:14094;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9060:24;;;1123:14094;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3166:70;1123:14094;;-1:-1:-1;;;3209:27:82;;1123:14094;3209:27;;1123:14094;;;;;3209:27;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;1303:62:12;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;11446:15;;11442:51;;11507:30;;11503:67;;11660:16;1123:14094;11660:16;1123:14094;;11660:16;:::i;:::-;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11832:40;;;;1123:14094;;;;11832:40;;1123:14094;;;;;;;11808:12;1123:14094;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11917:24;1123:14094;;;;;11882:23;1123:14094;;;;;;;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;;;11995:59;1946:3;1123:14094;-1:-1:-1;;;;;12197:71:82;1123:14094;;11995:59;;;:::i;:::-;1123:14094;-1:-1:-1;;;;;;;;;;;1123:14094:82;;;;;;;;;;;;;;;:::i;:::-;12159:23;;;1513:6:12;1123:14094:82;;;;;;;;;;;1946:3;;;;1123:14094;1946:3;;;;:::i;:::-;12197:71;;;1123:14094;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11442:51;1123:14094;;-1:-1:-1;;;11470:23:82;;1123:14094;;11470:23;1123:14094;;;;;;;;;;;;;;;;;10419:12;1123:14094;;;;;;;10419:31;1123:14094;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;10467:26;:59;;;;;1123:14094;;;;;;;;;;;;;:::i;10467:59::-;1123:14094;;;;;;;;2440:4:21;1123:14094:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10467:59;;;1123:14094;;;;;2440:4:21;1123:14094:82;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;-1:-1:-1;1123:14094:82;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1303:62:12;;;:::i;:::-;1123:14094:82;2881:8;1123:14094;;2877:41;;-1:-1:-1;;;;;1123:14094:82;;7727:21;;7723:58;;1123:14094;7934:41;1123:14094;;;;7883:15;1123:14094;;7883:36;1123:14094;;;;;;;;;;;;;;;;;;;7883:36;1123:14094;;;;;;;7934:41;1123:14094;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;1304:27;;1123:14094;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10775:46:82;;;:97;;;;1123:14094;10775:150;;;;1123:14094;;;;;;;;;;10775:150;-1:-1:-1;;;1810:52:27;;;-1:-1:-1;1810:92:27;;;;10775:150:82;;;;;1810:92:27;-1:-1:-1;;;1759:52:21;;;-1:-1:-1;1759:131:21;;;;1810:92:27;1759:183:21;;;;1810:92:27;;;;;1759:183:21;-1:-1:-1;;;1168:51:31;;-1:-1:-1;1759:183:21;;;:131;-1:-1:-1;;;1827:63:21;;;-1:-1:-1;1759:131:21;;10775:97:82;-1:-1:-1;;;10825:47:82;;;-1:-1:-1;10775:97:82;;1123:14094;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;1599:130:12;1513:6;1123:14094:82;-1:-1:-1;;;;;1123:14094:82;929:10:29;1662:23:12;1123:14094:82;;1599:130:12:o;1123:14094:82:-;;;;;;;;;;;;;;;;;;;;;;;;;2666:187:12;2758:6;1123:14094:82;;-1:-1:-1;;;;;1123:14094:82;;;-1:-1:-1;;;;;;1123:14094:82;;;;;;;;;;2806:40:12;-1:-1:-1;;2806:40:12;2666:187::o;2593:227:21:-;-1:-1:-1;;;;;1123:14094:82;;2706:21:21;;1123:14094:82;;2725:1:21;1123:14094:82;2791:9:21;1123:14094:82;;;2725:1:21;1123:14094:82;;2725:1:21;1123:14094:82;;;;2725:1:21;1123:14094:82;;2593:227:21;:::o;1123:14094:82:-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;;1123:14094:82;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;1123:14094:82;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;:::o;17366:193:21:-;1123:14094:82;;;;;;:::i;:::-;17499:1:21;1123:14094:82;;;;;;;;17511:18:21;;;:::i;:::-;1123:14094:82;17366:193:21;:::o;1123:14094:82:-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;5941:1549;;;-1:-1:-1;;;;;1123:14094:82;;;;5941:1549;;6289:23;;6285:60;;1513:6:12;1123:14094:82;;6359:10;:21;;:53;;;5941:1549;6355:94;;1123:14094;;13755:21;13751:46;;1123:14094;;;;13811:35;13807:69;;1123:14094;;1558:3;;13890:33;;;;13886:97;;13999:13;1123:14094;13999:13;1123:14094;;14014:20;;;;;14055:12;;;;:::i;:::-;1123:14094;-1:-1:-1;;1123:14094:82;;;;;;;14071:16;;;;:::i;:::-;1123:14094;-1:-1:-1;14055:32:82;14051:87;;1123:14094;;13999:13;;14051:87;14125:12;1123:14094;14125:12;;;:::i;:::-;1123:14094;;;14096:42;;;;;;;;;1123:14094;14096:42;1123:14094;;;;;;;;;;;;14014:20;;;;;;;;1123:14094;6509:817;6514:13;1123:14094;;6529:20;;;;;6584:12;;;;:::i;:::-;1123:14094;;;;;6615:12;1123:14094;;;;;;;6615:28;1123:14094;;;6615:28;1123:14094;;6614:29;6610:68;;6696:11;;;;:::i;:::-;1123:14094;6696:16;6692:49;;1123:14094;;;6870:16;1123:14094;;;;6870:39;1123:14094;;;;6898:11;;;;:::i;:::-;1123:14094;6870:39;;:::i;:::-;1123:14094;;;;;;;;;;6992:32;;;6988:104;;-1:-1:-1;1123:14094:82;;;;;;;;;;;;;;;;;6514:13;;6988:104;1123:14094;;;;;;7033:59;;;;;;;;;1123:14094;;;;;;;;;7033:59;6692:49;1123:14094;;-1:-1:-1;;;6721:20:82;;;;;6610:68;1123:14094;;-1:-1:-1;;;6652:26:82;;;;;1123:14094;;;;;6652:26;6529:20;;;;;;;;1123:14094;;;;;;;;:::i;:::-;;;;10313:81:21;1123:14094:82;;;;10321:28:21;10313:81;:::i;:::-;1123:14094:82;1732:3:25;1123:14094:82;;1716:14:25;;;;;1779:10;;1732:3;1779:10;;;:::i;:::-;1123:14094:82;1768:6:25;;;;:::i;:::-;1123:14094:82;;;1755:12:25;1123:14094:82;;1755:34:25;1123:14094:82;;;;;;1755:34:25;:::i;1732:3::-;1701:13;;1716:14;;;;;1123:14094:82;10560:3:21;1123:14094:82;;10544:14:21;;;;;10604:10;;10560:3;10604:10;;;:::i;:::-;1123:14094:82;10589:6:21;;;;:::i;:::-;1123:14094:82;;;;10579:9:21;1123:14094:82;;;;;;;;;;10579:35:21;1123:14094:82;;;;;;10579:35:21;:::i;10560:3::-;10529:13;;10544:14;;;;;;;1123:14094:82;;;;-1:-1:-1;;;;;;;;;;;6359:10:82;10640:53:21;;;;;;;:::i;:::-;;;;1713:19:28;16774:580:21;;10524:101;5941:1549:82;;;;;;:::o;16774:580:21:-;1123:14094:82;;;;;;;;;;;;;;;;;;16813:90:21;;;;6359:10:82;16813:90:21;;;1123:14094:82;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;16813:90:21;;;;1123:14094:82;;16813:90:21;;;16774:580;-1:-1:-1;16809:535:21;;;;1123:14094:82;16809:535:21;;:::i;:::-;;;;;;;;;;16774:580;;;;;;;;16809:535;1123:14094:82;-1:-1:-1;;;17267:62:21;;1123:14094:82;17267:62:21;16813:90;17267:62;;;:::i;16809:535::-;17161:81;;:::i;:::-;;;;16809:535;;;17161:81;1123:14094:82;;-1:-1:-1;;;17213:14:21;;1123:14094:82;16813:90:21;17213:14;;1123:14094:82;;;;;;;;;;;:::i;16809:535:21:-;-1:-1:-1;;;;;;1123:14094:82;16982:71:21;16978:168;;16809:535;;;16978:168;1123:14094:82;-1:-1:-1;;;17077:50:21;;1123:14094:82;17077:50:21;16813:90;17077:50;;;:::i;16813:90::-;;;;;1123:14094:82;16813:90:21;;;;;;;;;:::i;:::-;;;;;13886:97:82;1123:14094;;;;;13932:51;;;;;;;;;1123:14094;;;;;13932:51;13807:69;1123:14094;;-1:-1:-1;;;13855:21:82;;;;;13751:46;1123:14094;;-1:-1:-1;;;13785:12:82;;;;;6355:94;1123:14094;;-1:-1:-1;;;6421:28:82;;6359:10;6421:28;;;1123:14094;;;6421:28;6359:53;:10;;6310:1;1123:14094;6385:15;1123:14094;;;;6310:1;1123:14094;;;6384:28;6359:53;;1123:14094;;;;;;;;;;;;;-1:-1:-1;1123:14094:82;;;;;;;;-1:-1:-1;;1123:14094:82;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;-1:-1:-1;;;1123:14094:82;;;;;;;3790:351:27;;-1:-1:-1;;;;;1123:14094:82;3907:33:27;3899:88;2756:5;3907:33;;;3899:88;:::i;:::-;-1:-1:-1;;;;;1123:14094:82;;;;4005:22:27;;1123:14094:82;;;;;;;;:::i;:::-;;;4099:35:27;;;;1123:14094:82;;;-1:-1:-1;1123:14094:82;;;4070:17:27;1123:14094:82;;;;;;;;;;;-1:-1:-1;;;;;;1123:14094:82;;;;;;3790:351:27:o;1123:14094:82:-;;;-1:-1:-1;;;1123:14094:82;;;;;;;;;;;;;;;;;;;;12499:484;-1:-1:-1;;;;;1123:14094:82;;;;12499:484;12596:23;;12592:60;;1558:3;12666:36;;12662:135;;1123:14094;;;;;;12807:34;;1123:14094;;;;;;;;;12851:38;1123:14094;1558:3;1123:14094;;;;;;1558:3;1123:14094;;;;;;;;;-1:-1:-1;;;;;1123:14094:82;;3123:88:27;2756:5;3131:33;;;3123:88;:::i;:::-;3314:35;1123:14094:82;;;;;:::i;:::-;;;;3314:35:27;1123:14094:82;3292:57:27;1123:14094:82;;-1:-1:-1;;;;;;1123:14094:82;-1:-1:-1;;;;;1123:14094:82;;;;;;;;;;;3292:57:27;1123:14094:82;;;;;;;;;;;;12499:484::o;12662:135::-;1123:14094;;-1:-1:-1;;;12725:61:82;;;;;1123:14094;;;1558:3;1123:14094;;;;;;12725:61","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","burn(address,uint256,uint256)":"f5298aca","burnBatch(address,uint256[],uint256[])":"6b20c454","createToken(string,uint256,address)":"1542bb95","disableContract()":"894ba833","disabled()":"ee070805","exists(uint256)":"4f558e79","init(string,string,string,address,address)":"a7eae21c","isApprovedForAll(address,address)":"e985e9c5","isApprovedMinter(address)":"3a3d146f","maxSupplyForToken(uint256)":"ffd25aa4","mintBatchTo(address,uint256[],uint256[])":"3512639c","mintTo(address,uint256,uint256)":"2baf2acb","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","royaltyInfo(uint256,uint256)":"2a55205a","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","setDefaultRoyaltyPercentage(uint256)":"e27a41bf","setDefaultRoyaltyReceiver(address)":"3ebc82c5","setMinterApproval(address,bool)":"0de54ba0","setRoyaltyReceiverForToken(uint256,address)":"e2200a0b","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenCreator(uint256)":"40c1a064","totalMintedForToken(uint256)":"c33ae88f","totalSupply(uint256)":"bd85b039","transferOwnership(address)":"f2fde38b","updateTokenURI(uint256,string)":"18e97fd1","uri(uint256)":"0e89341c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"CallerCannotMint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractIsDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedTotalMinted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceededMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"RoyaltyPercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"ContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isMinter\",\"type\":\"bool\"}],\"name\":\"MinterApprovalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"royaltyReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"burnBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_maxSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_royaltyReceiver\",\"type\":\"address\"}],\"name\":\"createToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"isApprovedMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"maxSupplyForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"}],\"name\":\"mintBatchTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mintTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_percentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRoyaltyPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setDefaultRoyaltyReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isMinter\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"setRoyaltyReceiverForToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenCreator\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"totalMintedForToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"updateTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1.\",\"errors\":{\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"CallerCannotMint(address)\":[{\"params\":{\"_caller\":\"The account that attempted to mint.\"}}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"params\":{\"_maxSupply\":\"The configured max supply for the token id.\",\"_requestedTotalMinted\":\"The post-mint lifetime minted supply that was requested.\",\"_tokenId\":\"The token id being minted.\"}}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported percentage.\",\"supplied\":\"Percentage supplied by the caller.\"}}],\"TokenDoesNotExist(uint256)\":[{\"params\":{\"_tokenId\":\"The missing token id.\"}}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"params\":{\"tokenId\":\"Token id that is not greater than the previous token id.\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"ContractDisabled(address)\":{\"params\":{\"user\":\"Owner that disabled the collection.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MinterApprovalUpdated(address,bool)\":{\"params\":{\"isMinter\":\"True when the address is approved to mint.\",\"minter\":\"Address whose approval changed.\"}},\"TokenCreated(uint256,address,address,uint256,string)\":{\"params\":{\"creator\":\"Collection owner reported as creator when the token id is created.\",\"maxSupply\":\"Maximum supply configured for the token id.\",\"royaltyReceiver\":\"ERC2981 royalty receiver configured for the token id.\",\"tokenId\":\"Newly created token id.\",\"tokenURI\":\"Token-specific metadata URI.\"}},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createToken(string,uint256,address)\":{\"params\":{\"_maxSupply\":\"Maximum supply that may ever be minted for the new token id.\",\"_royaltyReceiver\":\"ERC2981 royalty receiver for the new token id.\",\"_tokenURI\":\"Metadata URI returned for the new token id.\"},\"returns\":{\"_0\":\"The newly created token id.\"}},\"exists(uint256)\":{\"details\":\"Indicates whether any token exist with a given id, or not.\"},\"init(string,string,string,address,address)\":{\"details\":\"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.\",\"params\":{\"_baseURI\":\"Base ERC1155 URI used when a token id has no token-specific URI.\",\"_creator\":\"Initial collection owner and ERC2981 royalty receiver.\",\"_defaultMinter\":\"Optional minter approved during initialization. Use zero address for no default minter.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isApprovedMinter(address)\":{\"params\":{\"_address\":\"Address to inspect.\"},\"returns\":{\"_0\":\"True when `_address` is an approved minter.\"}},\"maxSupplyForToken(uint256)\":{\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Maximum mintable supply. Returns zero for token ids that have not been created.\"}},\"mintBatchTo(address,uint256[],uint256[])\":{\"details\":\"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.\",\"params\":{\"_amounts\":\"Quantities to mint for each token id.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenIds\":\"Existing token ids to mint.\"}},\"mintTo(address,uint256,uint256)\":{\"details\":\"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.\",\"params\":{\"_amount\":\"Quantity to mint.\",\"_receiver\":\"Address that receives the minted tokens.\",\"_tokenId\":\"Existing token id to mint.\"},\"returns\":{\"_0\":\"Minted token id.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"royaltyInfo(uint256,uint256)\":{\"details\":\"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"details\":\"Tokens created before this update keep their token-specific royalty percentage.\",\"params\":{\"_percentage\":\"New royalty percentage, expressed as whole percentage points.\"}},\"setDefaultRoyaltyReceiver(address)\":{\"details\":\"Token-specific royalty receivers take precedence over this value.\",\"params\":{\"_receiver\":\"New default royalty receiver.\"}},\"setMinterApproval(address,bool)\":{\"details\":\"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.\",\"params\":{\"_isMinter\":\"Whether the address should be allowed to mint.\",\"_minter\":\"Address whose minter approval is being changed.\"}},\"setRoyaltyReceiverForToken(uint256,address)\":{\"details\":\"The token's existing royalty percentage is preserved.\",\"params\":{\"_receiver\":\"New token-specific royalty receiver.\",\"_tokenId\":\"Token id whose royalty receiver is updated.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalMintedForToken(uint256)\":{\"details\":\"Burns do not reduce this value.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Total quantity ever minted for the token id.\"}},\"totalSupply(uint256)\":{\"details\":\"Total amount of tokens in with a given id.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateTokenURI(uint256,string)\":{\"params\":{\"_tokenId\":\"Token id whose URI is updated.\",\"_tokenURI\":\"New token-specific metadata URI.\"}},\"uri(uint256)\":{\"details\":\"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.\",\"params\":{\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Metadata URI for the token id.\"}}},\"stateVariables\":{\"MAX_BATCH_SIZE\":{\"return\":\"Maximum supported batch item count.\",\"returns\":{\"_0\":\"Maximum supported batch item count.\"}},\"disabled\":{\"return\":\"True when disabled.\",\"returns\":{\"_0\":\"True when disabled.\"}},\"name\":{\"return\":\"Collection name.\",\"returns\":{\"_0\":\"Collection name.\"}},\"symbol\":{\"return\":\"Collection symbol.\",\"returns\":{\"_0\":\"Collection symbol.\"}}},\"title\":\"RareERC1155\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountCannotBeZero()\":[{\"notice\":\"Reverted when a mint amount is zero.\"}],\"BatchLengthMismatch()\":[{\"notice\":\"Reverted when parallel batch arrays have different lengths.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"CallerCannotMint(address)\":[{\"notice\":\"Reverted when a caller is neither the collection owner nor an approved minter.\"}],\"ContractIsDisabled()\":[{\"notice\":\"Reverted when a write operation is attempted after the collection has been disabled.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"ExceededMaxSupply(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when minting would put a token id above its configured lifetime max supply.\"}],\"MaxSupplyCannotBeZero()\":[{\"notice\":\"Reverted when a token type is created with a zero max supply.\"}],\"RoyaltyPercentageTooHigh(uint256,uint256)\":[{\"notice\":\"Reverted when the default royalty percentage is above 100%.\"}],\"TokenDoesNotExist(uint256)\":[{\"notice\":\"Reverted when a token id has not been created.\"}],\"TokenIdsNotStrictlyAscending(uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an address parameter is the zero address.\"}]},\"events\":{\"ContractDisabled(address)\":{\"notice\":\"Emitted when the collection is disabled.\"},\"MinterApprovalUpdated(address,bool)\":{\"notice\":\"Emitted when owner changes minter approval.\"},\"TokenCreated(uint256,address,address,uint256,string)\":{\"notice\":\"Emitted when the owner creates a token type.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch mint operations.\"},\"createToken(string,uint256,address)\":{\"notice\":\"Creates a new token type.\"},\"disableContract()\":{\"notice\":\"Permanently disables owner-managed write operations on the collection.\"},\"disabled()\":{\"notice\":\"Returns whether owner-managed collection writes have been permanently disabled.\"},\"init(string,string,string,address,address)\":{\"notice\":\"Initializes a cloned ERC1155 collection.\"},\"isApprovedMinter(address)\":{\"notice\":\"Returns whether an address is approved to mint.\"},\"maxSupplyForToken(uint256)\":{\"notice\":\"Returns the configured max supply for a token id.\"},\"mintBatchTo(address,uint256[],uint256[])\":{\"notice\":\"Mints existing token ids to a receiver.\"},\"mintTo(address,uint256,uint256)\":{\"notice\":\"Mints one existing token id to a receiver.\"},\"name()\":{\"notice\":\"Returns the human-readable collection name.\"},\"renounceOwnership()\":{\"notice\":\"Prevents the collection owner, and therefore creator proxy, from becoming the zero address.\"},\"setDefaultRoyaltyPercentage(uint256)\":{\"notice\":\"Updates the fallback ERC2981 royalty percentage.\"},\"setDefaultRoyaltyReceiver(address)\":{\"notice\":\"Updates the fallback ERC2981 royalty receiver.\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Grants or revokes collection-wide minter approval for an address.\"},\"setRoyaltyReceiverForToken(uint256,address)\":{\"notice\":\"Updates the ERC2981 royalty receiver for one token id.\"},\"symbol()\":{\"notice\":\"Returns the human-readable collection symbol.\"},\"totalMintedForToken(uint256)\":{\"notice\":\"Returns the lifetime quantity minted for a token id.\"},\"updateTokenURI(uint256,string)\":{\"notice\":\"Updates the token-specific metadata URI for an existing token id.\"},\"uri(uint256)\":{\"notice\":\"Returns the metadata URI for a token id.\"}},\"notice\":\"Basic RARE Protocol ERC1155 collection with creator and royalty support.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155.sol\":\"RareERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a\",\"dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AmountCannotBeZero"},{"inputs":[],"type":"error","name":"BatchLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"type":"error","name":"CallerCannotMint"},{"inputs":[],"type":"error","name":"ContractIsDisabled"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedTotalMinted","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"type":"error","name":"ExceededMaxSupply"},{"inputs":[],"type":"error","name":"MaxSupplyCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"RoyaltyPercentageTooHigh"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true}],"type":"event","name":"ContractDisabled","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"minter","type":"address","indexed":true},{"internalType":"bool","name":"isMinter","type":"bool","indexed":false}],"type":"event","name":"MinterApprovalUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"creator","type":"address","indexed":true},{"internalType":"address","name":"royaltyReceiver","type":"address","indexed":true},{"internalType":"uint256","name":"maxSupply","type":"uint256","indexed":false},{"internalType":"string","name":"tokenURI","type":"string","indexed":false}],"type":"event","name":"TokenCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256[]","name":"ids","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"values","type":"uint256[]","indexed":false}],"type":"event","name":"TransferBatch","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"TransferSingle","anonymous":false},{"inputs":[{"internalType":"string","name":"value","type":"string","indexed":false},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"URI","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function","name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"burnBatch"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"address","name":"_royaltyReceiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableContract"},{"inputs":[],"stateMutability":"view","type":"function","name":"disabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxSupplyForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"mintBatchTo"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mintTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"stateMutability":"view","type":"function","name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeBatchTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyPercentage"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultRoyaltyReceiver"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isMinter","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setMinterApproval"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyReceiverForToken"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalMintedForToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateTokenURI"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."},"balanceOfBatch(address[],uint256[])":{"details":"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createToken(string,uint256,address)":{"params":{"_maxSupply":"Maximum supply that may ever be minted for the new token id.","_royaltyReceiver":"ERC2981 royalty receiver for the new token id.","_tokenURI":"Metadata URI returned for the new token id."},"returns":{"_0":"The newly created token id."}},"exists(uint256)":{"details":"Indicates whether any token exist with a given id, or not."},"init(string,string,string,address,address)":{"details":"Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers.","params":{"_baseURI":"Base ERC1155 URI used when a token id has no token-specific URI.","_creator":"Initial collection owner and ERC2981 royalty receiver.","_defaultMinter":"Optional minter approved during initialization. Use zero address for no default minter.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."}},"isApprovedForAll(address,address)":{"details":"See {IERC1155-isApprovedForAll}."},"isApprovedMinter(address)":{"params":{"_address":"Address to inspect."},"returns":{"_0":"True when `_address` is an approved minter."}},"maxSupplyForToken(uint256)":{"params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Maximum mintable supply. Returns zero for token ids that have not been created."}},"mintBatchTo(address,uint256[],uint256[])":{"details":"Callable by the owner or an approved minter only. Token ids must be strictly ascending. Approved minters intentionally have collection-wide mint authority for any existing token id, up to that token's max supply, so creators can approve a trusted marketplace contract once instead of approving per token. Owners should only approve minters they trust to mint remaining collection supply.","params":{"_amounts":"Quantities to mint for each token id.","_receiver":"Address that receives the minted tokens.","_tokenIds":"Existing token ids to mint."}},"mintTo(address,uint256,uint256)":{"details":"Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting.","params":{"_amount":"Quantity to mint.","_receiver":"Address that receives the minted tokens.","_tokenId":"Existing token id to mint."},"returns":{"_0":"Minted token id."}},"owner()":{"details":"Returns the address of the current owner."},"royaltyInfo(uint256,uint256)":{"details":"Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be paid in that same unit of exchange."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"See {IERC1155-safeBatchTransferFrom}."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"See {IERC1155-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC1155-setApprovalForAll}."},"setDefaultRoyaltyPercentage(uint256)":{"details":"Tokens created before this update keep their token-specific royalty percentage.","params":{"_percentage":"New royalty percentage, expressed as whole percentage points."}},"setDefaultRoyaltyReceiver(address)":{"details":"Token-specific royalty receivers take precedence over this value.","params":{"_receiver":"New default royalty receiver."}},"setMinterApproval(address,bool)":{"details":"Approval is deliberately collection-wide rather than token-scoped to keep the creator UX to a single marketplace approval. An approved minter can mint any existing token id to any receiver until the token's max supply is reached.","params":{"_isMinter":"Whether the address should be allowed to mint.","_minter":"Address whose minter approval is being changed."}},"setRoyaltyReceiverForToken(uint256,address)":{"details":"The token's existing royalty percentage is preserved.","params":{"_receiver":"New token-specific royalty receiver.","_tokenId":"Token id whose royalty receiver is updated."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"totalMintedForToken(uint256)":{"details":"Burns do not reduce this value.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Total quantity ever minted for the token id."}},"totalSupply(uint256)":{"details":"Total amount of tokens in with a given id."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"updateTokenURI(uint256,string)":{"params":{"_tokenId":"Token id whose URI is updated.","_tokenURI":"New token-specific metadata URI."}},"uri(uint256)":{"details":"Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI.","params":{"_tokenId":"Token id to inspect."},"returns":{"_0":"Metadata URI for the token id."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch mint operations."},"createToken(string,uint256,address)":{"notice":"Creates a new token type."},"disableContract()":{"notice":"Permanently disables owner-managed write operations on the collection."},"disabled()":{"notice":"Returns whether owner-managed collection writes have been permanently disabled."},"init(string,string,string,address,address)":{"notice":"Initializes a cloned ERC1155 collection."},"isApprovedMinter(address)":{"notice":"Returns whether an address is approved to mint."},"maxSupplyForToken(uint256)":{"notice":"Returns the configured max supply for a token id."},"mintBatchTo(address,uint256[],uint256[])":{"notice":"Mints existing token ids to a receiver."},"mintTo(address,uint256,uint256)":{"notice":"Mints one existing token id to a receiver."},"name()":{"notice":"Returns the human-readable collection name."},"renounceOwnership()":{"notice":"Prevents the collection owner, and therefore creator proxy, from becoming the zero address."},"setDefaultRoyaltyPercentage(uint256)":{"notice":"Updates the fallback ERC2981 royalty percentage."},"setDefaultRoyaltyReceiver(address)":{"notice":"Updates the fallback ERC2981 royalty receiver."},"setMinterApproval(address,bool)":{"notice":"Grants or revokes collection-wide minter approval for an address."},"setRoyaltyReceiverForToken(uint256,address)":{"notice":"Updates the ERC2981 royalty receiver for one token id."},"symbol()":{"notice":"Returns the human-readable collection symbol."},"totalMintedForToken(uint256)":{"notice":"Returns the lifetime quantity minted for a token id."},"updateTokenURI(uint256,string)":{"notice":"Updates the token-specific metadata URI for an existing token id."},"uri(uint256)":{"notice":"Returns the metadata URI for a token id."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155.sol":"RareERC1155"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3","urls":["bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a","dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":82} \ No newline at end of file diff --git a/abis/RareERC1155CheckoutExecutionModule.json b/abis/RareERC1155CheckoutExecutionModule.json new file mode 100644 index 0000000..cfdc2a9 --- /dev/null +++ b/abis/RareERC1155CheckoutExecutionModule.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"execution","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutItem","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_remainingEth","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[{"name":"totalPaid","type":"uint256","internalType":"uint256"},{"name":"newRemainingEth","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"executeCheckoutPayout","inputs":[{"name":"_item","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"_seller","type":"address","internalType":"address"},{"name":"_grossAmount","type":"uint256","internalType":"uint256"},{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x60a0806040523461002357306080526146d390816100298239608051816133710152f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c9081632c0c49ee1461006a5750806359a8a40a14610065578063a3eaf4d914610060578063cfdbf2541461005b5763d65852a61461005657600080fd5b6103fc565b6103e0565b6103c4565b610326565b60203660031901126100e9576004356001600160401b0381116100e5576100e19161009c6100d59236906004016100ec565b916100a760c0604052565b604051906100b482610499565b8082528060208301528060408301526060820152608052606060a052610586565b60405191829182610193565b0390f35b5080fd5b80fd5b9181601f8401121561011c578235916001600160401b03831161011c576020808501948460051b01011161011c57565b600080fd5b634e487b7160e01b600052602160045260246000fd5b6006111561014157565b610121565b9060068210156101415752565b919082519283825260005b84811061017f575050826000602080949584010152601f8019910116010190565b60208183018101518483018201520161015e565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a891061020a5750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d5251908151815261023d838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526102a86101208084015190830190610146565b610140828101516001600160e01b031916908201526102d861016080840151906101a08091850152830190610153565b91610180809101519101529e0199019901979a9998969594939291906101f4565b908161010091031261011c5790565b6001600160a01b0381160361011c57565b359061032482610308565b565b60e036600319011261011c576001600160401b0360043581811161011c576103529036906004016102f9565b6044359061035f82610308565b60a43583811161011c576103779036906004016100ec565b9060c43594851161011c576103936103a79536906004016100ec565b94909360843591606435916024359061098f565b60408051928352602083019190915290f35b600091031261011c57565b3461011c57600036600319011261011c57602060405160328152f35b3461011c57600036600319011261011c576020604051604b8152f35b60c036600319011261011c576001600160401b0360043581811161011c576104289036906004016102f9565b6024359061043582610308565b60843583811161011c5761044d9036906004016100ec565b9060a43594851161011c576104696104819536906004016100ec565b94909361047461336e565b6064359160443591610e88565b005b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b038211176104b457604052565b610483565b6001600160401b0381116104b457604052565b60e081019081106001600160401b038211176104b457604052565b606081019081106001600160401b038211176104b457604052565b602081019081106001600160401b038211176104b457604052565b604081019081106001600160401b038211176104b457604052565b90601f801991011681019081106001600160401b038211176104b457604052565b604051906101a082018281106001600160401b038211176104b457604052565b60405190610324826104e7565b9061058f61336e565b610598816145ac565b6105a181610828565b60a09081526105af82610878565b906000923494845b8281106106c157505050505050806060608051015280610639575b506080517ff769e48349f9b4903ef362e95411b2c4778d3bdaf9dc87b0d25f29f2813ea1638151916020810151610631606060408401519301516040519384933397859094939260609260808301968352602083015260408201520152565b0390a2608090565b73__$11854c5905aa23948096e0e4d7059bb9de$__803b1561011c57604051637baf92a360e01b815260008051602061467e833981519152600482015260006024820181905233604483015260648201939093529190829060849082905af480156106bc57156105d257806106b06106b6926104b9565b806103b9565b386105d2565b610983565b6106dc868689846106d78189899e9c9d9e610905565b611035565b9196901561077c575090610755610702600193996106fb848888610905565b908a61258a565b96608080516107118151610942565b9052848060a01b0361072f6060610729878b8b610905565b01610962565b161561075e575b505b61074f83885183610749838361096f565b5261096f565b506122cc565b019493946105b7565b6107746040610180840151925101918251610955565b905238610736565b97956001929150610755906020608051016107978151610942565b9052610738565b6001600160401b0381116104b45760051b60200190565b604051906101a082018281106001600160401b038211176104b457604052816101806000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015260606101608201520152565b906108328261079e565b61083f6040519182610538565b8281528092610850601f199161079e565b019060005b82811061086157505050565b60209061086c6107b5565b82828501015201610855565b906108828261079e565b60409061089182519182610538565b83815280936108a2601f199161079e565b0190600092835b8381106108b7575050505050565b81519060608201918083106001600160401b038411176104b457602092845286815282878183015287858301528286010152016108a9565b634e487b7160e01b600052603260045260246000fd5b91908110156109275760051b8101359060fe198136030182121561011c570190565b6108ef565b634e487b7160e01b600052601160045260246000fd5b906001820180921161095057565b61092c565b9190820180921161095057565b3561096c81610308565b90565b80518210156109275760209160051b010190565b6040513d6000823e3d90fd5b906109a898979695949392916109a361336e565b610a39565b9091565b60ff81160361011c57565b3561096c816109ac565b90604061096c92600181528160208201520190610153565b90604061096c92600281528160208201520190610153565b90604061096c92600581528160208201520190610153565b90604061096c92600481528160208201520190610153565b90604061096c92600381528160208201520190610153565b98979695949392919060ff8a35610a4f816109ac565b1615610ad357600160ff610a628c6109b7565b1614610ac957610ac5610a9e610aac610a7a8d6109b7565b60405163bb75025d60e01b602082015260ff90911660248201529182906044820190565b03601f198101835282610538565b604051631ee0c01d60e31b8152918291600483016109c1565b0390fd5b6109a89899611590565b95929491969893908695610ae7818a610955565b986060870198610b00818c610afb8d610962565b612860565b8051610d0d575090610b89949392916020890190610b25610b2083610962565b611359565b9a610b3f60808c0135809d90600052602052604060002090565b5415158b8d610b6881610b59610b5489610962565b611392565b90600052602052604060002090565b54151592610cdd575b5050610ca1575b6001600160a01b039788908e610962565b16610c4757509089610b9c8e8d946114be565b9f7f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9a60a09a610c2a99610bf498610c1698610bfc610c10995b610be8610be28b610962565b91613872565b60c08a01359d8e613872565b91339061311a565b8b81610c31575b5050505050505050610962565b99610962565b90604051958695339b1698013592856114cb565b0390a49190565b610c3a9761200c565b893880808080808b610c03565b9e610c109291508a907f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9a8f9a8f998f98610c1698610bfc60a09f9b610c9c610c2a9f9d610c97610bf49f610962565b612a9e565b610bd6565b610ccc610cb98d610b59610cb487610962565b611404565b3360009081526020919091526040902090565b610cd68154610942565b9055610b78565b60c0610cfa610cb9610d0493610b59610cf58b610962565b6113cb565b9201358254610955565b90558b8d610b71565b604051631ee0c01d60e31b8152908190610ac590600483016109d9565b91908082526020809201929160005b828110610d47575050505090565b9091929382806001928735610d5b81610308565b848060a01b03168152019501910192919092610d39565b91908082526020809201929160005b828110610d8f575050505090565b90919293828060019260ff8835610da5816109ac565b16815201950193929101610d81565b97959361096c999793610e0b969260008051602061467e8339815191528b5260018060a01b03948580921660208d01521660408b015260608a015260808901521660a08701526101008060c0880152860191610d2a565b9260e0818503910152610d72565b989694909361096c9a9894602094610e79989460008051602061467e8339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191610d2a565b92610100818503910152610d72565b97969592919094939560ff610e9c8a6109b7565b1615610f6957600160ff610eaf8b6109b7565b1614610ee257610ac5610ec18a6109b7565b60405163bb75025d60e01b815260ff90911660048201529081906024820190565b979192939495969773__$11854c5905aa23948096e0e4d7059bb9de$__94610f0c60208501610962565b96610f1960608601610962565b99873b1561011c57600099608097610f4b966040519d8e9c8d9b8c9b63981e8fc560e01b8d5201359060048c01610e19565b03915af480156106bc57610f5c5750565b806106b0610324926104b9565b9791969794909493929373__$11854c5905aa23948096e0e4d7059bb9de$__94610fa16060610f9a60208701610962565b9501610962565b94863b1561011c57600098610f4b946040519b8c9a8b998a99631872482b60e31b8b5260048b01610db4565b60405190610fda82610502565b60008252565b3d1561101a573d906001600160401b0382116104b4576040519161100e601f8201601f191660200184610538565b82523d6000602084013e565b606090565b919082604091031261011c576020825192015190565b908161104d91959394956110476107b5565b50612133565b928094611059836117d8565b8051909692906001600160a01b031680611145575b50156111345750906110869160608601519185612474565b805161112657507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c546000938493926110c8926001600160a01b031693611295565b90602082519201905af46110da610fe0565b901561110c576110f59192506020808251830101910161101f565b600161010084015291906101808201529160019190565b61111861111f916123a5565b9083612236565b9160009190565b91505061111f91508261220d565b93505050935061111f91508261220d565b6001600160a01b031660808901523861106e565b9035601e198236030181121561011c5701602081359101916001600160401b03821161011c578160051b3603831361011c57565b81835290916001600160fb1b03831161011c5760209260051b809284830137010190565b9061124b61096c9260ff81356111c6816109ac565b16835260208101356111d781610308565b6001600160a01b031660208401526112046111f460408301610319565b6001600160a01b03166040850152565b61122361121360608301610319565b6001600160a01b03166060850152565b6080810135608084015260a081013560a084015260c081013560c084015260e0810190611159565b9091610100908160e0820152019161118d565b90815180825260208080930193019160005b82811061127e575050505090565b835160ff1685529381019392810192600101611270565b8251602080850151604080870151608088015160a0909801519151632cd4520560e11b8186015260e060248201529796889692956001600160a01b03949193908516906112e7906101048a01906111b1565b9360448901526064880152608487015260a486015260231992838683030160c48701528080885193848152019701926000905b83821061133c5750505050508284030160e483015261096c92610a9e9161125e565b84518116895297820197899750938201936001919091019061131a565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b60631981019190821161095057565b9190820391821161095057565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b8181029291811591840414171561095057565b818110611514575050565b60008155600101611509565b600560009182815582600182015582600282015582600382015560048101805484825580611576575b505001908154908083558161155d57505050565b60208161032494601f935220910160051c810190611509565b6115899185526020852090810190611509565b3880611549565b9498959097929691939888996115a6818a610955565b996115b8818c610afb60608c01610962565b9b8c51611779579a9b508b9a6001600160a01b036115d860608b01610962565b1661175a57506116aa969798999a6115ef916114be565b995b6002611639896116228c608061161161160c60208401610962565b61143d565b910135600052602052604060002090565b9060018060a01b0316600052602052604060002090565b0161164960c08b013582546114be565b80915515611731575b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50a546116a3908a906001600160a01b031661168f60208301610962565b908b608060c0850135940135923392612cce565b878961200c565b6116b660208301610962565b917f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d78869461172c6116e760608401610962565b6040805160808087013582526001600160a01b03938416602083015260a08701359282019290925260c090950135606086015295811695339590911693918291820190565b0390a4565b611755611750896116228c610b5961160c602060808401359301610962565b611520565b611652565b9a88999a915061177490610c9760606116aa9a9b01610962565b6115f1565b604051631ee0c01d60e31b815280610ac58f600483016109d9565b6040519060c082018281106001600160401b038211176104b457604052606060a0836000815260006020820152600060408201526000838201528260808201520152565b906117e1611794565b9082356117ed816109ac565b60ff811693841561185257611801826109ac565b6001851461183d5750611813906109ac565b6040519263bb75025d60e01b6020850152602484015260248352611836836104e7565b6000929190565b9193505061184b9150611ba9565b9192909190565b9193505061184b91506118a4565b903590601e198136030182121561011c57018035906001600160401b03821161011c57602001918160051b3603831361011c57565b9081602091031261011c575190565b6118ac611794565b90606081016118c96118c56118c083610962565b61268a565b1590565b611ab157602091828101916118e86118c56118e385610962565b612718565b611a6c5790611928916118fa84610962565b9061193261190782610962565b9260808501359360a086013595868660c0830135998360e08c950190611860565b9590943391614099565b60808101516001600160a01b03168a5296909115611a40575050505050508181015180838501528061198e575b506060915060a0810151608084015260c081015160a08401520151606082015260019161198a610fcd565b9190565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501546119f09184916119d0906001600160a01b03165b6001600160a01b031690565b60405180809581946361fe24a960e11b8352600483019190602083019252565b03915afa9081156106bc57606093600092611a13575b505060408401523861195f565b611a329250803d10611a39575b611a2a8183610538565b810190611895565b3880611a06565b503d611a20565b611a649750611a5491929394959650610962565b611a5e3393610962565b916133b2565b916000929190565b5050611a7d61183691949294610962565b604051630f20e39960e21b958101959095526001600160a01b0316602485015283604481015b03601f198101855284610538565b611aa3939150611ac361183691610962565b60405163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b6040519060a082018281106001600160401b038211176104b457604052606060808360008152600060208201526000604082015282808201520152565b9081602091031261011c5751801515810361011c5790565b6001600160a01b0391821681529116602082015260400190565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b90611bb2611794565b90604080840190611bd2611bc583610962565b6001600160a01b03168552565b611bde6119c483610962565b3314611fd2576060850190611bf86118c56118c084610962565b611f955760209182870196611c126118c56118e38a610962565b611f5657611c1e611aed565b50611c2888610962565b9160c0611c5b611c3788610962565b94611c4184610962565b946080810135809660a08301359586930135988994614481565b93909115611f2e57505050611c756119c46119c48b610962565b611cd186611c8289610962565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50a54611cb6906001600160a01b03166119c4565b885163e985e9c560e01b815293849283929060048401611b42565b0381855afa60009181611eff575b50611d1c575050505050611aa390611d02611cfc61183695610962565b97610962565b905196879363d65b0d6960e01b9085015260248401611b42565b96929493959615611ee6578685611d5092611d3686610962565b8751809581948293627eeac760e11b845260048401611b5c565b03915afa60009181611ec7575b50611dbe57505091611836949391611d7a610c10611aa395610962565b9051988995636906ef1760e11b90870152602486019093600093608093969560a084019760018060a01b038092168552166020840152604083015260608201520152565b92949182849a959297989a10611e8f57505050508284018051868601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50154611e3a939250859190611e18906001600160a01b03166119c4565b905190835180809681946361fe24a960e11b8352600483019190602083019252565b03915afa9182156106bc57608094600093611e70575b5050840152606081015182840152015160a082015260019161198a610fcd565b611e87929350803d10611a3957611a2a8183610538565b903880611e50565b611836965094611ead611ea7611aa3969b9997610962565b9a610962565b9051998a96636906ef1760e11b9088015260248701611b77565b611edf919250883d8a11611a3957611a2a8183610538565b9038611d5d565b5050611836949350611aa39250611cfc611d0291610962565b611f20919250883d8a11611f27575b611f188183610538565b810190611b2a565b9038611cdf565b503d611f0e565b939550939691509450611f50611f4a611f4a611a64999b610962565b92610962565b926136fd565b5050946118369250611f6a611aa391610962565b9551630f20e39960e21b928101929092526001600160a01b0390951660248201529384906044820190565b90611aa395506118369250611fa990610962565b905163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b611aa39450611fe361183692610962565b905163aac1ae8b60e01b60208201526001600160a01b0390911660248201529384906044820190565b9497969795919593929360018060a01b0390817f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c541697604051966020918461206d848b019b636b2c295360e11b8d5260c060248d015260e48c01906111b1565b961660448a0152606489015260848801528060231994858982030160a48a01528381520195926000905b8382106120f557505050505092610a9e83600098996120c3948a999897858098030160c4860152610d72565b51915af46120cf610fe0565b90156120d85750565b604051631ee0c01d60e31b8152908190610ac590600483016109f1565b90919293968380600192848b3561210b81610308565b1681520198019493920190612097565b60405161212781610502565b60008152906000368137565b9061213c6107b5565b5060c0612148826109b7565b916121d461215860208301610962565b6121c461216760408501610962565b6121a861217660608701610962565b9361219861218261211b565b9961218b610559565b9b8c5260ff1660208c0152565b6001600160a01b031660408a0152565b60808581013560608a01526001600160a01b0390911690880152565b6001600160a01b031660a0860152565b60a081013582850152013560e0830152600061010083015260006101208301526000610140830152610160820152600061018082015290565b6001610120820152610160906001600160e01b031961222b84613897565b166101408201520152565b6006821015610141576101609161012082015263ffffffff60e01b61222b84613897565b9081526001600160a01b039182166020820152911660408201526060810191909152608081019190915290151560a0820152949392610120926122c7926122a59060c0890190610146565b6001600160e01b03191660e08701526101406101008701819052860190610153565b930152565b80519060208101516122de9060ff1690565b60408201519092906001600160a01b031660608301516080840151909391906001600160a01b031660a08301519094906001600160a01b03169260c08101519060e081015161010082015161233290151590565b6101208301519061234282610137565b6101408401516001600160e01b0319169261016085015194610180015195604051998a99600160a01b60019003169d60ff169c61237f998b61225a565b037f844491b54cb1a58801f9eb51fecfaf5076847131d8f6ec580232d9766e3fae4f91a4565b906123af826123c1565b916123bc57505060059190565b925090565b631ee0c01d60e31b6001600160e01b03196123db83613897565b1614801590612469575b61245a57602481015191604482015160648301928351916005861190811561244e575b5061243b5761241790516114af565b1061242c5761242583610137565b6001929190565b6000925082915061096c610fcd565b505091505060009060009061096c610fcd565b60409150141538612408565b5060009060009061096c610fcd565b5060648151106123e5565b9060ff8235612482816109ac565b1615801590612511575b6124fa576124b260c0916124bb946124a660208601610962565b90608086013592612519565b91013590610955565b818111156124f057604051635bdd08f560e01b60208201526024810191909152604481019190915261096c8160648101610a9e565b505061096c610fcd565b5050505060405161250a81610502565b6000815290565b50831561248c565b9192909260005b848110612531575050505050600090565b6001600160a01b0380612544838761096f565b5151169083161480612573575b61255d57600101612520565b9150506040925061256d9161096f565b51015190565b50826020612581838761096f565b51015114612551565b9160ff612596826109b7565b166126845760005b8281106125f957508161096c938260c06125bd60206125f39601610962565b916125d86125c9610579565b6001600160a01b039094168452565b6080810135602084015201356040820152610749838361096f565b50610942565b612614612606828661096f565b51516001600160a01b031690565b6020906126256119c4838601610962565b6001600160a01b03909116149081612669575b506126455760010161259e565b604061265860c09261266494959661096f565b51019201358251610955565b905290565b9050612675828661096f565b51015160808301351438612638565b50905090565b6001600160a01b03908116908115612711576020907f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505541691602460405180948193632d5ad3d560e01b835260048301525afa600091816126f1575b5061096c5750600090565b61270a91925060203d8111611f2757611f188183610538565b90386126e6565b5050600190565b803b15159081612726575090565b90506040519060208083018160006301ffc9a760e01b9586845286602482015260248152612753816104e7565b51617530938685fa933d60005190866127f8575b50856127ee575b508461278b575b50505081612781575090565b61096c9150612803565b83945090600091839460405185810192835263ffffffff60e01b6024820152602481526127b7816104e7565b5192fa60005190913d836127e3575b5050816127d9575b501590388080612775565b90501515386127ce565b1015915038806127c6565b151594503861276e565b841115955038612767565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152612833816104e7565b5191617530fa6000513d82612854575b508161284d575090565b9050151590565b60201115915038612843565b918115612a93576001600160a01b038316908115612a5b5750604080516370a0823160e01b8152336004820152602092908381602481855afa60009181612a3c575b506128e2575050516364db3d5960e01b918101919091526001600160a01b03909216602483015260448201526000606482015261096c8160848101610a9e565b8481106129fd57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50854612940918491612924906001600160a01b03166119c4565b9084518080958194636eb1769f60e11b83523360048401611b42565b03915afa600091816129de575b5061298c5750516337a950bb60e01b918101919091526001600160a01b03909216602483015260448201526000606482015261096c8160848101610a9e565b8381106129a057505050505061096c610fcd565b90516337a950bb60e01b928101929092526001600160a01b0390931660248201526044810191909152606481019190915261096c8160848101610a9e565b6129f6919250843d8611611a3957611a2a8183610538565b903861294d565b91516364db3d5960e01b93810193909352506001600160a01b0390931660248201526044810191909152606481019190915261096c8160848101610a9e565b612a54919250853d8711611a3957611a2a8183610538565b90386128a2565b925050808210156124f0576040516310da2c1360e21b60208201526024810191909152604481019190915261096c8160648101610a9e565b50505061096c610fcd565b90918215612cc957604080516370a0823160e01b8082523060048084019190915292959294926020929091906001600160a01b0385169060008582602481865afa909181612caa575b50612b0f578888610ac5612af9610fe0565b9251631ee0c01d60e31b815292839283016109d9565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50854909290612b46906001600160a01b03166119c4565b803b1561011c578951630aed65f560e11b81526001600160a01b038816818b0190815233602082015230604082015260608101879052909160009183919082908490829060800103925af19081612c97575b50612baa578888610ac5612af9610fe0565b8851908152308882019081529091600091869184918290819060200103915afa909181612c78575b50612be4578787610ac5612af9610fe0565b949693959460009190818110612c7057612bfe92506114be565b905b808203612c0f57505050505050565b8351636ff596f360e01b938101939093526001600160a01b03909516602483015260448201949094526064810193909352610ac590612c5b84608481015b03601f198101865285610538565b51631ee0c01d60e31b815292839283016109d9565b505090612c00565b612c90919250853d8711611a3957611a2a8183610538565b9038612bd2565b806106b0612ca4926104b9565b38612b98565b612cc2919250863d8811611a3957611a2a8183610538565b9038612ae7565b915050565b95939194909285600093604098895195627eeac760e11b80885287612cf88560049d8e8401611b5c565b038860018060a01b0393848c169260209b8c9181865afa909181612fc2575b50612d3f578d8d610ac5612d29610fe0565b9251631ee0c01d60e31b81529283928301610a09565b92888410612f9557858e8b8f8b90612d636000945195869384938b85528401611b5c565b0381875afa909181612f76575b50612d82578e8e610ac5612d29610fe0565b9416803b1561011c576000878f928f838f91612dee8f8f988e9051998a988997889663eb46c45b60e01b885287019391909260e0959360018060a01b03928380921687521660208601521660408401526060830152608082015260c060a0820152600060c08201520190565b03925af19081612f63575b50612e0b578c8c610ac5612d29610fe0565b8c518281528d908d9060008c8280612e268c8e838901611b5c565b0381885afa909181612f44575b50612e445750610ac5612d29610fe0565b87938c928b9296612e62600096519788958694859485528401611b5c565b03915afa909181612f25575b50612e80578c8c610ac5612d29610fe0565b90612e928880939e9b9d9c9e946114be565b1492831593612f10575b505050612ead575050505050505050565b8551638791019960e01b958101959095526001600160a01b039788166024860152604485015286166064840152909416608482015260a4810193909352610ac590612efb8460c48101612c4d565b51631ee0c01d60e31b81529283928301610a09565b612f1b929350610955565b1415388581612e9c565b612f3d9192508a3d8c11611a3957611a2a8183610538565b9038612e6e565b612f5c9192508d803d10611a3957611a2a8183610538565b9038612e33565b806106b0612f70926104b9565b38612df9565b612f8e9192508c8d3d10611a3957611a2a8183610538565b9038612d70565b50858c610ac58f612efb8d8f898f8d612c4d9387519a8b96636906ef1760e11b9088015260248701611b77565b612fda9192508b3d8d11611a3957611a2a8183610538565b9038612d17565b602090818184031261011c578051906001600160401b03821161011c57019180601f8401121561011c5782516130168161079e565b936130246040519586610538565b818552838086019260051b82010192831161011c578301905b82821061304b575050505090565b8151815290830190830161303d565b90815180825260208080930193019160005b82811061307a575050505090565b83518552938101939281019260010161306c565b9092916040820191604081528451809352606081019260208096019060005b8181106130c75750505061096c939481840391015261305a565b82516001600160a01b0316865294870194918701916001016130ad565b6001600160a01b03909116815260606020820181905261096c93919261310c9184019061305a565b91604081840391015261305a565b82516001600160a01b0382169593949392906131369082613311565b604080516313849cfd60e21b80825291986004989392916000818061315e88888f840161308e565b0381855afa600091816132f6575b50613194578a8a610ac561317e610fe0565b9251631ee0c01d60e31b81529283928301610a21565b92813b1561011c578a51630d4498e760e21b81528b92908b90600081806131bf8f8c8e8489016130e4565b038183875af190816132e3575b506131de578390610ac561317e610fe0565b86946131f760009551968795869485948552840161308e565b03915afa600091816132c0575b50613216578888610ac561317e610fe0565b979496959760005b83518110156132b457613231818361096f565b516132528b61324b84613244818961096f565b519261096f565b5190610955565b0361325f5760010161321e565b8988610ac58961329f8a612c4d8b6132828961327b818f61096f565b519961096f565b51908551988994631b3c965960e21b6020870152602486016114cb565b51631ee0c01d60e31b81529283928301610a21565b50505050505050509050565b6132dc91923d8091833e6132d48183610538565b810190612fe1565b9038613204565b806106b06132f0926104b9565b386131cc565b61330a91923d8091833e6132d48183610538565b903861316c565b919061331c8161079e565b9261332a6040519485610538565b818452601f196133398361079e565b013660208601378360005b8381106133515750505050565b8061335e6001928461096f565b828060a01b038516905201613344565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146133a057565b60405163197ba25b60e01b8152600490fd5b9492939591956133c581610b5984611476565b956001600160e01b03191694634ed1072f60e11b8087146136d8575063915b8f1d60e01b8681146136a35750600162bed83560e01b0319868114613685575063e2cf60cb60e01b868114613651575063c6b949a960e01b8681146136325750636d03a2e560e01b8681146135bc575063ae3586c560e01b9186831461354d5750635bdd08f560e01b9250505083811461351c575063456afd0b60e01b90508281146134f35750631d6bbb8d60e11b8281146134c45750632e834cbf60e11b91821490506134975750505061096c610fcd565b610a9e6134b0600161096c94015460018060a01b031690565b604051948593602085015260248401611b42565b6002939093015460405160208101949094526024840191909152604483015250905061096c8160648101610a9e565b93505050600361096c91015491610a9e6040519384926020840152602483019190602083019252565b9250935050610a9e600461096c93015460405194859360208501526024840160209093929193604081019481520152565b9297509250935061096c9450610a9e925061356b81610b5988611392565b549161357e8161162284610b598b611404565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b9550929091965061096c9550610a9e93506135da82610b5989611359565b54926135ed8161162285610b598c6113cb565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b9750505050505050506040519060208201526004815261096c8161051d565b60405160208101919091526001600160a01b039091166024820152965061096c955086945050604484019250610a9e915050565b9550505094505050610a9e6134b061096c935460018060a01b031690565b60405160208101919091526001600160a01b0390931660248401525090955061096c945085935050604483019150610a9e9050565b9550509150945061096c9350610a9e9150604051948593602085015260248401611b5c565b9492916137118161162287610b598661143d565b956001600160e01b0319169463c6b949a960e01b8087146136325750630bac95f560e21b8681146138325750635493bdef60e11b918683146138095750632e834cbf60e11b925050508381146137eb5750631d6bbb8d60e11b90508281146137bc57506364b7fccd60e11b91821490506137905750505061096c610fcd565b610a9e600261096c93015460405194859360208501526024840160209093929193604081019481520152565b6001939093015460405160208101949094526024840191909152604483015250905061096c8160648101610a9e565b935490945061096c939250610a9e91506001600160a01b03166134b0565b92975092509350610a9e9250600361096c950154916040519687956020870152602486016114cb565b60405160208101919091526001600160a01b039384166024820152604481019190915291166064820152945061096c935084925050608482019050610a9e565b90604051916138808361051d565b600183526020830160203682378351156109275752565b60048151106138a7576020015190565b50600090565b604051906138ba826104cc565b606060c083600081526000602082015260006040820152600083820152600060808201528260a08201520152565b9060405191828154918282526020928383019160005283600020936000905b82821061391d5750505061032492500383610538565b85546001600160a01b031684526001958601958895509381019390910190613907565b9060408051809380549261396761395b858560209181520190565b92600052602060002090565b9360005b81601f820110613d8357610324955492828210613d6d575b828210613d53575b828210613d39575b828210613d1f575b828210613d05575b828210613ceb575b828210613cd1575b828210613cb7575b828210613ca0575b50818110613c88575b818110613c70575b818110613c58575b818110613c40575b818110613c28575b818110613c10575b818110613bf8575b818110613be0575b818110613bc8575b818110613bb0575b818110613b98575b818110613b80575b818110613b68575b818110613b50575b818110613b38575b818110613b20575b818110613b08575b818110613af0575b818110613ad8575b818110613ac0575b818110613aa8575b818110613a90575b10613a82575b500383610538565b60f81c815260200138613a7a565b60f083901c60ff168452926001906020019301613a74565b60e883901c60ff168452926001906020019301613a6c565b60e083901c60ff168452926001906020019301613a64565b60d883901c60ff168452926001906020019301613a5c565b60d083901c60ff168452926001906020019301613a54565b60c883901c60ff168452926001906020019301613a4c565b60c083901c60ff168452926001906020019301613a44565b60b883901c60ff168452926001906020019301613a3c565b60b083901c60ff168452926001906020019301613a34565b60a883901c60ff168452926001906020019301613a2c565b60a083901c60ff168452926001906020019301613a24565b609883901c60ff168452926001906020019301613a1c565b609083901c60ff168452926001906020019301613a14565b608883901c60ff168452926001906020019301613a0c565b608083901c60ff168452926001906020019301613a04565b607883901c60ff1684529260019060200193016139fc565b607083901c60ff1684529260019060200193016139f4565b606883901c60ff1684529260019060200193016139ec565b606083901c60ff1684529260019060200193016139e4565b605883901c60ff1684529260019060200193016139dc565b605083901c60ff1684529260019060200193016139d4565b604883901c60ff1684529260019060200193016139cc565b83901c60ff168452926001906020019301386139c3565b603884901c60ff16855290936001906020019401906139bb565b603084901c60ff16855290936001906020019401906139b3565b602884901c60ff16855290936001906020019401906139ab565b602084811c60ff16865291949091600191019401906139a3565b601884901c60ff168552909360019060200194019061399b565b601084901c60ff1685529093600190602001940190613993565b600884901c60ff168552909360019060200194019061398b565b60ff841685529093600190602001940190613983565b919350916001610400602092614021885461401660ff613da78582851660ff169052565b613fef613e54613f9f8d613f4f89613eff8e613dcc8184018a8d60081c1660ff169052565b613ddf8584018a8d60101c1660ff169052565b888b610200606095613dfa878201858560181c1660ff169052565b613e0f6080958585888501921c1660ff169052565b613eb560a097613e28898401878760281c1660ff169052565b613e6560c09b613e418d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b613e7a6101208401878760481c1660ff169052565b613e8f6101408401878760501c1660ff169052565b613ea46101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b613eca6101a08201858560681c1660ff169052565b613edf6101c08201858560701c1660ff169052565b613ef46101e08201858560781c1660ff169052565b01921c1660ff169052565b613f146102208c01888b60881c1660ff169052565b613f296102408c01888b60901c1660ff169052565b613f3e6102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b613f646102a08a01868960a81c1660ff169052565b613f796102c08a01868960b01c1660ff169052565b613f8e6102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b613fb46103208801848760c81c1660ff169052565b613fc96103408801848760d01c1660ff169052565b613fde6103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b6140046103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b019501910191869391949261396b565b9060405161403e816104cc565b60c06140946006839560018060a01b038082541686526001820154166020860152600281015460408601526003810154606086015260048101546080860152614089600582016138e8565b60a086015201613940565b910152565b9690929695919493956140aa6138ad565b976140c06140bb82610b5985611476565b614031565b818a5280516001600160a01b031660808b01529660808801805160608c015288516001600160a01b0396919591908716801561430f57614100908661432b565b90156142f357156142d55761411b916118c5918486886143b0565b6142bc5786156142a35761413282610b5985611359565b546141448261162285610b59886113cb565b549088811515928361428f575b5050506142765761162282610b5961416f61417695610b5988611392565b5495611404565b54908015159182614263575b505061424d57518015159081614243575b5061422e5760608401514210614219576040840151850361420457602084015191811691166001600160a01b0316036141f15760c0926141d2916114f6565b602084015260a081015160a0840152015160c082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b9050831138614193565b5060009663ae3586c560e01b9695509350505050565b61426e919250610942565b113880614182565b50600099636d03a2e560e01b9998509650505050505050565b61429a929350610955565b11388881614151565b5060009963c6b949a960e01b9998509650505050505050565b5060009963e2cf60cb60e01b9998509650505050505050565b5060009b600162bed83560e01b03199b9a5098505050505050505050565b5060009c63915b8f1d60e01b9c9b509950505050505050505050565b5060009c634ed1072f60e11b9c9b509950505050505050505050565b604051638da5cb5b60e01b60208201908152600482529293929061434e8161051d565b6000928392839251915afa90614362610fe0565b911580156143a5575b61439e576020828051810103126100e957506020015161438a81610308565b6001926001600160a01b0391821691161490565b9250508190565b50602082511061436b565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e602052604090209193929190600052602052604060002060405190604082018281106001600160401b038211176104b457604052600181549182845201549081602084015215908115614476575b5061446d5760405160609490941b6bffffffffffffffffffffffff19166020850190815261096c946144628160348101610a9e565b5190209051906145ee565b50505050600190565b90504210153861442d565b9493929061448d611aed565b958287528515614596576144a792610b596116229261143d565b9060028201549081156145815760038301548015159081614576575b506145615782546001600160a01b0391821691160361454d5782600183015403614539578311614526576144fc600592614518946114f6565b602085015261450d600482016138e8565b606085015201613940565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b9050421015386144c3565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b80156145dc57603281116145bd5750565b6044906040519063f80a484560e01b8252600482015260326024820152fd5b60405163c2e5347d60e01b8152600490fd5b9291909291600080925b82841061460757505050501490565b909192938460051b820135808211156000146146555760408051602081019384529081019190915261463c8160608101610a9e565b5190205b936000198114610950576001019291906145f8565b604080516020810192835290810192909252906146758160608101610a9e565b51902061464056fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d500a2646970667358221220309a5b7adb8d8964d646932d2dbffb726a5120d87e0e4de7d494ce98ceeb54a064736f6c63430008120033","sourceMap":"1199:32380:167:-:0;;;;;;;509:4:168;501:13;;1199:32380:167;;;;;;501:13:168;1199:32380:167;;;;;;;;;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":1636,"length":20},{"start":3861,"length":20},{"start":3998,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b6000803560e01c9081632c0c49ee1461006a5750806359a8a40a14610065578063a3eaf4d914610060578063cfdbf2541461005b5763d65852a61461005657600080fd5b6103fc565b6103e0565b6103c4565b610326565b60203660031901126100e9576004356001600160401b0381116100e5576100e19161009c6100d59236906004016100ec565b916100a760c0604052565b604051906100b482610499565b8082528060208301528060408301526060820152608052606060a052610586565b60405191829182610193565b0390f35b5080fd5b80fd5b9181601f8401121561011c578235916001600160401b03831161011c576020808501948460051b01011161011c57565b600080fd5b634e487b7160e01b600052602160045260246000fd5b6006111561014157565b610121565b9060068210156101415752565b919082519283825260005b84811061017f575050826000602080949584010152601f8019910116010190565b60208183018101518483018201520161015e565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a891061020a5750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d5251908151815261023d838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526102a86101208084015190830190610146565b610140828101516001600160e01b031916908201526102d861016080840151906101a08091850152830190610153565b91610180809101519101529e0199019901979a9998969594939291906101f4565b908161010091031261011c5790565b6001600160a01b0381160361011c57565b359061032482610308565b565b60e036600319011261011c576001600160401b0360043581811161011c576103529036906004016102f9565b6044359061035f82610308565b60a43583811161011c576103779036906004016100ec565b9060c43594851161011c576103936103a79536906004016100ec565b94909360843591606435916024359061098f565b60408051928352602083019190915290f35b600091031261011c57565b3461011c57600036600319011261011c57602060405160328152f35b3461011c57600036600319011261011c576020604051604b8152f35b60c036600319011261011c576001600160401b0360043581811161011c576104289036906004016102f9565b6024359061043582610308565b60843583811161011c5761044d9036906004016100ec565b9060a43594851161011c576104696104819536906004016100ec565b94909361047461336e565b6064359160443591610e88565b005b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b038211176104b457604052565b610483565b6001600160401b0381116104b457604052565b60e081019081106001600160401b038211176104b457604052565b606081019081106001600160401b038211176104b457604052565b602081019081106001600160401b038211176104b457604052565b604081019081106001600160401b038211176104b457604052565b90601f801991011681019081106001600160401b038211176104b457604052565b604051906101a082018281106001600160401b038211176104b457604052565b60405190610324826104e7565b9061058f61336e565b610598816145ac565b6105a181610828565b60a09081526105af82610878565b906000923494845b8281106106c157505050505050806060608051015280610639575b506080517ff769e48349f9b4903ef362e95411b2c4778d3bdaf9dc87b0d25f29f2813ea1638151916020810151610631606060408401519301516040519384933397859094939260609260808301968352602083015260408201520152565b0390a2608090565b73__$11854c5905aa23948096e0e4d7059bb9de$__803b1561011c57604051637baf92a360e01b815260008051602061467e833981519152600482015260006024820181905233604483015260648201939093529190829060849082905af480156106bc57156105d257806106b06106b6926104b9565b806103b9565b386105d2565b610983565b6106dc868689846106d78189899e9c9d9e610905565b611035565b9196901561077c575090610755610702600193996106fb848888610905565b908a61258a565b96608080516107118151610942565b9052848060a01b0361072f6060610729878b8b610905565b01610962565b161561075e575b505b61074f83885183610749838361096f565b5261096f565b506122cc565b019493946105b7565b6107746040610180840151925101918251610955565b905238610736565b97956001929150610755906020608051016107978151610942565b9052610738565b6001600160401b0381116104b45760051b60200190565b604051906101a082018281106001600160401b038211176104b457604052816101806000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152826101208201528261014082015260606101608201520152565b906108328261079e565b61083f6040519182610538565b8281528092610850601f199161079e565b019060005b82811061086157505050565b60209061086c6107b5565b82828501015201610855565b906108828261079e565b60409061089182519182610538565b83815280936108a2601f199161079e565b0190600092835b8381106108b7575050505050565b81519060608201918083106001600160401b038411176104b457602092845286815282878183015287858301528286010152016108a9565b634e487b7160e01b600052603260045260246000fd5b91908110156109275760051b8101359060fe198136030182121561011c570190565b6108ef565b634e487b7160e01b600052601160045260246000fd5b906001820180921161095057565b61092c565b9190820180921161095057565b3561096c81610308565b90565b80518210156109275760209160051b010190565b6040513d6000823e3d90fd5b906109a898979695949392916109a361336e565b610a39565b9091565b60ff81160361011c57565b3561096c816109ac565b90604061096c92600181528160208201520190610153565b90604061096c92600281528160208201520190610153565b90604061096c92600581528160208201520190610153565b90604061096c92600481528160208201520190610153565b90604061096c92600381528160208201520190610153565b98979695949392919060ff8a35610a4f816109ac565b1615610ad357600160ff610a628c6109b7565b1614610ac957610ac5610a9e610aac610a7a8d6109b7565b60405163bb75025d60e01b602082015260ff90911660248201529182906044820190565b03601f198101835282610538565b604051631ee0c01d60e31b8152918291600483016109c1565b0390fd5b6109a89899611590565b95929491969893908695610ae7818a610955565b986060870198610b00818c610afb8d610962565b612860565b8051610d0d575090610b89949392916020890190610b25610b2083610962565b611359565b9a610b3f60808c0135809d90600052602052604060002090565b5415158b8d610b6881610b59610b5489610962565b611392565b90600052602052604060002090565b54151592610cdd575b5050610ca1575b6001600160a01b039788908e610962565b16610c4757509089610b9c8e8d946114be565b9f7f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9a60a09a610c2a99610bf498610c1698610bfc610c10995b610be8610be28b610962565b91613872565b60c08a01359d8e613872565b91339061311a565b8b81610c31575b5050505050505050610962565b99610962565b90604051958695339b1698013592856114cb565b0390a49190565b610c3a9761200c565b893880808080808b610c03565b9e610c109291508a907f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c9a8f9a8f998f98610c1698610bfc60a09f9b610c9c610c2a9f9d610c97610bf49f610962565b612a9e565b610bd6565b610ccc610cb98d610b59610cb487610962565b611404565b3360009081526020919091526040902090565b610cd68154610942565b9055610b78565b60c0610cfa610cb9610d0493610b59610cf58b610962565b6113cb565b9201358254610955565b90558b8d610b71565b604051631ee0c01d60e31b8152908190610ac590600483016109d9565b91908082526020809201929160005b828110610d47575050505090565b9091929382806001928735610d5b81610308565b848060a01b03168152019501910192919092610d39565b91908082526020809201929160005b828110610d8f575050505090565b90919293828060019260ff8835610da5816109ac565b16815201950193929101610d81565b97959361096c999793610e0b969260008051602061467e8339815191528b5260018060a01b03948580921660208d01521660408b015260608a015260808901521660a08701526101008060c0880152860191610d2a565b9260e0818503910152610d72565b989694909361096c9a9894602094610e79989460008051602061467e8339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191610d2a565b92610100818503910152610d72565b97969592919094939560ff610e9c8a6109b7565b1615610f6957600160ff610eaf8b6109b7565b1614610ee257610ac5610ec18a6109b7565b60405163bb75025d60e01b815260ff90911660048201529081906024820190565b979192939495969773__$11854c5905aa23948096e0e4d7059bb9de$__94610f0c60208501610962565b96610f1960608601610962565b99873b1561011c57600099608097610f4b966040519d8e9c8d9b8c9b63981e8fc560e01b8d5201359060048c01610e19565b03915af480156106bc57610f5c5750565b806106b0610324926104b9565b9791969794909493929373__$11854c5905aa23948096e0e4d7059bb9de$__94610fa16060610f9a60208701610962565b9501610962565b94863b1561011c57600098610f4b946040519b8c9a8b998a99631872482b60e31b8b5260048b01610db4565b60405190610fda82610502565b60008252565b3d1561101a573d906001600160401b0382116104b4576040519161100e601f8201601f191660200184610538565b82523d6000602084013e565b606090565b919082604091031261011c576020825192015190565b908161104d91959394956110476107b5565b50612133565b928094611059836117d8565b8051909692906001600160a01b031680611145575b50156111345750906110869160608601519185612474565b805161112657507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c546000938493926110c8926001600160a01b031693611295565b90602082519201905af46110da610fe0565b901561110c576110f59192506020808251830101910161101f565b600161010084015291906101808201529160019190565b61111861111f916123a5565b9083612236565b9160009190565b91505061111f91508261220d565b93505050935061111f91508261220d565b6001600160a01b031660808901523861106e565b9035601e198236030181121561011c5701602081359101916001600160401b03821161011c578160051b3603831361011c57565b81835290916001600160fb1b03831161011c5760209260051b809284830137010190565b9061124b61096c9260ff81356111c6816109ac565b16835260208101356111d781610308565b6001600160a01b031660208401526112046111f460408301610319565b6001600160a01b03166040850152565b61122361121360608301610319565b6001600160a01b03166060850152565b6080810135608084015260a081013560a084015260c081013560c084015260e0810190611159565b9091610100908160e0820152019161118d565b90815180825260208080930193019160005b82811061127e575050505090565b835160ff1685529381019392810192600101611270565b8251602080850151604080870151608088015160a0909801519151632cd4520560e11b8186015260e060248201529796889692956001600160a01b03949193908516906112e7906101048a01906111b1565b9360448901526064880152608487015260a486015260231992838683030160c48701528080885193848152019701926000905b83821061133c5750505050508284030160e483015261096c92610a9e9161125e565b84518116895297820197899750938201936001919091019061131a565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b60631981019190821161095057565b9190820391821161095057565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b8181029291811591840414171561095057565b818110611514575050565b60008155600101611509565b600560009182815582600182015582600282015582600382015560048101805484825580611576575b505001908154908083558161155d57505050565b60208161032494601f935220910160051c810190611509565b6115899185526020852090810190611509565b3880611549565b9498959097929691939888996115a6818a610955565b996115b8818c610afb60608c01610962565b9b8c51611779579a9b508b9a6001600160a01b036115d860608b01610962565b1661175a57506116aa969798999a6115ef916114be565b995b6002611639896116228c608061161161160c60208401610962565b61143d565b910135600052602052604060002090565b9060018060a01b0316600052602052604060002090565b0161164960c08b013582546114be565b80915515611731575b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50a546116a3908a906001600160a01b031661168f60208301610962565b908b608060c0850135940135923392612cce565b878961200c565b6116b660208301610962565b917f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d78869461172c6116e760608401610962565b6040805160808087013582526001600160a01b03938416602083015260a08701359282019290925260c090950135606086015295811695339590911693918291820190565b0390a4565b611755611750896116228c610b5961160c602060808401359301610962565b611520565b611652565b9a88999a915061177490610c9760606116aa9a9b01610962565b6115f1565b604051631ee0c01d60e31b815280610ac58f600483016109d9565b6040519060c082018281106001600160401b038211176104b457604052606060a0836000815260006020820152600060408201526000838201528260808201520152565b906117e1611794565b9082356117ed816109ac565b60ff811693841561185257611801826109ac565b6001851461183d5750611813906109ac565b6040519263bb75025d60e01b6020850152602484015260248352611836836104e7565b6000929190565b9193505061184b9150611ba9565b9192909190565b9193505061184b91506118a4565b903590601e198136030182121561011c57018035906001600160401b03821161011c57602001918160051b3603831361011c57565b9081602091031261011c575190565b6118ac611794565b90606081016118c96118c56118c083610962565b61268a565b1590565b611ab157602091828101916118e86118c56118e385610962565b612718565b611a6c5790611928916118fa84610962565b9061193261190782610962565b9260808501359360a086013595868660c0830135998360e08c950190611860565b9590943391614099565b60808101516001600160a01b03168a5296909115611a40575050505050508181015180838501528061198e575b506060915060a0810151608084015260c081015160a08401520151606082015260019161198a610fcd565b9190565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501546119f09184916119d0906001600160a01b03165b6001600160a01b031690565b60405180809581946361fe24a960e11b8352600483019190602083019252565b03915afa9081156106bc57606093600092611a13575b505060408401523861195f565b611a329250803d10611a39575b611a2a8183610538565b810190611895565b3880611a06565b503d611a20565b611a649750611a5491929394959650610962565b611a5e3393610962565b916133b2565b916000929190565b5050611a7d61183691949294610962565b604051630f20e39960e21b958101959095526001600160a01b0316602485015283604481015b03601f198101855284610538565b611aa3939150611ac361183691610962565b60405163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b6040519060a082018281106001600160401b038211176104b457604052606060808360008152600060208201526000604082015282808201520152565b9081602091031261011c5751801515810361011c5790565b6001600160a01b0391821681529116602082015260400190565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b90611bb2611794565b90604080840190611bd2611bc583610962565b6001600160a01b03168552565b611bde6119c483610962565b3314611fd2576060850190611bf86118c56118c084610962565b611f955760209182870196611c126118c56118e38a610962565b611f5657611c1e611aed565b50611c2888610962565b9160c0611c5b611c3788610962565b94611c4184610962565b946080810135809660a08301359586930135988994614481565b93909115611f2e57505050611c756119c46119c48b610962565b611cd186611c8289610962565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50a54611cb6906001600160a01b03166119c4565b885163e985e9c560e01b815293849283929060048401611b42565b0381855afa60009181611eff575b50611d1c575050505050611aa390611d02611cfc61183695610962565b97610962565b905196879363d65b0d6960e01b9085015260248401611b42565b96929493959615611ee6578685611d5092611d3686610962565b8751809581948293627eeac760e11b845260048401611b5c565b03915afa60009181611ec7575b50611dbe57505091611836949391611d7a610c10611aa395610962565b9051988995636906ef1760e11b90870152602486019093600093608093969560a084019760018060a01b038092168552166020840152604083015260608201520152565b92949182849a959297989a10611e8f57505050508284018051868601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50154611e3a939250859190611e18906001600160a01b03166119c4565b905190835180809681946361fe24a960e11b8352600483019190602083019252565b03915afa9182156106bc57608094600093611e70575b5050840152606081015182840152015160a082015260019161198a610fcd565b611e87929350803d10611a3957611a2a8183610538565b903880611e50565b611836965094611ead611ea7611aa3969b9997610962565b9a610962565b9051998a96636906ef1760e11b9088015260248701611b77565b611edf919250883d8a11611a3957611a2a8183610538565b9038611d5d565b5050611836949350611aa39250611cfc611d0291610962565b611f20919250883d8a11611f27575b611f188183610538565b810190611b2a565b9038611cdf565b503d611f0e565b939550939691509450611f50611f4a611f4a611a64999b610962565b92610962565b926136fd565b5050946118369250611f6a611aa391610962565b9551630f20e39960e21b928101929092526001600160a01b0390951660248201529384906044820190565b90611aa395506118369250611fa990610962565b905163cd5f748960e01b60208201526001600160a01b0390911660248201529384906044820190565b611aa39450611fe361183692610962565b905163aac1ae8b60e01b60208201526001600160a01b0390911660248201529384906044820190565b9497969795919593929360018060a01b0390817f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c541697604051966020918461206d848b019b636b2c295360e11b8d5260c060248d015260e48c01906111b1565b961660448a0152606489015260848801528060231994858982030160a48a01528381520195926000905b8382106120f557505050505092610a9e83600098996120c3948a999897858098030160c4860152610d72565b51915af46120cf610fe0565b90156120d85750565b604051631ee0c01d60e31b8152908190610ac590600483016109f1565b90919293968380600192848b3561210b81610308565b1681520198019493920190612097565b60405161212781610502565b60008152906000368137565b9061213c6107b5565b5060c0612148826109b7565b916121d461215860208301610962565b6121c461216760408501610962565b6121a861217660608701610962565b9361219861218261211b565b9961218b610559565b9b8c5260ff1660208c0152565b6001600160a01b031660408a0152565b60808581013560608a01526001600160a01b0390911690880152565b6001600160a01b031660a0860152565b60a081013582850152013560e0830152600061010083015260006101208301526000610140830152610160820152600061018082015290565b6001610120820152610160906001600160e01b031961222b84613897565b166101408201520152565b6006821015610141576101609161012082015263ffffffff60e01b61222b84613897565b9081526001600160a01b039182166020820152911660408201526060810191909152608081019190915290151560a0820152949392610120926122c7926122a59060c0890190610146565b6001600160e01b03191660e08701526101406101008701819052860190610153565b930152565b80519060208101516122de9060ff1690565b60408201519092906001600160a01b031660608301516080840151909391906001600160a01b031660a08301519094906001600160a01b03169260c08101519060e081015161010082015161233290151590565b6101208301519061234282610137565b6101408401516001600160e01b0319169261016085015194610180015195604051998a99600160a01b60019003169d60ff169c61237f998b61225a565b037f844491b54cb1a58801f9eb51fecfaf5076847131d8f6ec580232d9766e3fae4f91a4565b906123af826123c1565b916123bc57505060059190565b925090565b631ee0c01d60e31b6001600160e01b03196123db83613897565b1614801590612469575b61245a57602481015191604482015160648301928351916005861190811561244e575b5061243b5761241790516114af565b1061242c5761242583610137565b6001929190565b6000925082915061096c610fcd565b505091505060009060009061096c610fcd565b60409150141538612408565b5060009060009061096c610fcd565b5060648151106123e5565b9060ff8235612482816109ac565b1615801590612511575b6124fa576124b260c0916124bb946124a660208601610962565b90608086013592612519565b91013590610955565b818111156124f057604051635bdd08f560e01b60208201526024810191909152604481019190915261096c8160648101610a9e565b505061096c610fcd565b5050505060405161250a81610502565b6000815290565b50831561248c565b9192909260005b848110612531575050505050600090565b6001600160a01b0380612544838761096f565b5151169083161480612573575b61255d57600101612520565b9150506040925061256d9161096f565b51015190565b50826020612581838761096f565b51015114612551565b9160ff612596826109b7565b166126845760005b8281106125f957508161096c938260c06125bd60206125f39601610962565b916125d86125c9610579565b6001600160a01b039094168452565b6080810135602084015201356040820152610749838361096f565b50610942565b612614612606828661096f565b51516001600160a01b031690565b6020906126256119c4838601610962565b6001600160a01b03909116149081612669575b506126455760010161259e565b604061265860c09261266494959661096f565b51019201358251610955565b905290565b9050612675828661096f565b51015160808301351438612638565b50905090565b6001600160a01b03908116908115612711576020907f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505541691602460405180948193632d5ad3d560e01b835260048301525afa600091816126f1575b5061096c5750600090565b61270a91925060203d8111611f2757611f188183610538565b90386126e6565b5050600190565b803b15159081612726575090565b90506040519060208083018160006301ffc9a760e01b9586845286602482015260248152612753816104e7565b51617530938685fa933d60005190866127f8575b50856127ee575b508461278b575b50505081612781575090565b61096c9150612803565b83945090600091839460405185810192835263ffffffff60e01b6024820152602481526127b7816104e7565b5192fa60005190913d836127e3575b5050816127d9575b501590388080612775565b90501515386127ce565b1015915038806127c6565b151594503861276e565b841115955038612767565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152612833816104e7565b5191617530fa6000513d82612854575b508161284d575090565b9050151590565b60201115915038612843565b918115612a93576001600160a01b038316908115612a5b5750604080516370a0823160e01b8152336004820152602092908381602481855afa60009181612a3c575b506128e2575050516364db3d5960e01b918101919091526001600160a01b03909216602483015260448201526000606482015261096c8160848101610a9e565b8481106129fd57507f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50854612940918491612924906001600160a01b03166119c4565b9084518080958194636eb1769f60e11b83523360048401611b42565b03915afa600091816129de575b5061298c5750516337a950bb60e01b918101919091526001600160a01b03909216602483015260448201526000606482015261096c8160848101610a9e565b8381106129a057505050505061096c610fcd565b90516337a950bb60e01b928101929092526001600160a01b0390931660248201526044810191909152606481019190915261096c8160848101610a9e565b6129f6919250843d8611611a3957611a2a8183610538565b903861294d565b91516364db3d5960e01b93810193909352506001600160a01b0390931660248201526044810191909152606481019190915261096c8160848101610a9e565b612a54919250853d8711611a3957611a2a8183610538565b90386128a2565b925050808210156124f0576040516310da2c1360e21b60208201526024810191909152604481019190915261096c8160648101610a9e565b50505061096c610fcd565b90918215612cc957604080516370a0823160e01b8082523060048084019190915292959294926020929091906001600160a01b0385169060008582602481865afa909181612caa575b50612b0f578888610ac5612af9610fe0565b9251631ee0c01d60e31b815292839283016109d9565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50854909290612b46906001600160a01b03166119c4565b803b1561011c578951630aed65f560e11b81526001600160a01b038816818b0190815233602082015230604082015260608101879052909160009183919082908490829060800103925af19081612c97575b50612baa578888610ac5612af9610fe0565b8851908152308882019081529091600091869184918290819060200103915afa909181612c78575b50612be4578787610ac5612af9610fe0565b949693959460009190818110612c7057612bfe92506114be565b905b808203612c0f57505050505050565b8351636ff596f360e01b938101939093526001600160a01b03909516602483015260448201949094526064810193909352610ac590612c5b84608481015b03601f198101865285610538565b51631ee0c01d60e31b815292839283016109d9565b505090612c00565b612c90919250853d8711611a3957611a2a8183610538565b9038612bd2565b806106b0612ca4926104b9565b38612b98565b612cc2919250863d8811611a3957611a2a8183610538565b9038612ae7565b915050565b95939194909285600093604098895195627eeac760e11b80885287612cf88560049d8e8401611b5c565b038860018060a01b0393848c169260209b8c9181865afa909181612fc2575b50612d3f578d8d610ac5612d29610fe0565b9251631ee0c01d60e31b81529283928301610a09565b92888410612f9557858e8b8f8b90612d636000945195869384938b85528401611b5c565b0381875afa909181612f76575b50612d82578e8e610ac5612d29610fe0565b9416803b1561011c576000878f928f838f91612dee8f8f988e9051998a988997889663eb46c45b60e01b885287019391909260e0959360018060a01b03928380921687521660208601521660408401526060830152608082015260c060a0820152600060c08201520190565b03925af19081612f63575b50612e0b578c8c610ac5612d29610fe0565b8c518281528d908d9060008c8280612e268c8e838901611b5c565b0381885afa909181612f44575b50612e445750610ac5612d29610fe0565b87938c928b9296612e62600096519788958694859485528401611b5c565b03915afa909181612f25575b50612e80578c8c610ac5612d29610fe0565b90612e928880939e9b9d9c9e946114be565b1492831593612f10575b505050612ead575050505050505050565b8551638791019960e01b958101959095526001600160a01b039788166024860152604485015286166064840152909416608482015260a4810193909352610ac590612efb8460c48101612c4d565b51631ee0c01d60e31b81529283928301610a09565b612f1b929350610955565b1415388581612e9c565b612f3d9192508a3d8c11611a3957611a2a8183610538565b9038612e6e565b612f5c9192508d803d10611a3957611a2a8183610538565b9038612e33565b806106b0612f70926104b9565b38612df9565b612f8e9192508c8d3d10611a3957611a2a8183610538565b9038612d70565b50858c610ac58f612efb8d8f898f8d612c4d9387519a8b96636906ef1760e11b9088015260248701611b77565b612fda9192508b3d8d11611a3957611a2a8183610538565b9038612d17565b602090818184031261011c578051906001600160401b03821161011c57019180601f8401121561011c5782516130168161079e565b936130246040519586610538565b818552838086019260051b82010192831161011c578301905b82821061304b575050505090565b8151815290830190830161303d565b90815180825260208080930193019160005b82811061307a575050505090565b83518552938101939281019260010161306c565b9092916040820191604081528451809352606081019260208096019060005b8181106130c75750505061096c939481840391015261305a565b82516001600160a01b0316865294870194918701916001016130ad565b6001600160a01b03909116815260606020820181905261096c93919261310c9184019061305a565b91604081840391015261305a565b82516001600160a01b0382169593949392906131369082613311565b604080516313849cfd60e21b80825291986004989392916000818061315e88888f840161308e565b0381855afa600091816132f6575b50613194578a8a610ac561317e610fe0565b9251631ee0c01d60e31b81529283928301610a21565b92813b1561011c578a51630d4498e760e21b81528b92908b90600081806131bf8f8c8e8489016130e4565b038183875af190816132e3575b506131de578390610ac561317e610fe0565b86946131f760009551968795869485948552840161308e565b03915afa600091816132c0575b50613216578888610ac561317e610fe0565b979496959760005b83518110156132b457613231818361096f565b516132528b61324b84613244818961096f565b519261096f565b5190610955565b0361325f5760010161321e565b8988610ac58961329f8a612c4d8b6132828961327b818f61096f565b519961096f565b51908551988994631b3c965960e21b6020870152602486016114cb565b51631ee0c01d60e31b81529283928301610a21565b50505050505050509050565b6132dc91923d8091833e6132d48183610538565b810190612fe1565b9038613204565b806106b06132f0926104b9565b386131cc565b61330a91923d8091833e6132d48183610538565b903861316c565b919061331c8161079e565b9261332a6040519485610538565b818452601f196133398361079e565b013660208601378360005b8381106133515750505050565b8061335e6001928461096f565b828060a01b038516905201613344565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146133a057565b60405163197ba25b60e01b8152600490fd5b9492939591956133c581610b5984611476565b956001600160e01b03191694634ed1072f60e11b8087146136d8575063915b8f1d60e01b8681146136a35750600162bed83560e01b0319868114613685575063e2cf60cb60e01b868114613651575063c6b949a960e01b8681146136325750636d03a2e560e01b8681146135bc575063ae3586c560e01b9186831461354d5750635bdd08f560e01b9250505083811461351c575063456afd0b60e01b90508281146134f35750631d6bbb8d60e11b8281146134c45750632e834cbf60e11b91821490506134975750505061096c610fcd565b610a9e6134b0600161096c94015460018060a01b031690565b604051948593602085015260248401611b42565b6002939093015460405160208101949094526024840191909152604483015250905061096c8160648101610a9e565b93505050600361096c91015491610a9e6040519384926020840152602483019190602083019252565b9250935050610a9e600461096c93015460405194859360208501526024840160209093929193604081019481520152565b9297509250935061096c9450610a9e925061356b81610b5988611392565b549161357e8161162284610b598b611404565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b9550929091965061096c9550610a9e93506135da82610b5989611359565b54926135ed8161162285610b598c6113cb565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b9750505050505050506040519060208201526004815261096c8161051d565b60405160208101919091526001600160a01b039091166024820152965061096c955086945050604484019250610a9e915050565b9550505094505050610a9e6134b061096c935460018060a01b031690565b60405160208101919091526001600160a01b0390931660248401525090955061096c945085935050604483019150610a9e9050565b9550509150945061096c9350610a9e9150604051948593602085015260248401611b5c565b9492916137118161162287610b598661143d565b956001600160e01b0319169463c6b949a960e01b8087146136325750630bac95f560e21b8681146138325750635493bdef60e11b918683146138095750632e834cbf60e11b925050508381146137eb5750631d6bbb8d60e11b90508281146137bc57506364b7fccd60e11b91821490506137905750505061096c610fcd565b610a9e600261096c93015460405194859360208501526024840160209093929193604081019481520152565b6001939093015460405160208101949094526024840191909152604483015250905061096c8160648101610a9e565b935490945061096c939250610a9e91506001600160a01b03166134b0565b92975092509350610a9e9250600361096c950154916040519687956020870152602486016114cb565b60405160208101919091526001600160a01b039384166024820152604481019190915291166064820152945061096c935084925050608482019050610a9e565b90604051916138808361051d565b600183526020830160203682378351156109275752565b60048151106138a7576020015190565b50600090565b604051906138ba826104cc565b606060c083600081526000602082015260006040820152600083820152600060808201528260a08201520152565b9060405191828154918282526020928383019160005283600020936000905b82821061391d5750505061032492500383610538565b85546001600160a01b031684526001958601958895509381019390910190613907565b9060408051809380549261396761395b858560209181520190565b92600052602060002090565b9360005b81601f820110613d8357610324955492828210613d6d575b828210613d53575b828210613d39575b828210613d1f575b828210613d05575b828210613ceb575b828210613cd1575b828210613cb7575b828210613ca0575b50818110613c88575b818110613c70575b818110613c58575b818110613c40575b818110613c28575b818110613c10575b818110613bf8575b818110613be0575b818110613bc8575b818110613bb0575b818110613b98575b818110613b80575b818110613b68575b818110613b50575b818110613b38575b818110613b20575b818110613b08575b818110613af0575b818110613ad8575b818110613ac0575b818110613aa8575b818110613a90575b10613a82575b500383610538565b60f81c815260200138613a7a565b60f083901c60ff168452926001906020019301613a74565b60e883901c60ff168452926001906020019301613a6c565b60e083901c60ff168452926001906020019301613a64565b60d883901c60ff168452926001906020019301613a5c565b60d083901c60ff168452926001906020019301613a54565b60c883901c60ff168452926001906020019301613a4c565b60c083901c60ff168452926001906020019301613a44565b60b883901c60ff168452926001906020019301613a3c565b60b083901c60ff168452926001906020019301613a34565b60a883901c60ff168452926001906020019301613a2c565b60a083901c60ff168452926001906020019301613a24565b609883901c60ff168452926001906020019301613a1c565b609083901c60ff168452926001906020019301613a14565b608883901c60ff168452926001906020019301613a0c565b608083901c60ff168452926001906020019301613a04565b607883901c60ff1684529260019060200193016139fc565b607083901c60ff1684529260019060200193016139f4565b606883901c60ff1684529260019060200193016139ec565b606083901c60ff1684529260019060200193016139e4565b605883901c60ff1684529260019060200193016139dc565b605083901c60ff1684529260019060200193016139d4565b604883901c60ff1684529260019060200193016139cc565b83901c60ff168452926001906020019301386139c3565b603884901c60ff16855290936001906020019401906139bb565b603084901c60ff16855290936001906020019401906139b3565b602884901c60ff16855290936001906020019401906139ab565b602084811c60ff16865291949091600191019401906139a3565b601884901c60ff168552909360019060200194019061399b565b601084901c60ff1685529093600190602001940190613993565b600884901c60ff168552909360019060200194019061398b565b60ff841685529093600190602001940190613983565b919350916001610400602092614021885461401660ff613da78582851660ff169052565b613fef613e54613f9f8d613f4f89613eff8e613dcc8184018a8d60081c1660ff169052565b613ddf8584018a8d60101c1660ff169052565b888b610200606095613dfa878201858560181c1660ff169052565b613e0f6080958585888501921c1660ff169052565b613eb560a097613e28898401878760281c1660ff169052565b613e6560c09b613e418d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b613e7a6101208401878760481c1660ff169052565b613e8f6101408401878760501c1660ff169052565b613ea46101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b613eca6101a08201858560681c1660ff169052565b613edf6101c08201858560701c1660ff169052565b613ef46101e08201858560781c1660ff169052565b01921c1660ff169052565b613f146102208c01888b60881c1660ff169052565b613f296102408c01888b60901c1660ff169052565b613f3e6102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b613f646102a08a01868960a81c1660ff169052565b613f796102c08a01868960b01c1660ff169052565b613f8e6102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b613fb46103208801848760c81c1660ff169052565b613fc96103408801848760d01c1660ff169052565b613fde6103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b6140046103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b019501910191869391949261396b565b9060405161403e816104cc565b60c06140946006839560018060a01b038082541686526001820154166020860152600281015460408601526003810154606086015260048101546080860152614089600582016138e8565b60a086015201613940565b910152565b9690929695919493956140aa6138ad565b976140c06140bb82610b5985611476565b614031565b818a5280516001600160a01b031660808b01529660808801805160608c015288516001600160a01b0396919591908716801561430f57614100908661432b565b90156142f357156142d55761411b916118c5918486886143b0565b6142bc5786156142a35761413282610b5985611359565b546141448261162285610b59886113cb565b549088811515928361428f575b5050506142765761162282610b5961416f61417695610b5988611392565b5495611404565b54908015159182614263575b505061424d57518015159081614243575b5061422e5760608401514210614219576040840151850361420457602084015191811691166001600160a01b0316036141f15760c0926141d2916114f6565b602084015260a081015160a0840152015160c082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b9050831138614193565b5060009663ae3586c560e01b9695509350505050565b61426e919250610942565b113880614182565b50600099636d03a2e560e01b9998509650505050505050565b61429a929350610955565b11388881614151565b5060009963c6b949a960e01b9998509650505050505050565b5060009963e2cf60cb60e01b9998509650505050505050565b5060009b600162bed83560e01b03199b9a5098505050505050505050565b5060009c63915b8f1d60e01b9c9b509950505050505050505050565b5060009c634ed1072f60e11b9c9b509950505050505050505050565b604051638da5cb5b60e01b60208201908152600482529293929061434e8161051d565b6000928392839251915afa90614362610fe0565b911580156143a5575b61439e576020828051810103126100e957506020015161438a81610308565b6001926001600160a01b0391821691161490565b9250508190565b50602082511061436b565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e602052604090209193929190600052602052604060002060405190604082018281106001600160401b038211176104b457604052600181549182845201549081602084015215908115614476575b5061446d5760405160609490941b6bffffffffffffffffffffffff19166020850190815261096c946144628160348101610a9e565b5190209051906145ee565b50505050600190565b90504210153861442d565b9493929061448d611aed565b958287528515614596576144a792610b596116229261143d565b9060028201549081156145815760038301548015159081614576575b506145615782546001600160a01b0391821691160361454d5782600183015403614539578311614526576144fc600592614518946114f6565b602085015261450d600482016138e8565b606085015201613940565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b9050421015386144c3565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b80156145dc57603281116145bd5750565b6044906040519063f80a484560e01b8252600482015260326024820152fd5b60405163c2e5347d60e01b8152600490fd5b9291909291600080925b82841061460757505050501490565b909192938460051b820135808211156000146146555760408051602081019384529081019190915261463c8160608101610a9e565b5190205b936000198114610950576001019291906145f8565b604080516020810192835290810192909252906146758160608101610a9e565b51902061464056fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d500a2646970667358221220309a5b7adb8d8964d646932d2dbffb726a5120d87e0e4de7d494ce98ceeb54a064736f6c63430008120033","sourceMap":"1199:32380:167:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;1199:32380:167;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;1873:34;1199:32380;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1873:34;:::i;:::-;1199:32380;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;:::o;:::-;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;;1199:32380:167;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4022:23;1199:32380;;;;;;:::i;:::-;;;;;;;;;;;;4022:23;;:::i;:::-;1199:32380;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1199:32380:167;;;;;;;1084:2:171;1199:32380:167;;;;;;;;;-1:-1:-1;;1199:32380:167;;;;;;;1032:2:171;1199:32380:167;;;;;;-1:-1:-1;;1199:32380:167;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1038:1:168;1199:32380:167;;;;;;:::i;:::-;971:75:168;;;;;:::i;:::-;1199:32380:167;;;;;1038:1:168;;:::i;:::-;1199:32380:167;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;:::o;:::-;;;;;;;:::i;971:75:168:-;;;;:::i;:::-;1945:13:167;;;:::i;:::-;1988:39;;;:::i;:::-;1970:15;:57;;;2179:52;;;:::i;:::-;2241:40;-1:-1:-1;2314:9:167;;2338:13;;2353:17;;;;;;3258;;;;;;;:29;1199:32380;3258:17;:29;1199:32380;3316:17;3312:116;;2333:915;3498:17;1199:32380;3498:17;3443:221;1199:32380;;3541:30;1970:15;3541:30;;1199:32380;3443:221;3258:29;3585:26;;;1199:32380;3625:29;;1199:32380;3585:26;1199:32380;3474:10;;;;3443:221;;1199:32380;;;;;;;;;;;;;;;;;;;;;;;3443:221;;;;1199:32380;971:75:168;:::o;3312:116:167:-;3349:21;:68;;;;;1199:32380;;-1:-1:-1;;;3349:68:167;;-1:-1:-1;;;;;;;;;;;3349:68:167;;;1199:32380;-1:-1:-1;1199:32380:167;;;;;;3391:10;1199:32380;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;3349:68;;;;;;;3312:116;3349:68;;;;;;:::i;:::-;;;:::i;:::-;;3312:116;;3349:68;;:::i;2338:13::-;2462:137;2503:9;;;;;;;;;;;;;:::i;:::-;2462:137;:::i;:::-;2613:475;;;;;;2643:30;;3170:6;2742:96;1199:32380;2643:30;2828:9;;;;;;:::i;:::-;2742:96;;;:::i;:::-;1199:32380;;2856:17;;:34;1199:32380;;2856:34;:::i;:::-;1199:32380;;;;;;;2912:25;;:9;;;;;:::i;:::-;:25;;:::i;:::-;1199:32380;2912:39;2908:91;;2613:475;;;3102:27;:15;;;:27;;;;;:::i;:::-;;;:::i;:::-;;3170:6;:::i;:::-;1199:32380;2338:13;;;;;2908:91;2953:46;:26;2983:16;;;1199:32380;2953:17;;:26;1199:32380;;;2953:46;:::i;:::-;1199:32380;;2908:91;;;2613:475;3038:17;;1199:32380;3038:17;;;3170:6;3038:17;1970:15;1199:32380;3038:17;:30;:35;1199:32380;;3038:35;:::i;:::-;1199:32380;;2613:475;;1199:32380;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1199:32380:167;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;3072:1;1199:32380;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;971:75:168;;1038:1;971:75;;;;;;;;;;:::i;:::-;1038:1;:::i;:::-;;;971:75::o;1199:32380:167:-;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;4344:28;1199:32380;;;;;;;;;;:::i;:::-;;;;;9301:39;1199:32380;;;;;;;;;;:::i;:::-;;;;;19377:27;1199:32380;;;;;;;;;;:::i;:::-;;;;;29358:36;1199:32380;;;;;;;;;;:::i;:::-;;;;;32143:25;1199:32380;;;;;;;;;;:::i;3677:1076::-;;;;;;;;;;1199:32380;;;;;;:::i;:::-;;4061:58;4057:250;;4344:28;1199:32380;4320:14;;;:::i;:::-;1199:32380;4320:53;4316:241;;4574:172;4660:76;;4721:14;;;:::i;:::-;1199:32380;;-1:-1:-1;;;4660:76:167;;;;1199:32380;;;;4660:76;;;1199:32380;;;;;;;;;4660:76;;1199:32380;;4660:76;;;;;;:::i;:::-;1199:32380;;-1:-1:-1;;;4574:172:167;;1199:32380;;;4660:76;4574:172;;;:::i;:::-;;;;4316:241;4396:150;;;;:::i;4057:250::-;4142:154;;;;;;;;8912:31;9028:30;;;;;:::i;:::-;9158:21;;;;;9114:92;9158:21;;;;;:::i;:::-;9114:92;:::i;:::-;1199:32380;;9216:156;;9423:21;;9842;9423;;;;;;;;9406:39;9423:21;;;:::i;:::-;9406:39;:::i;:::-;9446:13;9406:54;9446:13;;;1199:32380;9406:54;;1199:32380;;;;;;;;;;9406:54;1199:32380;9406:58;;9511:21;;9496:52;9511:21;9496:37;9511:21;;;:::i;:::-;9496:37;:::i;:::-;1199:32380;;;;;;;;;;9496:52;1199:32380;9496:56;;9562:137;;;4057:250;9708:120;;;;4057:250;-1:-1:-1;;;;;1199:32380:167;;;;9842:21;:::i;:::-;1199:32380;;;9911:25;;;;;;;;:::i;:::-;9838:211;10397:219;9838:211;1199:32380;9838:211;10397:219;9838:211;10177:32;9838:211;10560:21;9838:211;10177:32;10425:21;9838:211;;10144:31;10109:21;;;:::i;:::-;10144:31;;:::i;:::-;10194:14;;;1199:32380;10177:32;;;:::i;:::-;10132:10;;10177:32;;:::i;:::-;10234:17;;10230:152;;9838:211;10425:21;;;;;;;;;:::i;:::-;10560;;:::i;:::-;1199:32380;;;10132:10;;;;1199:32380;;10595:11;;1199:32380;10397:219;;;:::i;:::-;;;;4135:161;;:::o;10230:152::-;10358:12;;;:::i;:::-;10230:152;;;;;;;;;;9838:211;10005:21;10425;10005;;;;;10397:219;10005:21;;;;;;;10560;10005;10177:32;1199:32380;10005:21;;9967:71;10397:219;10005:21;;;10177:32;10005:21;;:::i;:::-;9967:71;:::i;:::-;9838:211;;9708:120;9742:70;:58;9763:21;9742:43;9763:21;;;:::i;:::-;9742:43;:::i;:58::-;9801:10;1199:32380;;;;;;;;;;;;;;9742:70;:75;1199:32380;;9742:75;:::i;:::-;1199:32380;;9708:120;;9562:137;9674:14;9598:72;:60;:90;9621:21;9598:45;9621:21;;;:::i;:::-;9598:45;:::i;:72::-;9674:14;;1199:32380;;;9598:90;:::i;:::-;1199:32380;;9562:137;;;;9216:156;1199:32380;;-1:-1:-1;;;9273:88:167;;1199:32380;;;9273:88;;;;;;:::i;1199:32380::-;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;4759:1328::-;;;;;;;;;;1199:32380;5123:14;;;:::i;:::-;1199:32380;5123:58;5119:430;;5586:28;1199:32380;5562:14;;;:::i;:::-;1199:32380;5562:53;5558:462;;6037:43;6065:14;;;:::i;:::-;1199:32380;;-1:-1:-1;;;6037:43:167;;1199:32380;;;;6037:43;;;1199:32380;;;;;;;;;5558:462;5631:47;;;;;;;;;5700:21;;;;;;:::i;:::-;5778;;;;;;:::i;:::-;5631:358;;;;;;5123:14;1199:32380;5743:13;1199:32380;5631:358;1199:32380;;;;;;;;;;;;;5631:358;;5743:13;1199:32380;5631:358;;;;;:::i;:::-;;;;;;;;;;;6003:7;:::o;5631:358::-;;;;;;:::i;5119:430::-;5197:45;;;;;;;;;;;5264:21;5307;;5264;;;;;:::i;:::-;5307;;;:::i;:::-;5197:321;;;;;;5123:14;1199:32380;5197:321;1199:32380;;;;;;;;;;;;;5197:321;;;;;;:::i;1199:32380::-;;;;;;;:::i;:::-;13347:14;1199:32380;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;-1:-1:-1;;1199:32380:167;;;;;:::i;:::-;;;;-1:-1:-1;1199:32380:167;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;6093:1902::-;;;6495:42;6093:1902;;;;;1199:32380;;:::i;:::-;;6495:42;:::i;:::-;6547:31;;6666;;;;:::i;:::-;1199:32380;;;;;;-1:-1:-1;;;;;1199:32380:167;;6707:64;;6093:1902;6785:6;;6781:167;;7116:16;;6994:148;7116:16;;;;1199:32380;6994:148;;;:::i;:::-;1199:32380;;7152:202;;-1:-1:-1;7412:25:167;1199:32380;6711:14;;;;1199:32380;7451:52;;-1:-1:-1;;;;;1199:32380:167;7451:52;;:::i;:::-;7412:92;;;;;;;;;;;:::i;:::-;7518:8;;7514:263;;7835:36;1199:32380;;;7412:92;1199:32380;;;7835:36;;;;;;:::i;:::-;7897:4;7881:13;;;1199:32380;7881:13;;7911:16;;;1199:32380;7949:39;1199:32380;7949:39;6093:1902;:::o;7514:263::-;7608:31;7692:20;7608:31;;:::i;:::-;7692:20;;;:::i;:::-;7727:39;6711:14;7727:39;;:::o;7152:202::-;7269:20;;;;;;;;:::i;6781:167::-;6872:11;;;;;;;;;;;:::i;6707:64::-;-1:-1:-1;;;;;1199:32380:167;6741:13;;;1199:32380;6707:64;;;1199:32380;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;8001:539;1199:32380;;8394:20;;;;1199:32380;8428:23;;;;1199:32380;8465:24;;;;1199:32380;8503:20;;;;1199:32380;;-1:-1:-1;;;8205:328:167;;;;1199:32380;8205:328;;;1199:32380;;8465:24;1199:32380;;8503:20;;-1:-1:-1;;;;;1199:32380:167;8001:539;;1199:32380;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;8205:328;;1199:32380;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;9406:16;1199:32380;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;9496:14;1199:32380;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;9598:22;1199:32380;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;9742:20;1199:32380;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;11712:12;1199:32380;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;1535:19:168;1199:32380:167;;;;;;:::o;:::-;-1:-1:-1;;1199:32380:167;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;11221:14;1199:32380;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;10629:1823;;;;;;;;;;;10991:31;11107:30;;;;;:::i;:::-;11237:21;11193:92;11237:21;;;;;;;:::i;11193:92::-;1199:32380;;;11295:156;;1199:32380;;-1:-1:-1;1199:32380:167;;-1:-1:-1;;;;;11465:21:167;11237;;;11465;:::i;:::-;1199:32380;;;11534:25;12207:12;11534:25;;;;;;;;:::i;:::-;11461:211;;11781:18;11712:59;11725:21;11712:50;11725:21;11748:13;11712:35;11725:21;;;;;:::i;:::-;11712:35;:::i;:::-;11748:13;;1199:32380;;;;;;;;;;11712:50;1199:32380;;;;;;;;;;;;;;;;11712:59;11781:18;:36;11803:14;;;1199:32380;;;11781:36;:::i;:::-;1199:32380;;;11831:23;11827:120;;11461:211;11996:24;1199:32380;12081:14;;1199:32380;;-1:-1:-1;;;;;1199:32380:167;12022:21;11725;;;12022;:::i;:::-;11803:14;;11748:13;11803:14;;;1199:32380;11748:13;;1199:32380;12054:10;;12081:14;;:::i;:::-;12207:12;;;:::i;:::-;12299:21;11725;;;12299;:::i;:::-;11237;12236:209;;12361:21;11237;;;12361;:::i;:::-;1199:32380;;;11748:13;;;;1199:32380;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;12396:11;;1199:32380;;;;;;;;11803:14;;;;1199:32380;;;;;;;;;12054:10;;1199:32380;;;;;;;;;;;12236:209;;;;10629:1823::o;11827:120::-;11870:66;11877:59;11748:13;11877:50;11748:13;11877:35;11890:21;11725;11748:13;;;1199:32380;11725:21;;11890;:::i;11877:59::-;11870:66;:::i;:::-;11827:120;;11461:211;11237:21;;;;;;11590:71;11237:21;11628;11237;12207:12;11237:21;;;11628;:::i;11590:71::-;11461:211;;11295:156;1199:32380;;-1:-1:-1;;;11352:88:167;;1199:32380;11352:88;1199:32380;11352:88;;;;:::i;1199:32380::-;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;-1:-1:-1;1199:32380:167;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;12458:617::-;;1199:32380;;:::i;:::-;;;;;;;:::i;:::-;;;;12687:58;;;12683:137;;1199:32380;;;:::i;:::-;12857:28;12833:53;;12829:128;;1199:32380;;;;:::i;:::-;;;4683:36;;;;12982:76;;;;;;;1199:32380;12982:76;;;;;;:::i;:::-;12687:14;12967:101;;12458:617;:::o;12829:128::-;12909:37;;;;;;;;:::i;:::-;12902:44;;;;;:::o;12683:137::-;12768:41;;;;;;;;:::i;1199:32380::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;13081:1946::-;1199:32380;;:::i;:::-;13363:21;;;;13320:65;13321:64;13363:21;;;:::i;:::-;13321:64;:::i;:::-;13320:65;;1199:32380;13320:65;13316:196;;13556:21;;;;;;13525:53;13526:52;13556:21;;;:::i;:::-;13526:52;:::i;13525:53::-;13521:187;;13854:21;14028:11;13854:21;;;;:::i;:::-;13889;13798:292;13889:21;;;:::i;:::-;13948:13;;;;1199:32380;13975:11;;;;1199:32380;14000:14;;;;;;1199:32380;14028:11;;;;;;;;:::i;:::-;13924:10;;;;13798:292;;:::i;:::-;13948:13;14117:20;;1199:32380;-1:-1:-1;;;;;1199:32380:167;;;14117:20;;;14151:13;14147:438;;14617:25;;;;;;;;;1199:32380;14595:19;;;;1199:32380;14656:24;14652:159;;13081:1946;14846:29;13363:21;14846:29;;13975:11;14846:29;;;13948:13;14820:23;;:55;14000:14;14907:25;;;13975:11;14885:19;;:47;14961:22;1199:32380;13363:21;14942:16;;1199:32380;15002:4;1199:32380;;;:::i;:::-;14994:26;13081:1946;:::o;14652:159::-;14721:34;1199:32380;14721:79;;1199:32380;;14721:58;;-1:-1:-1;;;;;1199:32380:167;;-1:-1:-1;;;;;1199:32380:167;;;14721:58;1199:32380;;;;;;;;;;14721:79;;;;;1199:32380;;;;;;;;14721:79;;;;;;;;;;13363:21;14721:79;-1:-1:-1;14721:79:167;;;14652:159;14696:22;;1199:32380;14696:22;;1199:32380;14652:159;;;14721:79;;;;;;-1:-1:-1;14721:79:167;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;14147:438;14228:307;14317:21;;;;;;;;;;;:::i;:::-;14360;13924:10;14360:21;;:::i;:::-;14228:307;;:::i;:::-;14180:394;13347:14;14180:394;;;:::o;13521:187::-;13665:21;;;13609:78;13665:21;;;;;:::i;:::-;1199:32380;;-1:-1:-1;;;13609:78:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;13609:78;;;1199:32380;;;;;13609:78;;1199:32380;;13609:78;;;;;;:::i;13316:196::-;13416:75;13469:21;;;;13416:75;13469:21;;:::i;:::-;1199:32380;;-1:-1:-1;;;13416:75:167;;;;-1:-1:-1;;;;;1199:32380:167;;;13416:75;;;1199:32380;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;-1:-1:-1;1199:32380:167;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15033:3521::-;;1199:32380;;:::i;:::-;15281:12;;;;;;15264:29;15281:12;;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;15264:29;15307:26;15321:12;;;:::i;15307:26::-;:10;:26;15303:152;;15511:21;;;;15468:65;15469:64;15511:21;;;:::i;15468:65::-;15464:196;;15704:21;;;;;;15673:53;15674:52;15704:21;;;:::i;15673:53::-;15669:187;;1199:32380;;:::i;:::-;;16017:21;;;:::i;:::-;16040:12;16105:14;15975:154;16040:12;;;:::i;:::-;16054:21;;;;:::i;:::-;16077:13;;;;1199:32380;16092:11;;;;;1199:32380;16105:14;;;;1199:32380;15975:154;;;;:::i;:::-;16143:6;;;;16139:438;;16615:21;;;16651:24;16606:31;16615:21;;;:::i;16651:24::-;:73;16676:12;;;;:::i;:::-;16698:24;1199:32380;16690:33;;-1:-1:-1;;;;;1199:32380:167;;;16690:33;1199:32380;;-1:-1:-1;;;16651:73:167;;1199:32380;;;;;;16651:73;;;;:::i;:::-;;;;;;15264:14;;16651:73;;;15033:3521;-1:-1:-1;16647:584:167;;17145:12;;;;;17089:92;17145:12;17159:21;17145:12;17089:92;17145:12;;:::i;:::-;17159:21;;:::i;:::-;1199:32380;;16879:31;;;;;;17089:92;;;;;;;;:::i;16647:584::-;16769:11;;;;;;;16765:245;;16647:584;;17245:46;16647:584;17263:12;;;:::i;:::-;1199:32380;;;;;;;;;;;17245:46;;16651:73;17245:46;;;:::i;:::-;;;;;15264:14;;17245:46;;;16647:584;-1:-1:-1;17241:970:167;;17994:12;;;17895:266;17994:12;;;18028:21;17994:12;17895:266;17994:12;;:::i;18028:21::-;1199:32380;;17496:33;;;;;;17895:266;;;;;;;1199:32380;;15264:14;1199:32380;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17241:970;17342:30;;;;;;;;;;;;17338:478;;-1:-1:-1;;;;18243:25:167;;;1199:32380;;18221:19;;;1199:32380;18303:34;1199:32380;18303:85;;17241:970;-1:-1:-1;18243:25:167;;;18303:58;;-1:-1:-1;;;;;1199:32380:167;;;18303:58;1199:32380;;;;;;;;;;;;;18303:85;;16651:73;18303:85;;1199:32380;;;;;;;;18303:85;;;;;;;;;;16077:13;18303:85;15264:14;18303:85;;;17241:970;18278:22;;;;1199:32380;15511:21;18424:29;;;18398:23;;;:55;18485:25;;16092:11;18463:19;;:47;18303:34;1199:32380;;;:::i;18303:85::-;;;;;;;-1:-1:-1;18303:85:167;;;;;;:::i;:::-;;;;;;17338:478;17448:306;17555:12;;;17593:21;17555:12;17448:306;17555:12;;;;;:::i;:::-;17593:21;;:::i;:::-;1199:32380;;17496:33;;;;;;17448:306;;;;;;;;:::i;17245:46::-;;;;;;;;;;;;;;;:::i;:::-;;;;;16765:245;16912:12;;16856:92;16912:12;;;16856:92;16912:12;;;16926:21;16912:12;;:::i;16651:73::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;16139:438;16307:21;;;;;;;;;16384;16350:12;16307:21;16213:314;16307:21;;;:::i;:::-;16350:12;;:::i;16384:21::-;16213:314;;:::i;15669:187::-;15813:21;;;15757:78;15813:21;;;15757:78;15813:21;;:::i;:::-;1199:32380;;-1:-1:-1;;;15757:78:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;15757:78;;;1199:32380;;;;;;;;;15464:196;15617:21;15564:75;15617:21;;15564:75;15617:21;;;;;:::i;:::-;1199:32380;;-1:-1:-1;;;15564:75:167;;;;-1:-1:-1;;;;;1199:32380:167;;;15564:75;;;1199:32380;;;;;;;;;15303:152;15364:70;15421:12;;;15364:70;15421:12;;:::i;:::-;1199:32380;;-1:-1:-1;;;15364:70:167;;;;-1:-1:-1;;;;;1199:32380:167;;;15364:70;;;1199:32380;;;;;;;;;18560:858;;;;;;;;;;;1199:32380;;;;;;;18908:25;1199:32380;;;;;18977:327;;;;1199:32380;18977:327;;;19021:66;;;;18977:327;;1199:32380;18977:327;;;1199:32380;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;18977:327;1199:32380;;;;;;;;;;;;;;;:::i;18977:327::-;18908:410;;;;;;:::i;:::-;19332:8;;19328:83;;18560:858;:::o;19328:83::-;1199:32380;;-1:-1:-1;;;19349:62:167;;1199:32380;;;19349:62;;18977:327;19349:62;;;:::i;1199:32380::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;19688:14;1199:32380;;;19688:14;1199:32380;;;:::o;19424:716::-;;1199:32380;;:::i;:::-;;19932:14;19688;;;:::i;:::-;19733:21;19610:523;19733:21;;;;;:::i;:::-;19610:523;19812:12;;;;;:::i;:::-;19610:523;19855:21;;;;;:::i;:::-;20084:12;19610:523;20084:12;;:::i;:::-;1199:32380;;;:::i;:::-;;;;;;19733:21;19610:523;;1199:32380;;19610:523;-1:-1:-1;;;;;1199:32380:167;19812:12;19610:523;;1199:32380;;19610:523;19777:13;;;;1199:32380;19855:21;19610:523;;1199:32380;-1:-1:-1;;;;;1199:32380:167;;;19610:523;;;1199:32380;;19610:523;-1:-1:-1;;;;;1199:32380:167;19897:11;19610:523;;1199:32380;;19610:523;19897:11;;;1199:32380;19610:523;;;1199:32380;19932:14;1199:32380;;19610:523;;1199:32380;19688:14;19610:523;;;1199:32380;19688:14;19610:523;;;1199:32380;19688:14;19610:523;;;1199:32380;19610:523;;;1199:32380;19688:14;19610:523;;;1199:32380;19424:716;:::o;20146:314::-;6839:31;20324:20;;;1199:32380;20419:19;;-1:-1:-1;;;;;;20380:29:167;;;:::i;:::-;1199:32380;20363:14;;;1199:32380;20419:19;:34;20146:314::o;:::-;1199:32380;;;;;;20419:19;20324:20;;;;1199:32380;;;;20380:29;;;:::i;1199:32380::-;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1199:32380:167;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;20466:536::-;1199:32380;;20627:16;;;;1199:32380;;;;;;;;20657:23;;;1199:32380;20657:23;;;-1:-1:-1;;;;;1199:32380:167;20694:15;;;1199:32380;20723:14;;;1199:32380;;;20694:15;;-1:-1:-1;;;;;1199:32380:167;20751:23;;;1199:32380;20751:23;;;-1:-1:-1;;;;;1199:32380:167;20788:13;;;;1199:32380;20815:16;;;;1199:32380;20845:14;;;1199:32380;;;;;;;;20873:20;;;1199:32380;;;;;:::i;:::-;20907:14;;;1199:32380;-1:-1:-1;;;;;;1199:32380:167;20935:19;;;;;20968:17;;;1199:32380;;20657:23;1199:32380;;;;;;;;;;;;;;20561:434;;;;;:::i;:::-;;;;;20466:536::o;21008:450::-;;21281:47;;;:::i;:::-;21338:54;;;21402:49;;21410:27;21402:49;21008:450;:::o;21338:54::-;21351:41;-1:-1:-1;21351:41:167;:::o;21464:1238::-;-1:-1:-1;;;;;;;;;21800:28:167;;;:::i;:::-;1199:32380;21800:68;;;:96;;;21464:1238;21796:172;;22076:197;;;;;;;;;;;;;;;22286:56;22313:27;22286:56;;:83;;;;;21464:1238;22282:159;;;22475:24;1199:32380;;22475:24;:::i;:::-;-1:-1:-1;22451:95:167;;1199:32380;;;:::i;:::-;22643:4;22635:60;;21464:1238;:::o;22451:95::-;-1:-1:-1;;;;;;1199:32380:167;;:::i;22282:159::-;22385:45;;;;;-1:-1:-1;22385:45:167;-1:-1:-1;1199:32380:167;;;:::i;22286:83::-;22367:2;22346:23;;;;22286:83;;;21796:172;21912:45;21920:5;21912:45;21920:5;1199:32380;;;:::i;21800:96::-;1199:32380;21893:3;1199:32380;;21872:24;21800:96;;22708:805;;1199:32380;;;;;;:::i;:::-;;23005:58;;;:76;;;22708:805;23001:91;;23128:158;23341:14;23240:21;23324:31;23240:21;;;;;;:::i;:::-;23263:13;;;;1199:32380;23128:158;;:::i;:::-;23341:14;;1199:32380;23324:31;;:::i;:::-;23369:30;;;;23365:45;;1199:32380;;-1:-1:-1;;;23240:21:167;23428:78;;;;;;1199:32380;;;;;;;;;;;23428:78;1199:32380;;;;23428:78;1199:32380;23365:45;1199:32380;;;;:::i;23001:91::-;1199:32380;;;;;;;;;:::i;:::-;-1:-1:-1;1199:32380:167;;23083:9;:::o;23005:76::-;23067:14;;;23005:76;;23519:695;;;;;23817:1;23820:33;;;;;;24199:8;;;;;23817:1;23519:695;:::o;23805:13::-;-1:-1:-1;;;;;1199:32380:167;23891:28;;;;:::i;:::-;;1199:32380;;;;;23891:64;:136;;;23805:13;23870:249;;1199:32380;;23805:13;;23870:249;24067:28;;;:37;:28;;;;;:::i;:::-;;:37;1199:32380;24060:44;:::o;23891:136::-;23979:28;;:36;:28;;;;:::i;:::-;;:36;1199:32380;23979:48;23891:136;;24220:1117;;1199:32380;24471:14;;;:::i;:::-;1199:32380;24467:125;;24471:14;24622:33;;;;;;25198:21;;25297:33;25198:21;;25255:14;25198:21;24741;25076:204;25198:21;;;:::i;:::-;1199:32380;25135:145;1199:32380;;:::i;:::-;-1:-1:-1;;;;;1199:32380:167;;;;;;25135:145;25230:13;;;1199:32380;24741:21;25135:145;;1199:32380;25255:14;1199:32380;25135:145;;;1199:32380;25076:204;;;;:::i;:::-;;25297:33;:::i;24607:13::-;24693:44;:28;;;;:::i;:::-;;1199:32380;-1:-1:-1;;;;;1199:32380:167;;;24693:44;24741:21;;24693:69;24741:21;;;;;:::i;24693:69::-;-1:-1:-1;;;;;1199:32380:167;;;24693:69;;;:146;;24607:13;24672:324;;;1199:32380;;24607:13;;24672:324;24872:37;:28;24913:14;24872:28;:55;:28;;;;:::i;:::-;;:37;24913:14;;1199:32380;;;24872:55;:::i;:::-;1199:32380;;24945:36;:::o;24693:146::-;24786:28;;;;;;:::i;:::-;;:36;1199:32380;24826:13;;;1199:32380;24786:53;24693:146;;;24467:125;24545:36;;;;:::o;25343:407::-;-1:-1:-1;;;;;1199:32380:167;;;;25514:30;;25510:47;;25572:63;1199:32380;25572:29;1199:32380;;;;;;;;;;;;;25572:63;;;;;1199:32380;25572:63;;-1:-1:-1;;25572:63:167;;;25343:407;-1:-1:-1;25568:176:167;;25721:12;-1:-1:-1;25721:12:167;:::o;25572:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;25510:47;25546:11;;1199:32380;25546:11;:::o;25756:244::-;25867:28;;:33;;:126;;;;25860:133;25756:244;:::o;25867:126::-;1199:32380;;;;4592:71:119;;;;;1017:25;-1:-1:-1;1017:25:119;;;4592:71;;;;;;;;1199:32380:167;4592:71:119;;;;;;:::i;:::-;4784:212;;;;;;;;-1:-1:-1;4784:212:119;5013:29;;;;25867:126:167;5013:48:119;;;;25867:126:167;975:149:119;;;;25867:126:167;1543:81:119;;;;;;25867:126:167;25756:244;:::o;1543:81:119:-;1570:54;;;;:::i;975:149::-;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;;4592:71:119;;;;;;1199:32380:167;;;4592:71:119;;;1199:32380:167;4592:71:119;;;;;;:::i;:::-;4784:212;;;-1:-1:-1;4784:212:119;;;;;5013:29;;975:149;5013:48;;;;;975:149;1059:65;;975:149;;;;;;5013:48;5046:15;;;;5013:48;;;:29;5024:18;;;-1:-1:-1;5013:29:119;;;;:48;5046:15;;;-1:-1:-1;5013:48:119;;;:29;5024:18;-1:-1:-1;5024:18:119;;-1:-1:-1;5013:29:119;;;4421:647;-1:-1:-1;4592:71:119;4421:647;1199:32380:167;;4592:71:119;;;1017:25;;;;4592:71;;25966:26:167;;;4592:71:119;;;1199:32380:167;4592:71:119;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:119;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:119;;-1:-1:-1;5013:29:119;;;26006:1485:167;;26249:12;;26245:27;;-1:-1:-1;;;;;1199:32380:167;;;26286:30;;26282:201;;-1:-1:-1;1199:32380:167;;;-1:-1:-1;;;26546:27:167;;26562:10;26546:27;;;1199:32380;26546:27;;;;1199:32380;;;26546:27;;;26260:1;;26546:27;;;26006:1485;-1:-1:-1;26542:446:167;;-1:-1:-1;;1199:32380:167;-1:-1:-1;;;26882:95:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;26882:95;;;1199:32380;;;;;26260:1;1199:32380;;;;26882:95;1199:32380;;;;26882:95;1199:32380;26542:446;26618:17;;;26614:230;;-1:-1:-1;27038:28:167;1199:32380;27002:66;;26542:446;;27030:37;;-1:-1:-1;;;;;1199:32380:167;;;27030:37;1199:32380;;;;;;;;;;;27002:66;;26562:10;26546:27;27002:66;;;:::i;:::-;;;;;26260:1;;27002:66;;;26542:446;-1:-1:-1;26998:467:167;;-1:-1:-1;1199:32380:167;-1:-1:-1;;;27357:97:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;27357:97;;;1199:32380;;;;;26260:1;1199:32380;;;;27357:97;1199:32380;;;;27357:97;1199:32380;26998:467;27115:19;;;27111:208;;26998:467;;;;;1199:32380;;:::i;27111:208::-;1199:32380;;-1:-1:-1;;;27161:143:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;27161:143;;;1199:32380;;;;;;;;;;;;;;;27161:143;1199:32380;;;;27161:143;1199:32380;27002:66;;;;;;;;;;;;;;;:::i;:::-;;;;;26614:230;1199:32380;;-1:-1:-1;;;26682:147:167;;;;;;;-1:-1:-1;;;;;;1199:32380:167;;;26682:147;;;1199:32380;;;;;;;;;;;;;;;26682:147;1199:32380;;;;26682:147;1199:32380;26546:27;;;;;;;;;;;;;;;:::i;:::-;;;;;26282:201;26336:24;-1:-1:-1;;26336:24:167;;;;26332:39;;1199:32380;;-1:-1:-1;;;26392:80:167;;;;;;;1199:32380;;;;;;;;;;;26392:80;1199:32380;;;;26392:80;1199:32380;26245:27;1199:32380;;;;;:::i;27497:1508::-;;;27645:12;;27641:25;;1199:32380;;;-1:-1:-1;;;27760:30:167;;;27784:4;27760:30;;;;1199:32380;;;;;;27760:30;;;;;1199:32380;;;-1:-1:-1;;;;;1199:32380:167;;;-1:-1:-1;27760:30:167;1199:32380;;;;27760:30;;;;;;;27497:1508;-1:-1:-1;27756:254:167;;27866:144;;27919:80;27866:144;;:::i;:::-;1199:32380;;-1:-1:-1;;;27919:80:167;;1199:32380;;;27919:80;;;:::i;27756:254::-;28024:28;1199:32380;27756:254;;;28024:41;;-1:-1:-1;;;;;1199:32380:167;;;28024:41;:95;;;;;1199:32380;;-1:-1:-1;;;28024:95:167;;-1:-1:-1;;;;;1199:32380:167;;28024:95;;;1199:32380;;;28084:10;1199:32380;;;;27784:4;1199:32380;;;;;;;;;;;;27656:1;;1199:32380;;;;;27656:1;;1199:32380;;;;28024:95;;;;;;;;27756:254;-1:-1:-1;28020:255:167;;28131:144;;28184:80;28131:144;;:::i;28020:255::-;1199:32380;;28319:30;;;27784:4;28319:30;;;1199:32380;;;;;27656:1;;28285:20;;1199:32380;;;;;;;;28319:30;;;;;;;;;28020:255;-1:-1:-1;28315:253:167;;28424:144;;28477:80;28424:144;;:::i;28315:253::-;28390:22;;;;;27656:1;;28315:253;28603:29;;;;;28635:28;;;;:::i;:::-;28603:64;;28681:25;;;28677:322;;27497:1508;;;;;;:::o;28677:322::-;1199:32380;;-1:-1:-1;;;28831:143:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;28831:143;;;1199:32380;;;;;;;;;;;;;;;28729:259;;28831:143;1199:32380;;;;28831:143;;1199:32380;;28831:143;;;;;;:::i;:::-;1199:32380;-1:-1:-1;;;28729:259:167;;1199:32380;;;28729:259;;;:::i;28603:64::-;;;;;;28319:30;;;;;;;;;;;;;;;:::i;:::-;;;;;28024:95;;;;;;:::i;:::-;;;;27760:30;;;;;;;;;;;;;;;:::i;:::-;;;;;27641:25;27659:7;;;:::o;29011:2511::-;;;;;;;29317:27;-1:-1:-1;1199:32380:167;;;;;;;;;29358:36;;;;;;;;;;;;:::i;:::-;;1199:32380;;;;;;;;;;29358:36;;;;;;;;;;;;;;29011:2511;-1:-1:-1;29354:256:167;;29476:134;;29529:70;29476:134;;:::i;:::-;1199:32380;;-1:-1:-1;;;29529:70:167;;1199:32380;;;29529:70;;;:::i;29354:256::-;;29623:29;;;29619:335;;29964:26;;;;;;30004:35;-1:-1:-1;1199:32380:167;;30004:35;;;;;;;;;;;:::i;:::-;;;;;;;;;;;29354:256;-1:-1:-1;30000:254:167;;30120:134;;30173:70;30120:134;;:::i;30000:254::-;;1199:32380;30268:98;;;;;-1:-1:-1;1199:32380:167;;;;;;;30268:98;1199:32380;;;;;;;;;;;;;;;;30268:98;;;;1199:32380;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30268:98;;;;;;;;;30000:254;-1:-1:-1;30264:248:167;;30378:134;;30431:70;30378:134;;:::i;30264:248::-;1199:32380;;30562:36;;;30522:26;;;;-1:-1:-1;1199:32380:167;;;30562:36;1199:32380;;30562:36;;;;:::i;:::-;;;;;;;;;;;30264:248;-1:-1:-1;30558:255:167;;30679:134;30732:70;30679:134;;:::i;30558:255::-;30639:28;;;;;;30558:255;30862:35;-1:-1:-1;1199:32380:167;;30862:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;;30558:255;-1:-1:-1;30858:253:167;;30977:134;;31030:70;30977:134;;:::i;30858:253::-;30938:27;31147:29;30938:27;;;;;;;;30858:253;31147:29;:::i;:::-;31125:51;;;;:104;;;30858:253;31121:395;;;;;29011:2511;;;;;;;;:::o;31121:395::-;1199:32380;;-1:-1:-1;;;31344:147:167;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;31344:147;;;1199:32380;;;;;;;;;;;;;;;;;;;;;;;;;31252:253;;31344:147;1199:32380;;;;31344:147;1199:32380;31344:147;1199:32380;-1:-1:-1;;;31252:253:167;;1199:32380;;;31252:253;;;:::i;31125:104::-;31201:28;;;;;:::i;:::-;31180:49;;31125:104;;;;;30862:35;;;;;;;;;;;;;;;:::i;:::-;;;;;30562:36;;;;;;;;-1:-1:-1;30562:36:167;;;;;;:::i;:::-;;;;;30268:98;;;;;;:::i;:::-;;;;30004:35;;;;;;;;-1:-1:-1;30004:35:167;;;;;;:::i;:::-;;;;;29619:335;1199:32380;;;29675:268;1199:32380;29767:162;1199:32380;;;;;29767:162;1199:32380;;;17496:33;;;;;;29767:162;;;;;;;;:::i;29358:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;1199:32380;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;31528:1732::-;1199:32380;;-1:-1:-1;;;;;1199:32380:167;;;31528:1732;;;;;31818:42;;31528:1732;31818:42;:::i;:::-;1199:32380;;;-1:-1:-1;;;31920:50:167;;;1199:32380;;31920:50;;31870:35;;1199:32380;-1:-1:-1;1199:32380:167;;31920:50;31870:35;;31920:50;;;;:::i;:::-;;;;;;-1:-1:-1;;31920:50:167;;;31528:1732;-1:-1:-1;31916:276:167;;32062:130;;32115:66;32062:130;;:::i;:::-;1199:32380;;-1:-1:-1;;;32115:66:167;;1199:32380;;;32115:66;;;:::i;31916:276::-;;32206:71;;;;;1199:32380;;-1:-1:-1;;;32206:71:167;;1199:32380;;;;;-1:-1:-1;1199:32380:167;;32206:71;1199:32380;;;32206:71;;;;:::i;:::-;;;;;;;;;;;31916:276;-1:-1:-1;32202:217:167;;32289:130;;32342:66;32289:130;;:::i;32202:217::-;;;32477:50;-1:-1:-1;32202:217:167;1199:32380;32477:50;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;32477:50:167;;;32202:217;-1:-1:-1;32473:275:167;;32618:130;;32671:66;32618:130;;:::i;32473:275::-;32578:28;;;;;-1:-1:-1;32763:13:167;1199:32380;;32778:20;;;;;32819;;;;:::i;:::-;1199:32380;32843:35;:21;32867:11;32843:21;;;;;:::i;:::-;1199:32380;32867:11;;:::i;:::-;1199:32380;32843:35;;:::i;:::-;32819:59;32815:369;;1199:32380;;32763:13;;32815:369;33096:12;;32905:264;33096:12;33001:150;33096:12;33001:150;33096:12;33118:11;33096:12;;;;;:::i;:::-;1199:32380;33118:11;;:::i;:::-;1199:32380;;;;33049:27;;;;;;33001:150;;;;;;;;:::i;:::-;1199:32380;-1:-1:-1;;;32905:264:167;;1199:32380;;;32905:264;;;:::i;32778:20::-;;;;;;;;;;;31528:1732::o;32477:50::-;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;32206:71;;;;;;:::i;:::-;;;;31920:50;;;;;;;;;;;;;:::i;:::-;;;;;33266:311;;;1199:32380;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1199:32380:167;;;:::i;:::-;;;;;;;33387:33;-1:-1:-1;33450:11:167;;;;;;33266:311;;;;:::o;33435:13::-;33478:22;;1199:32380;33478:22;;;:::i;:::-;1199:32380;;;;;;;;;;33435:13;;1052:123:168;1117:4;1126;-1:-1:-1;;;;;1199:32380:167;1109:21:168;1105:63;;1052:123::o;1105:63::-;1199:32380:167;;-1:-1:-1;;;1139:29:168;;;;;1181:2673;;;;;;;1535:47;:37;;;;:::i;:47::-;1199:32380:167;-1:-1:-1;;;;;;1199:32380:167;;-1:-1:-1;;;1597:43:168;;;1593:165;;-1:-1:-1;;;;1771:38:168;;;1767:145;;-1:-1:-1;;;;;;;1925:36:168;;;1921:166;;-1:-1:-1;;;;2100:41:168;;;2096:141;;-1:-1:-1;;;;2250:40:168;;;2246:106;;-1:-1:-1;;;;2366:37:168;;;2362:400;;-1:-1:-1;;;;2786:33:168;2775:44;;;2771:391;;-1:-1:-1;;;;23451:24:167;-1:-1:-1;;;3175:35:168;;;3171:159;;-1:-1:-1;;;;3354:23:168;-1:-1:-1;3343:34:168;;;3339:147;;-1:-1:-1;;;;3499:33:168;;;3495:149;;-1:-1:-1;;;;3668:25:168;3657:36;;;-1:-1:-1;3653:175:168;;1199:32380:167;;;;;:::i;3653:175:168:-;3716:101;1199:32380:167;3784:32:168;3716:101;3784:32;;1199:32380:167;;;;;;;;;;;;3716:101:168;;;;;;;;;;;:::i;3495:149::-;3610:22;;;;;1199:32380:167;;;3555:78:168;;;;;;;;;;1199:32380:167;;;;;;;;-1:-1:-1;1199:32380:167;-1:-1:-1;3555:78:168;1199:32380:167;;;;3555:78:168;1199:32380:167;3339:147:168;3448:26;;;;;3400:75;3448:26;;1199:32380:167;;3400:75:168;1199:32380:167;;3400:75:168;;;;;;;;;;1199:32380:167;;;;;;;;3171:159:168;3293:25;;;;;3233:86;3293:25;3233:86;3293:25;;1199:32380:167;;;3233:86:168;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;2771:391:168;2853:32;;;;;;;3007:144;2853:32;;3007:144;2853:32;;:42;:32;;;;:::i;:42::-;1199:32380:167;2930:38:168;:56;:38;:48;:38;;;;:::i;:56::-;1199:32380:167;;;;3007:144:168;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2362:400:168;2439:34;;;;;;;2599:152;2439:34;;2599:152;2439:34;;:44;:34;;;;:::i;:44::-;1199:32380:167;2520:40:168;:58;:40;:50;:40;;;;:::i;:58::-;1199:32380:167;;;;2599:152:168;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2246:106:168;1199:32380:167;;;;;;;;;;;2299:53:168;;;;;;;;;;;:::i;2096:141::-;1199:32380:167;;2164:62:168;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;2164:62:168;;;1199:32380:167;;-1:-1:-1;2164:62:168;;-1:-1:-1;1199:32380:167;;-1:-1:-1;;1199:32380:167;;;;-1:-1:-1;2164:62:168;;-1:-1:-1;;1199:32380:167;1921:166:168;1199:32380:167;;;;;;;;1984:92:168;1199:32380:167;1984:92:168;1199:32380:167;;;;;;;;;;1767:145:168;1199:32380:167;;1832:69:168;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;1832:69:168;;;1199:32380:167;-1:-1:-1;1199:32380:167;;-1:-1:-1;1832:69:168;;-1:-1:-1;1199:32380:167;;-1:-1:-1;;1199:32380:167;;;;-1:-1:-1;1832:69:168;;-1:-1:-1;1199:32380:167;1593:165:168;1199:32380:167;;;;;;;1663:84:168;1199:32380:167;;1663:84:168;1199:32380:167;;;;1663:84:168;;;;;;;;;;;:::i;3860:1466::-;;;;4206:49;:30;:40;:30;;;;:::i;:49::-;1199:32380:167;-1:-1:-1;;;;;;1199:32380:167;;-1:-1:-1;;;4270:40:168;;;4266:106;;-1:-1:-1;;;;4386:41:168;;;4382:170;;-1:-1:-1;;;;4576:25:168;4565:36;;;4561:216;;-1:-1:-1;;;;3668:25:168;-1:-1:-1;;;4790:36:168;;;4786:168;;-1:-1:-1;;;;3510:22:168;-1:-1:-1;4967:33:168;;;4963:142;;-1:-1:-1;;;;5129:41:168;5118:52;;;-1:-1:-1;5114:186:168;;1199:32380:167;;;;;:::i;5114:186:168:-;5193:96;5270:18;5193:96;5270:18;;1199:32380:167;;;5193:96:168;;;;;;;;;;1199:32380:167;;;;;;;;;;;;;;;4963:142:168;5078:15;;;;;1199:32380:167;;;5023:71:168;;;;;;;;;;1199:32380:167;;;;;;;;-1:-1:-1;1199:32380:167;-1:-1:-1;5023:71:168;1199:32380:167;;;;5023:71:168;1199:32380:167;4786:168:168;1199:32380:167;;;;-1:-1:-1;4849:94:168;;1199:32380:167;-1:-1:-1;4849:94:168;;-1:-1:-1;;;;;;1199:32380:167;;;4561:216:168;4728:24;;;;;;;4624:142;4728:24;;;4624:142;4728:24;;1199:32380:167;;;;4624:142:168;;;;;;;;;;;:::i;4382:170::-;1199:32380:167;;4450:91:168;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;4450:91:168;;;1199:32380:167;;;;;;;;;;;;;;;-1:-1:-1;4450:91:168;;-1:-1:-1;1199:32380:167;;-1:-1:-1;;1199:32380:167;;;;-1:-1:-1;4450:91:168;1199:32380:167;6283:160:168;;1199:32380:167;;;;;;:::i;:::-;6406:1:168;1199:32380:167;;;;;;;;;6383:25:168;1199:32380:167;;;;;6283:160:168:o;6449:234::-;6575:1;1199:32380:167;;6554:22:168;6550:44;;6605:72;;;6449:234;:::o;6550:44::-;6578:16;6592:1;6578:16;:::o;1199:32380:167:-;;;;;;;:::i;:::-;;;;-1:-1:-1;1199:32380:167;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;-1:-1:-1;1199:32380:167;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;8365:2733:168:-;;;;;;;;;;1199:32380:167;;:::i;:::-;8838:37:168;1199:32380:167;8838:47:168;:37;;;;:::i;:47::-;1199:32380:167;:::i;:::-;;;;;;-1:-1:-1;;;;;1199:32380:167;8937:20:168;;;1199:32380:167;;8937:20:168;9018:25;;1199:32380:167;;8993:22:168;;;1199:32380:167;;;-1:-1:-1;;;;;1199:32380:167;9018:25:168;;;1199:32380:167;;;9058:37:168;;9054:106;;9208:62;;;;:::i;:::-;9284:14;;9280:76;;9370:8;9366:70;;9450:68;9451:67;;;;;;;:::i;9450:68::-;9446:160;;9619:14;;9615:80;;9726:44;:34;;;;:::i;:44::-;1199:32380:167;9803:58:168;:40;:50;:40;;;;:::i;:58::-;1199:32380:167;9875:14:168;;;;;:54;;;;8365:2733;9871:142;;;;;10114:48;10041:32;10114:38;10041:42;10114:56;10041:32;;;;:::i;:42::-;1199:32380:167;10114:38:168;;:::i;:56::-;1199:32380:167;10184:12:168;;;;:40;;;;8365:2733;10180:135;;;;1199:32380:167;10329:30:168;;;:71;;;;8365:2733;10325:157;;;8993:22;10495:26;;1199:32380:167;10524:15:168;-1:-1:-1;10491:104:168;;10619:22;;;1199:32380:167;10609:32:168;;10605:91;;10710:32;;;1199:32380:167;;;;;;-1:-1:-1;;;;;1199:32380:167;10710:52:168;10706:139;;11013:28;10883:18;;;;:::i;:::-;10710:32;10855:25;;1199:32380:167;;10943:32:168;;;1199:32380:167;10911:29:168;;:64;11013:28;;;10985:25;;:56;1199:32380:167;11052:39:168;-1:-1:-1;11052:39:168;8365:2733;:::o;10706:139::-;-1:-1:-1;;;;;;3668:25:168;10778:56;-1:-1:-1;3668:25:168;-1:-1:-1;10778:56:168:o;10605:91::-;-1:-1:-1;;;;;;3510:22:168;10643:53;-1:-1:-1;3510:22:168;-1:-1:-1;;;10643:53:168:o;10491:104::-;-1:-1:-1;;;;;;3354:23:168;10541:54;-1:-1:-1;3354:23:168;-1:-1:-1;;;10541:54:168:o;10325:157::-;-1:-1:-1;;;;;;23451:24:167;10416:55:168;-1:-1:-1;23451:24:167;-1:-1:-1;;;10416:55:168:o;10329:71::-;10363:37;;;;10329:71;;;10180:135;-1:-1:-1;;;;;;2786:33:168;10240:64;-1:-1:-1;2786:33:168;-1:-1:-1;;;;10240:64:168:o;10184:40::-;10200:14;;;;;:::i;:::-;:24;10184:40;;;;9871:142;-1:-1:-1;;;;;;2377:26:168;9945:57;-1:-1:-1;2377:26:168;-1:-1:-1;;;;;;;9945:57:168:o;9875:54::-;9893:24;;;;;:::i;:::-;:36;9875:54;;;;;9615:80;-1:-1:-1;;;;;;2261:29:168;9635:60;-1:-1:-1;2261:29:168;-1:-1:-1;;;;;;;9635:60:168:o;9446:160::-;-1:-1:-1;;;;;;2111:30:168;9534:61;-1:-1:-1;2111:30:168;-1:-1:-1;;;;;;;9534:61:168:o;9366:70::-;-1:-1:-1;;;;;;;;;1936:25:168;9380:56;-1:-1:-1;1936:25:168;-1:-1:-1;;;;;;;;;9380:56:168:o;9280:76::-;-1:-1:-1;;;;;;1782:27:168;9300:56;-1:-1:-1;1782:27:168;-1:-1:-1;;;;;;;;;;9300:56:168:o;9054:106::-;-1:-1:-1;;;;;;1608:32:168;9097:63;-1:-1:-1;1608:32:168;-1:-1:-1;;;;;;;;;;9097:63:168:o;5332:398::-;1199:32380:167;;-1:-1:-1;;;5559:34:168;;;;;;;;;5332:398;;;5559:34;;1199:32380:167;5559:34:168;:::i;:::-;;5531:63;;;;;;;;;;;;:::i;:::-;5608:8;;1199:32380:167;;5608:28:168;;5332:398;5604:55;;5559:34;1199:32380:167;;;5683:27:168;;1199:32380:167;;;;5683:27:168;5559:34;5683:27;1199:32380:167;;;;:::i;:::-;;;-1:-1:-1;;;;;1199:32380:167;;;;;5683:39:168;;5332:398::o;5604:55::-;5638:21;;;;;:::o;5608:28::-;1199:32380:167;5559:34:168;1199:32380:167;;5620:16:168;5608:28;;5736:541;-1:-1:-1;;;;;1199:32380:167;;;;;6011:21:168;1199:32380:167;;;;;5736:541:168;;;;1199:32380:167;-1:-1:-1;1199:32380:167;;;;-1:-1:-1;1199:32380:167;;;;;;;;;;-1:-1:-1;;;;;1199:32380:167;;;;;;;;;;;;;;;;;;;;;;6074:34:168;:85;;;;;5736:541;6070:102;;;1199:32380:167;;;;;;;-1:-1:-1;;1199:32380:167;;6212:26:168;;1199:32380:167;;;6189:81:168;;6212:26;1199:32380:167;;;;6212:26:168;1199:32380:167;6212:26:168;1199:32380:167;6202:37:168;;1199:32380:167;;6189:81:168;;:::i;6070:102::-;6161:11;;;;1199:32380:167;6161:11:168;:::o;6074:85::-;6112:15;;;:47;;6074:85;;;11104:1431;;;;;1199:32380:167;;:::i;:::-;;;;;11504:14:168;;11500:80;;11621:49;:30;;:40;:30;;:::i;:49::-;11684:18;;;;1199:32380:167;11684:23:168;;;11680:90;;11784:24;;;1199:32380:167;11784:29:168;;;:76;;;;11104:1431;11780:163;;;1199:32380:167;;-1:-1:-1;;;;;1199:32380:167;;;;;11956:45:168;11952:107;;12073:15;1199:32380:167;12073:15:168;;1199:32380:167;12073:25:168;12069:84;;12167:30;-1:-1:-1;12163:133:168;;12334:18;12457:21;12334:18;1199:32380:167;12334:18:168;;:::i;:::-;12306:25;;;1199:32380:167;;12394:25:168;;;1199:32380:167;:::i;:::-;12362:29:168;;;:57;12457:21;1199:32380:167;:::i;:::-;12429:25:168;;;:49;1199:32380:167;12489:39:168;11458:21;12489:39;11104:1431;:::o;12163:133::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;5129:41:168;12213:72;-1:-1:-1;5129:41:168;-1:-1:-1;12213:72:168:o;12069:84::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;3510:22:168;12100:53;-1:-1:-1;3510:22:168;-1:-1:-1;;12100:53:168:o;11952:107::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;3668:25:168;12003:56;-1:-1:-1;3668:25:168;-1:-1:-1;;12003:56:168:o;11780:163::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;4576:25:168;11876:56;-1:-1:-1;4576:25:168;-1:-1:-1;;;11876:56:168:o;11784:76::-;11845:15;;;-1:-1:-1;11817:43:168;11784:76;;;11680:90;-1:-1:-1;11458:21:168;;-1:-1:-1;;;4397:30:168;11709:61;-1:-1:-1;4397:30:168;-1:-1:-1;;;11709:61:168:o;11500:80::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;2261:29:168;11520:60;-1:-1:-1;2261:29:168;-1:-1:-1;;;;11520:60:168:o;6891:211:171:-;6967:12;;6963:37;;1084:2;7014:27;;7010:85;;6891:211;:::o;7010:85::-;1199:32380:167;;;;7050:45:171;;;;;;;;;1199:32380:167;1084:2:171;1199:32380:167;;;;7050:45:171;6963:37;1199:32380:167;;-1:-1:-1;;;6988:12:171;;;;;7368:318;;;;;7529:13;7541:1;7529:13;7524:118;7544:17;;;;;;7659:20;;;;;7368:318;:::o;7563:3::-;1199:32380:167;;;;;;;;;;7784:6:171;;;;:78;:6;;;1199:32380:167;;;7803:22:171;;;1199:32380:167;;;;;;;;;;7803:22:171;1199:32380:167;;;;7803:22:171;1199:32380:167;7803:22:171;1199:32380:167;7793:33:171;;7784:78;7563:3;-1:-1:-1;;1199:32380:167;;;;;;7529:13:171;;;;;7784:78;1199:32380:167;;;7839:22:171;;;1199:32380:167;;;;;;;;;;7839:22:171;;1199:32380:167;;;;7839:22:171;1199:32380:167;7839:22:171;1199:32380:167;7829:33:171;;7784:78;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":1595,"length":20},{"start":3820,"length":20},{"start":3957,"length":20}]}},"immutableReferences":{"67918":[{"start":13169,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":"59a8a40a","executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":"d65852a6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"execution\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_remainingEth\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutItem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newRemainingEth\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem\",\"name\":\"_item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_grossAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"executeCheckoutPayout\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy.\",\"kind\":\"dev\",\"methods\":{\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Module-only entrypoint; the marketplace proxy does not expose this selector.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"details\":\"Module-only entrypoint; the marketplace proxy does not expose this selector.\"}},\"title\":\"RareERC1155CheckoutExecutionModule\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes one already validated checkout item through a nested delegatecall rollback boundary.\"},\"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Executes payout for a checkout item through a nested rollback boundary.\"}},\"notice\":\"Delegatecall-only multi-item checkout execution module for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155CheckoutExecutionModule.sol\":\"RareERC1155CheckoutExecutionModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155CheckoutExecutionModule.sol\":{\"keccak256\":\"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a\",\"dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155CheckoutExecutionModule.sol\":{\"keccak256\":\"0xe223548b0a458c57b134511ec1d89fd8ff246e4e95d00c88f539307a759d27ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af693fe86b9cdea8dbce052db16e88466d346a29370a01646e013b3075cfd55\",\"dweb:/ipfs/QmcZRuWwPP1cpPo1dzeGdT21ERH4YzgxTN1tY3UoTNHRkQ\"]},\"src/marketplace/RareERC1155ExecutionModuleBase.sol\":{\"keccak256\":\"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1\",\"dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0x063bfec0e8cf831a2abf94595c25714fb5daddc26263960f38d9e4951772332c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1580164159928504b7b8ef73fab3a4d70d6771f8ed85ebdd41d5a9c602104099\",\"dweb:/ipfs/QmQRVWPsWmDAkNRrECPNrGkejwZJ1QspPcfXbJ673bcyhG\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a\",\"dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"execution","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"uint256","name":"_remainingEth","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutItem","outputs":[{"internalType":"uint256","name":"totalPaid","type":"uint256"},{"internalType":"uint256","name":"newRemainingEth","type":"uint256"}]},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem","name":"_item","type":"tuple","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_grossAmount","type":"uint256"},{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"payable","type":"function","name":"executeCheckoutPayout"}],"devdoc":{"kind":"dev","methods":{"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"details":"Module-only entrypoint; the marketplace proxy does not expose this selector."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"details":"Module-only entrypoint; the marketplace proxy does not expose this selector."}},"version":1},"userdoc":{"kind":"user","methods":{"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"executeCheckoutItem((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),uint256,address,uint256,uint256,address[],uint8[])":{"notice":"Executes one already validated checkout item through a nested delegatecall rollback boundary."},"executeCheckoutPayout((uint8,address,address,address,uint256,uint256,uint256,bytes32[]),address,uint256,uint256,address[],uint8[])":{"notice":"Executes payout for a checkout item through a nested rollback boundary."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155CheckoutExecutionModule.sol":"RareERC1155CheckoutExecutionModule"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155CheckoutExecutionModule.sol":{"keccak256":"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564","urls":["bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a","dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155CheckoutExecutionModule.sol":{"keccak256":"0xe223548b0a458c57b134511ec1d89fd8ff246e4e95d00c88f539307a759d27ee","urls":["bzz-raw://0af693fe86b9cdea8dbce052db16e88466d346a29370a01646e013b3075cfd55","dweb:/ipfs/QmcZRuWwPP1cpPo1dzeGdT21ERH4YzgxTN1tY3UoTNHRkQ"],"license":"MIT"},"src/marketplace/RareERC1155ExecutionModuleBase.sol":{"keccak256":"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862","urls":["bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1","dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0x063bfec0e8cf831a2abf94595c25714fb5daddc26263960f38d9e4951772332c","urls":["bzz-raw://1580164159928504b7b8ef73fab3a4d70d6771f8ed85ebdd41d5a9c602104099","dweb:/ipfs/QmQRVWPsWmDAkNRrECPNrGkejwZJ1QspPcfXbJ673bcyhG"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1","urls":["bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a","dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":167} \ No newline at end of file diff --git a/abis/RareERC1155ContractFactory.json b/abis/RareERC1155ContractFactory.json new file mode 100644 index 0000000..c21c5eb --- /dev/null +++ b/abis/RareERC1155ContractFactory.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createRareERC1155Contract","inputs":[{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_baseURI","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"defaultMinter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"rareERC1155","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultMinter","inputs":[{"name":"_defaultMinter","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRareERC1155","inputs":[{"name":"_rareERC1155","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefaultMinterUpdated","inputs":[{"name":"defaultMinter","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155ContractCreated","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"owner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RareERC1155Updated","inputs":[{"name":"rareERC1155","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ZeroAddressUnsupported","inputs":[]}],"bytecode":{"object":"0x608080604052346100b95760008054336001600160a01b031980831682178455936001600160a01b03939290919084167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08480a36134b4818101906001600160401b038211838310176100a5579082916106a08339039082f09081156100995750169060015416176001556040516105e190816100bf8239f35b604051903d90823e3d90fd5b634e487b7160e01b84526041600452602484fd5b600080fdfe608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea2646970667358221220ff62dca80cdce8473d494dba0fd3a6a7ffc989199cf8279631d73e5afb606f9b64736f6c6343000812003360808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b6040516133e89081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461244157806301ffc9a71461238757806306fdde03146122f55780630de54ba0146122715780630e89341c146120ef5780631542bb9514611e7957806318e97fd114611cf65780632a55205a14611c485780632baf2acb14611bd75780632eb2c2d61461180f5780633512639c1461178f5780633a3d146f1461174f5780633ebc82c51461171657806340c1a064146116ed5780634e1273f41461154f5780634f558e79146115215780636b20c454146112d9578063715018a6146112c0578063894ba833146112715780638da5cb5b1461124857806395d89b4114611175578063a22cb4651461109e578063a7eae21c146109f3578063bd85b039146109c7578063c33ae88f1461099a578063cfdbf2541461097e578063e2200a0b146108ad578063e27a41bf1461085d578063e985e9c514610807578063ee070805146107e3578063f242432a1461044d578063f2fde38b146103c0578063f5298aca146101c35763ffd25aa41461019157600080fd5b346101be5760203660031901126101be576004356000526101636020526020604060002054604051908152f35b600080fd5b346101be576101d1366125c1565b6001600160a01b0390921691903383148015610397575b6101f19061289f565b8215926101fe8415612bb9565b61020782612b94565b9161021184612b94565b946000604051610220816124e9565b52610343575b60005b83518110156102c45761023c818561288b565b51610247828861288b565b51908060005260fb602081815260406000205492848410610280579061027b95949392916000525203604060002055612859565b610229565b60405162461bcd60e51b81526004810183905260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b6064820152608490fd5b60008383878184526097602052604084208385526020528060408520546102ed82821015612c11565b83865260976020526040862085875260205203604085205560405191825260208201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46103416040516124e9565b005b929060005b835181101561038f578061035f61038a928861288b565b5161036a828761288b565b5160005260fb60205261038360406000209182546129bb565b9055612859565b610348565b509092610226565b508260005260986020526040600020336000526020526101f160ff6040600020541690506101e8565b346101be5760203660031901126101be576103d9612468565b6103e1612733565b6001600160a01b038116156103f9576103419061278b565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b346101be5760a03660031901126101be57610466612468565b61046e61247e565b90608480356001600160401b0381116101be5761048f9036906004016126b4565b6001600160a01b039190838316331480156107b8575b6104ae9061289f565b828516156104bc8115612902565b6104c7604435612b94565b6104d2606435612b94565b9185871615610778575b6106ca575b5050604435600052602094609786526040600020848616600052865260406000205461051160643582101561295c565b604435600052609787526040600020858716600052875260643590036040600020556044356000526097865260406000208482166000528652604060002061055c60643582546129bb565b905560405160443581526064358782015284821690858716907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4803b6105a357005b60a060006105ed958895604051978896879586938563f23a6e6160e01b9d8e87523360048801521660248601526044356044860152606435606486015284015260a4830190612525565b0393165af16000918161069b575b5061067157505060019061060d612ab3565b6308c379a01461063c575b5061061f57005b60405162461bcd60e51b81528061063860048201612b3f565b0390fd5b610644612ad1565b90816106505750610618565b61063860405192839262461bcd60e51b845260048401526024830190612525565b6001600160e01b0319161490506103415760405162461bcd60e51b81528061063860048201612a6a565b6106bc919250843d86116106c3575b6106b48183612504565b810190612a4a565b90846105fb565b503d6106aa565b92959194909360005b8451811015610769576106e6818661288b565b51906106f2818861288b565b518260005260fb602052604060002054818110610726576107219360005260fb60205203604060002055612859565b6106d3565b60405162461bcd60e51b81526020600482015260286024820152600080516020613393833981519152604482015267616c537570706c7960c01b60648201528b90fd5b509350939094915085806104e1565b959260009794919592975b86518110156107aa578061079a6107a5928b61288b565b5161036a828a61288b565b610783565b5092959691949093966104dc565b5082841660005260986020526040600020336000526020526104ae60ff6040600020541690506104a5565b346101be5760003660031901126101be57602060ff61016154166040519015158152f35b346101be5760403660031901126101be57610820612468565b61082861247e565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346101be5760203660031901126101be57610876612733565b60ff610161541661089b576101665461034190600435906001600160a01b0316613288565b604051637abbf1c960e01b8152600490fd5b346101be5760403660031901126101be576004356108c961247e565b906108d2612733565b60ff610161541661089b578060005261016360205260ff6002604060002001541615610966576001600160a01b0382161561095457806000526101686020526040600020549160648302928084046064149015171561093e576001600160601b036103419316916131db565b634e487b7160e01b600052601160045260246000fd5b604051637827912560e01b8152600490fd5b6024906040519063c927e5bf60e01b82526004820152fd5b346101be5760003660031901126101be57602060405160648152f35b346101be5760203660031901126101be576004356000526101656020526020604060002054604051908152f35b346101be5760203660031901126101be5760043560005260fb6020526020604060002054604051908152f35b346101be5760a03660031901126101be576004356001600160401b0381116101be57610a23903690600401612594565b906024356001600160401b0381116101be57610a43903690600401612594565b6044356001600160401b0381116101be57610a62903690600401612594565b90929091906064356001600160a01b03811690036101be57608435956001600160a01b03871687036101be576000549560ff8760081c161596878098611091575b801561107a575b1561101e5760ff1981166001176000558761100c575b506064356001600160a01b031615610954576001600160401b038211610e14578190610aee61015f54612494565b601f8111610f9e575b50600090601f8311600114610f1557600092610f0a575b50508160011b916000199060031b1c19161761015f555b6001600160401b038211610e1457610b3f61016054612494565b601f8111610ea8575b50600090601f8311600114610e3557610bb39493929160009183610e2a575b50508160011b916000199060031b1c191617610160555b61016160ff198154169055610ba360ff60005460081c16610b9e81612cbd565b612cbd565b610bac3361278b565b369161266e565b91610bc960ff60005460081c16610b9e81612cbd565b82516001600160401b038111610e1457610be4609954612494565b601f8111610daf575b506020601f8211600114610d485781929394600092610d3d575b50508160011b916000199060031b1c1916176099555b610c3b60ff60005460081c16610c3281612cbd565b610b9e81612cbd565b61016680546001600160a01b0319166064356001600160a01b0316179055600a610167556040516103e890602090610c72816124ce565b6001600160a01b0360643581168083529290910192909252607d60a31b1761012d558116610ce5575b50610ca760643561278b565b610cad57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b6001600160a01b031660008181526101646020908152604091829020805460ff1916600190811790915591519182527f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b591a281610c9b565b015190508480610c07565b601f198216906099600052806000209160005b818110610d9757509583600195969710610d7e575b505050811b01609955610c1d565b015160001960f88460031b161c19169055848080610d70565b9192602060018192868b015181550194019201610d5b565b60996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00601f830160051c81019160208410610e0a575b601f0160051c01905b818110610dfe5750610bed565b60008155600101610df1565b9091508190610de8565b634e487b7160e01b600052604160045260246000fd5b013590508780610b67565b61016060005260206000209160005b601f1985168110610e905750918391600193610bb3979695601f19811610610e76575b505050811b0161016055610b7e565b0135600019600384901b60f8161c19169055878080610e67565b90926020600181928686013581550194019101610e44565b6101606000527fec7e130cdeeae65215fabbcddb1de429e603c4887cc659532eda903e49339663601f840160051c810160208510610f03575b601f830160051c82018110610ef7575050610b48565b60008155600101610ee1565b5080610ee1565b013590508880610b0e565b61015f600090815293507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9915b601f1984168510610f86576001945083601f19811610610f6c575b505050811b0161015f55610b25565b0135600019600384901b60f8161c19169055888080610f5d565b81810135835560209485019460019093019201610f42565b61015f6000529091507f8c9815a58669fc89297bdc7dd447c098116f98e79093735c0992d0967b696ed9601f840160051c810160208510611005575b90849392915b601f830160051c82018110610ff6575050610af7565b60008155859450600101610fe0565b5080610fda565b61ffff19166101011760005588610ac0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610aaa5750600160ff821614610aaa565b50600160ff821610610aa3565b346101be576110ac36612565565b6001600160a01b039091169033821461111e573360005260986020526040600020826000526020526110ee8160406000209060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b346101be5760003660031901126101be5760405160009061016080549061119b82612494565b90818452600192838116908160001461122057506001146111df575b6111db846111c781880382612504565b604051918291602083526020830190612525565b0390f35b90935060005260209283600020916000925b82841061120d57505050816111db936111c792820101936111b7565b80548585018701529285019281016111f1565b6111db96506111c79450602092508593915060ff191682840152151560051b820101936111b7565b346101be5760003660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760003660031901126101be5761128a612733565b610161805460ff19166001179055337f793bc6423dd0257d64f9d47db72fd4b2162f4541aa41740ba1c5fb5e2cd41bcd600080a2005b346101be5760003660031901126101be57610954612733565b346101be5760603660031901126101be576112f2612468565b6024906001600160401b039082358281116101be57611315903690600401612650565b9160449081359081116101be57611330903690600401612650565b6001600160a01b039092169233841480156114f8575b61134f9061289f565b831561135b8115612bb9565b61136882518551146129c8565b6000604051611376816124e9565b526114c0575b60005b815181101561141857611392818361288b565b5161139d828661288b565b51908060005260fb6020818152604060002054928484106113d657906113d195949392916000525203604060002055612859565b61137f565b60405162461bcd60e51b8152600481018390526028818d0152600080516020613393833981519152818a015267616c537570706c7960c01b6064820152608490fd5b83828660005b825181101561148d5780611435611488928561288b565b51611440828761288b565b519080600052609760209080825260406000208760005282526040600020549261146c85851015612c11565b6000528152604060002090866000525203604060002055612859565b61141e565b50906000805160206133538339815191526114b2600094604051918291339583612a25565b0390a46103416040516124e9565b9260009491945b84518110156114ee57806114de6114e9928661288b565b5161036a828861288b565b6114c7565b509293909361137c565b5083600052609860205260406000203360005260205261134f60ff604060002054169050611346565b346101be5760203660031901126101be5760043560005260fb60205260206040600020541515604051908152f35b346101be5760403660031901126101be576004356001600160401b038082116101be57366023830112156101be5781600401359061158c826125eb565b9261159a6040519485612504565b82845260209260248486019160051b830101913683116101be57602401905b8282106116ce575050506024359081116101be576115db903690600401612650565b8251815103611677578251926115f0846125eb565b936115fe6040519586612504565b80855261160d601f19916125eb565b01368486013760005b81518110156116605761165b9061164b6001600160a01b03611638838661288b565b5116611644838761288b565b51906127d4565b611655828861288b565b52612859565b611616565b5050506111db6040519282849384528301906126ff565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b81356001600160a01b03811681036101be5781529084019084016115b9565b346101be5760203660031901126101be576033546040516001600160a01b039091168152602090f35b346101be5760203660031901126101be5761172f612468565b611737612733565b60ff610161541661089b576101675461034191613288565b346101be5760203660031901126101be576001600160a01b03611770612468565b16600052610164602052602060ff604060002054166040519015158152f35b346101be5760603660031901126101be576117a8612468565b6001600160401b03906024358281116101be576117c99036906004016126cf565b926044359081116101be576117e29036906004016126cf565b919060ff610161541661089b5761180161180992610341963691612602565b923691612602565b91612d1d565b346101be5760031960a0368201126101be57611829612468565b9061183261247e565b6044908135926001600160401b03938481116101be57611856903690600401612650565b606480358681116101be5761186f903690600401612650565b9460849687359081116101be5761188a9036906004016126b4565b6001600160a01b039489861633148015611bac575b6118a89061289f565b6118b585518951146129c8565b858716156118c38115612902565b868b1615611b69575b611ab4575b60005b855181101561196957806118eb611964928861288b565b518c6118f7838d61288b565b519180600052609790838c60209484865260406000208282166000528652604060002054916119288484101561295c565b846000528587526040600020911660005285520360406000205560005281526040600020908a8c166000525261038360406000209182546129bb565b6118d4565b50888a9897969497896040518860008051602061335383398151915289808d169416928061199987339583612a25565b0390a4873b6119a457005b60405198899788968863bc197c8160e01b9d8e8a523360048b0152166024890152870160a0905260a487016119d8916126ff565b908487830301908701526119eb916126ff565b9184830301908401526119fd91612525565b03921691815a602094600091f160009181611a94575b50611a6c5750506001611a24612ab3565b6308c379a014611a35575b61061f57005b611a3d612ad1565b80611a485750611a2f565b60405162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916146103415760405162461bcd60e51b81528061063860048201612a6a565b611aad91925060203d81116106c3576106b48183612504565b9083611a13565b9796949060009993999692965b8551811015611b5957611ad4818761288b565b51611adf828961288b565b519080600052602060fb815260406000205491838310611b1857611b139493929160fb916000525203604060002055612859565b611ac1565b508b9067616c537570706c7960c01b8f6000805160206133938339815191528e6040519462461bcd60e51b8652600486015260286024860152840152820152fd5b50909496979892989591956118d1565b99969498959392919060005b8a51811015611b9d57808b61036a82611b91611b98958f61288b565b519261288b565b611b75565b509091929395989496996118cc565b50858a1660005260986020526040600020336000526020526118a860ff60406000205416905061189f565b346101be57611be5366125c1565b9160ff610161541661089b57602092611c409160405190611c05826124ce565b6001825285368184013760405192611c1c846124ce565b6001845286368186013785611c3084612868565b52611c3a84612868565b52612d1d565b604051908152f35b346101be5760403660031901126101be5760243560043560005261012e60205260406000209060405191611c7b836124ce565b546001600160a01b0380821680855260a09290921c6020850152929015611cd3575b6001600160601b036020820151169182810292818404149015171561093e57604092612710915116918351928352046020820152f35b50604051611ce0816124ce565b61012d54838116825260a01c6020820152611c9d565b346101be5760403660031901126101be576004356001600160401b036024358181116101be57611d2a903690600401612594565b9190611d34612733565b60ff610161541661089b57836000526101639160209280845260ff6002604060002001541615611e6057856000528352600180604060002001918511610e1457611d8885611d828454612494565b84612c69565b6000601f8611600114611de95791858060008051602061337383398151915297969593611dd995600093611dde575b501b906000198760031b1c19161790555b60405193838594855284019161315b565b0390a2005b85013592508a611db7565b601f1986169083600052856000209160005b818110611e4b575091879695939160008051602061337383398151915298611dd9969410611e31575b505085811b019055611dc8565b840135600019600389901b60f8161c191690558880611e24565b86830135845592840192918701918701611dfb565b60405163c927e5bf60e01b815260048101879052602490fd5b346101be5760603660031901126101be576001600160401b036004358181116101be57611eaa903690600401612594565b602435916001600160a01b03604435818116938482036101be57611ecc612733565b60ff610161541661089b5785156120dd5784156109545761016295611ef18754612859565b809755604051606081018181108a821117610e1457604052818152611f1736848861266e565b986020998a83019081526040830191600183528a6000526101638c526040600020935184556001840191518051918211610e1457611f5f82611f598554612494565b85612c69565b8c908d601f841160011461206c5750918060029492611fad979694600092612061575b50508160011b916000199060031b1c19161790555b51151591019060ff801983541691151516179055565b61016754928760005261016889528360406000205560648402938085046064149015171561093e578794612010612056926001600160601b037fc07473765c308da8ff95c4974c60af7332d93777f002550fa063b77064a6f7b2971690886131db565b856000805160206133738339815191526120368c6040519181839283528201898d61315b565b0390a26033541695604051938493845260408b850152604084019161315b565b0390a4604051908152f35b015190508f80611f82565b9190601f1984168560005283600020936000905b8282106120c5575050926001928592611fad99989660029896106120ac575b505050811b019055611f97565b015160001960f88460031b161c191690558f808061209f565b80600186978294978701518155019601940190612080565b604051631dd0e19360e01b8152600490fd5b346101be576020806003193601126101be5760043560005261016381526001806040600020019082604051809360009080549061212b82612494565b80855291868116908115612250575060011461220f575b505061215092500383612504565b81511561216e5750905b6111db604051928284938452830190612525565b905060405190600090836099549161218583612494565b928386528582821691826000146121ef5750506001146121b5575b505050816121af910382612504565b9061215a565b91909250609960005282600020916000925b8284106121dc575050508201018183856121a0565b80548685018601529284019281016121c7565b60ff19168482015293151560051b840190920193508591508690506121a0565b9091506000528260002090846000925b828410612239575050509161215092820101859287612142565b80548885018701528794509285019286910161221f565b91505061215094925060ff191682840152151560051b820101859287612142565b346101be5761227f36612565565b90612288612733565b60ff610161541661089b576001600160a01b03169081156109545760207f88cb6d0a56ba73e5f130e544fa6649e4173e9051add4f3fc61b46502074b44b5918360005261016482526122ea8160406000209060ff801983541691151516179055565b6040519015158152a2005b346101be5760003660031901126101be5760405160009061015f80549061231b82612494565b9081845260019283811690816000146112205750600114612346576111db846111c781880382612504565b90935060005260209283600020916000925b82841061237457505050816111db936111c792820101936111b7565b8054858501870152928501928101612358565b346101be5760203660031901126101be5760043563ffffffff60e01b81168091036101be57602090635a08b45360e11b8114908115612430575b81156123d3575b506040519015158152f35b63152a902d60e11b8114915081156123ed575b50826123c8565b636cdb3d1360e11b81149150811561241f575b811561240e575b50826123e6565b6301ffc9a760e01b14905082612407565b6303a24d0760e21b81149150612400565b631030681960e21b811491506123c1565b346101be5760403660031901126101be576020611c4061245f612468565b602435906127d4565b600435906001600160a01b03821682036101be57565b602435906001600160a01b03821682036101be57565b90600182811c921680156124c4575b60208310146124ae57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124a3565b604081019081106001600160401b03821117610e1457604052565b602081019081106001600160401b03821117610e1457604052565b90601f801991011681019081106001600160401b03821117610e1457604052565b919082519283825260005b848110612551575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612530565b60409060031901126101be576004356001600160a01b03811681036101be579060243580151581036101be5790565b9181601f840112156101be578235916001600160401b0383116101be57602083818601950101116101be57565b60609060031901126101be576004356001600160a01b03811681036101be57906024359060443590565b6001600160401b038111610e145760051b60200190565b929161260d826125eb565b9161261b6040519384612504565b829481845260208094019160051b81019283116101be57905b8282106126415750505050565b81358152908301908301612634565b9080601f830112156101be5781602061266b93359101612602565b90565b9291926001600160401b038211610e145760405191612697601f8201601f191660200184612504565b8294818452818301116101be578281602093846000960137010152565b9080601f830112156101be5781602061266b9335910161266e565b9181601f840112156101be578235916001600160401b0383116101be576020808501948460051b0101116101be57565b90815180825260208080930193019160005b82811061271f575050505090565b835185529381019392810192600101612711565b6033546001600160a01b0316330361274757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b031690811561280157600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b600019811461093e5760010190565b8051156128755760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156128755760209160051b010190565b156128a657565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b1561290957565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561296357565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9190820180921161093e57565b156129cf57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b9091612a3c61266b936040845260408401906126ff565b9160208184039101526126ff565b908160209103126101be57516001600160e01b0319811681036101be5790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11612ac057565b905060046000803e60005160e01c90565b600060443d1061266b57604051600319913d83016004833e81516001600160401b03918282113d602484011117612b2e57818401948551938411612b36573d85010160208487010111612b2e575061266b92910160200190612504565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b60405190612ba1826124ce565b6001825260203681840137612bb582612868565b5290565b15612bc057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b15612c1857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b90601f8111612c7757505050565b600091825260208220906020601f850160051c83019410612cb3575b601f0160051c01915b828110612ca857505050565b818155600101612c9c565b9092508290612c93565b15612cc457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b90916001600160a01b038083169291908315610954576033541633141580613141575b61312957835115613117578351815103613105578351926064938481116130e7575060015b8551811015612dd557612d78818761288b565b516000198201828111612dc057612d8f908861288b565b511015612d9e57600101612d65565b612daa6024918761288b565b5160405190636a671dfb60e11b82526004820152fd5b60246000634e487b7160e01b81526011600452fd5b509493909192946000945b8251861015612ebf57612df3868461288b565b519586600052610163602081815260409060ff60028360002001541615612ea757612e1e848961288b565b5115612e96578960005261016590818152612e488360002054612e41878c61288b565b51906129bb565b938b60005281528260002054808511612e74575060009a8b525290972096909655600190950194612de0565b8b8d9186865192630d6f5ed560e11b8452600484015260248301526044820152fd5b815163d11b25af60e01b8152600490fd5b815163c927e5bf60e01b8152600481018b9052602490fd5b92919390959450604092835195612ed5876124e9565b60008752612ee686518551146129c8565b60005b8651811015612f285780612f00612f23928761288b565b51612f0b828a61288b565b5160005260fb602052610383886000209182546129bb565b612ee9565b5090919560005b8651811015612f795780612f46612f74928761288b565b51612f51828a61288b565b5160005260206097815288600020908c60005252610383886000209182546129bb565b612f2f565b5091969093958160008851600080516020613353833981519152339180612fa18a8d83612a25565b0390a43b612fb2575b505050505050565b6130056000602094613014895197889687958694612ff263bc197c8160e01b9d8e885233600489015288602489015260a0604489015260a48801906126ff565b90600319948588840301908801526126ff565b91848303016084850152612525565b03925af1600091816130c7575b5061309b5750506001613032612ab3565b6308c379a014613065575b61304e57505b388080808080612faa565b5162461bcd60e51b81528061063860048201612b3f565b61306d612ad1565b80613078575061303d565b825162461bcd60e51b815260206004820152908190610638906024830190612525565b6001600160e01b031916036130b05750613043565b5162461bcd60e51b81528061063860048201612a6a565b6130e091925060203d81116106c3576106b48183612504565b9038613021565b604490856040519163f80a484560e01b835260048301526024820152fd5b6040516305f8ded760e21b8152600490fd5b60405163c2e5347d60e01b8152600490fd5b60405163fc8b94cd60e01b8152336004820152602490fd5b503360005261016460205260ff6040600020541615612d40565b908060209392818452848401376000828201840152601f01601f1916010190565b1561318357565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b916001600160601b0316906131f461271083111561317c565b6001600160a01b039081169283156132435760405193613213856124ce565b84526020808501938452600091825261012e9052604090209251915160a01b6001600160a01b0319169116179055565b60405162461bcd60e51b815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b6001600160a01b039081169190821561095457606482116133325760018060a01b0319926101668185825416179055826101675560648302928084046064149015171561093e57613320906001600160601b0384166132eb61271082111561317c565b60206040516132f9816124ce565b838152015261012d80546001600160a01b0319166001600160a01b03909216919091179055565b61012d9283549260a01b169116179055565b604051637bbc1b3760e11b81526004810183905260646024820152604490fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b455243313135353a206275726e20616d6f756e74206578636565647320746f74a2646970667358221220b7720fa90ac9df32d7bfb6ee34e640368972d81f7eb46827b58be3edc6478e5764736f6c63430008120033","sourceMap":"542:1772:83:-:0;;;;;;;2518:6:35;542:1772:83;;719:10:49;-1:-1:-1;;;;;;542:1772:83;;;;;;;;-1:-1:-1;;;;;542:1772:83;2518:6:35;542:1772:83;;719:10:49;542:1772:83;;2566:40:35;2518:6;;2566:40;929:17:83;;;;;-1:-1:-1;;;;;929:17:83;;;;;;;;;;;;;;;;;;;;;;;542:1772;;;;;;;;;;;;;;;;;;929:17;542:1772;;;;;;;;;;929:17;-1:-1:-1;;;542:1772:83;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060408181526004908136101561001657600080fd5b600092833560e01c908163014812a2146104da5750806318cf6f4214610473578063389dee181461044a578063715018a6146103ed5780638667f619146101f85780638da5cb5b146101cc578063e2be1a081461014a5763f2fde38b1461007c57600080fd5b34610146576020366003190112610146576001600160a01b03823581811693919290849003610142576100ad610532565b83156100f05750506000548260018060a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b8280fd5b5090346101465760203660031901126101465780356001600160a01b03811692908390036101c85761017a610532565b82156101bb575050600180546001600160a01b031916821790557fe329ca164c11428fa5ee865054c08ccee6f2d38eda61e9e6a35b3081a472daed8280a280f35b51637827912560e01b8152fd5b8380fd5b8382346101f457816003193601126101f457905490516001600160a01b039091168152602090f35b5080fd5b508290346101f457600319906060368301126101465767ffffffffffffffff84358181116101425761022d90369087016104ff565b91906024358281116103e95761024690369089016104ff565b95906044358481116103e55761025f9036908b016104ff565b600154608881901c62ffffff16763d602d80600a3d3981f3363d3d373d3d3d363d73000000178b5260781b6001600160781b0319166e5af43d82803e903d91602b57fd5bf3176020526001600160a01b039890929089603760098df016998a156103a95760025416958a3b156103a557938b9693610313610322948f979461030360a09a968f519e8f9c8d9c8d6329fab88760e21b90528d015260a48c019161058a565b91868a84030160248b015261058a565b9286840301604487015261058a565b903360648401526084830152038183885af1801561039b57610371575b5050602093505191817f0c069e30a19668076937a9266318f1876e9c7dabdae788aaad8f5c73599aea89339280a38152f35b81949294116103885760209450835291848061033f565b634e487b7160e01b825260418552602482fd5b83513d87823e3d90fd5b8b80fd5b895162461bcd60e51b81526020818f01526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606490fd5b8880fd5b8680fd5b8334610447578060031936011261044757610406610532565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b80fd5b8382346101f457816003193601126101f45760025490516001600160a01b039091168152602090f35b5050346101f45760203660031901126101f457356001600160a01b038116908190036101f4576104a1610532565b600280546001600160a01b031916821790557feedfae894237292077aa1e4fcca7f9a0a2aabeda165c2ff69a08cfd365d7c9eb8280a280f35b8490346101f457816003193601126101f4576001546001600160a01b03168152602090f35b9181601f8401121561052d5782359167ffffffffffffffff831161052d576020838186019501011161052d57565b600080fd5b6000546001600160a01b0316330361054657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b908060209392818452848401376000828201840152601f01601f191601019056fea2646970667358221220ff62dca80cdce8473d494dba0fd3a6a7ffc989199cf8279631d73e5afb606f9b64736f6c63430008120033","sourceMap":"542:1772:83:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:83;;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;;;;;;;1063:62:35;;:::i;:::-;2162:22;;542:1772:83;;;;;;;;;;;;;;;;;;;2566:40:35;542:1772:83;2566:40:35;;542:1772:83;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;542:1772:83;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:83;;;;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;;1063:62:35;;:::i;:::-;1161:26:83;;1157:63;;-1:-1:-1;;542:1772:83;;;-1:-1:-1;;;;;;542:1772:83;;;;;1338:32;;;;542:1772;;1157:63;542:1772;-1:-1:-1;;;1196:24:83;;;542:1772;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;2034:11;542:1772;1101:558:38;;;;;;;;;;;;-1:-1:-1;;;;;;1101:558:38;;;542:1772:83;1101:558:38;-1:-1:-1;;;;;542:1772:83;;;;;1101:558:38;;;;542:1772:83;1676:22:38;;;542:1772:83;;2207:13;542:1772;;2145:76;;;;;;542:1772;;;;;;;;;;;;;;;;;;;;;;;;;2145:76;;;;542:1772;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;2195:10;;542:1772;;;;;;;;2145:76;;;;;;;;;;;;542:1772;;;;;;;2195:10;;2237:45;2195:10;2237:45;;;542:1772;;;2145:76;542:1772;;;;;;;;;;;;2145:76;;;;;542:1772;-1:-1:-1;;;542:1772:83;;;;;;;;2145:76;542:1772;;;;;;;;;2145:76;542:1772;;;;;;-1:-1:-1;;;542:1772:83;;;;;;;;;;;;-1:-1:-1;;;542:1772:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;1063:62:35;;:::i;:::-;542:1772:83;;-1:-1:-1;;;;;;542:1772:83;;;;;;-1:-1:-1;;;;;542:1772:83;2566:40:35;542:1772:83;;2566:40:35;542:1772:83;;;;;;;;;;;;;;;;;;;665:37;542:1772;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;;;;;;;;;-1:-1:-1;;542:1772:83;;;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;1063:62:35;;:::i;:::-;1600:30:83;542:1772;;-1:-1:-1;;;;;;542:1772:83;;;;;1645:36;;;;542:1772;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:1772:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;1359:130:35;1273:6;542:1772:83;-1:-1:-1;;;;;542:1772:83;719:10:49;1422:23:35;542:1772:83;;1359:130:35:o;542:1772:83:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;542:1772:83;;;;;;;;-1:-1:-1;;542:1772:83;;;;:::o","linkReferences":{}},"methodIdentifiers":{"createRareERC1155Contract(string,string,string)":"8667f619","defaultMinter()":"389dee18","owner()":"8da5cb5b","rareERC1155()":"014812a2","renounceOwnership()":"715018a6","setDefaultMinter(address)":"18cf6f42","setRareERC1155(address)":"e2be1a08","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ZeroAddressUnsupported\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"defaultMinter\",\"type\":\"address\"}],\"name\":\"DefaultMinterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"RareERC1155ContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rareERC1155\",\"type\":\"address\"}],\"name\":\"RareERC1155Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseURI\",\"type\":\"string\"}],\"name\":\"createRareERC1155Contract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMinter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rareERC1155\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_defaultMinter\",\"type\":\"address\"}],\"name\":\"setDefaultMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rareERC1155\",\"type\":\"address\"}],\"name\":\"setRareERC1155\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Deploys EIP-1167 minimal proxies initialized with the caller as collection owner.\",\"events\":{\"DefaultMinterUpdated(address)\":{\"params\":{\"defaultMinter\":\"New default minter address. Zero address disables default minter approval.\"}},\"RareERC1155ContractCreated(address,address)\":{\"params\":{\"contractAddress\":\"Address of the newly created ERC1155 clone.\",\"owner\":\"Initial owner of the clone.\"}},\"RareERC1155Updated(address)\":{\"params\":{\"rareERC1155\":\"New ERC1155 implementation address.\"}}},\"kind\":\"dev\",\"methods\":{\"createRareERC1155Contract(string,string,string)\":{\"params\":{\"_baseURI\":\"Base URI used by the collection when a token id has no token-specific URI.\",\"_name\":\"Human-readable collection name.\",\"_symbol\":\"Human-readable collection symbol.\"},\"returns\":{\"_0\":\"Address of the newly created ERC1155 clone.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDefaultMinter(address)\":{\"params\":{\"_defaultMinter\":\"Address approved to mint on newly created clones, or zero address for none.\"}},\"setRareERC1155(address)\":{\"params\":{\"_rareERC1155\":\"Address of the replacement implementation.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"defaultMinter\":{\"return\":\"Default minter address. Zero address means no default minter.\",\"returns\":{\"_0\":\"Default minter address. Zero address means no default minter.\"}},\"rareERC1155\":{\"return\":\"ERC1155 implementation address.\",\"returns\":{\"_0\":\"ERC1155 implementation address.\"}}},\"title\":\"RareERC1155ContractFactory\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddressUnsupported()\":[{\"notice\":\"Reverted when an implementation address is the zero address.\"}]},\"events\":{\"DefaultMinterUpdated(address)\":{\"notice\":\"Emitted when the owner changes the default minter for new clones.\"},\"RareERC1155ContractCreated(address,address)\":{\"notice\":\"Emitted when the factory creates and initializes a collection clone.\"},\"RareERC1155Updated(address)\":{\"notice\":\"Emitted when the owner changes the implementation cloned by the factory.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Deploys the initial ERC1155 implementation used for clones.\"},\"createRareERC1155Contract(string,string,string)\":{\"notice\":\"Creates a new initialized ERC1155 collection clone.\"},\"defaultMinter()\":{\"notice\":\"Returns the optional minter approved on each newly created collection.\"},\"rareERC1155()\":{\"notice\":\"Returns the ERC1155 implementation address cloned by the factory.\"},\"setDefaultMinter(address)\":{\"notice\":\"Updates the optional minter approved during clone initialization.\"},\"setRareERC1155(address)\":{\"notice\":\"Updates the ERC1155 implementation address cloned by future factory calls.\"}},\"notice\":\"Clone factory for RARE Protocol ERC1155 collections.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/ERC1155/RareERC1155ContractFactory.sol\":\"RareERC1155ContractFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7\",\"dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol\":{\"keccak256\":\"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98\",\"dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol\":{\"keccak256\":\"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8\",\"dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol\":{\"keccak256\":\"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9\",\"dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38\",\"dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e\",\"dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/ERC1155/IRareERC1155ContractFactory.sol\":{\"keccak256\":\"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179\",\"dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb\"]},\"src/token/ERC1155/RareERC1155.sol\":{\"keccak256\":\"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a\",\"dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4\"]},\"src/token/ERC1155/RareERC1155ContractFactory.sol\":{\"keccak256\":\"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951\",\"dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ZeroAddressUnsupported"},{"inputs":[{"internalType":"address","name":"defaultMinter","type":"address","indexed":true}],"type":"event","name":"DefaultMinterUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true}],"type":"event","name":"RareERC1155ContractCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"rareERC1155","type":"address","indexed":true}],"type":"event","name":"RareERC1155Updated","anonymous":false},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createRareERC1155Contract","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultMinter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rareERC1155","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_defaultMinter","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultMinter"},{"inputs":[{"internalType":"address","name":"_rareERC1155","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRareERC1155"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"createRareERC1155Contract(string,string,string)":{"params":{"_baseURI":"Base URI used by the collection when a token id has no token-specific URI.","_name":"Human-readable collection name.","_symbol":"Human-readable collection symbol."},"returns":{"_0":"Address of the newly created ERC1155 clone."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDefaultMinter(address)":{"params":{"_defaultMinter":"Address approved to mint on newly created clones, or zero address for none."}},"setRareERC1155(address)":{"params":{"_rareERC1155":"Address of the replacement implementation."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Deploys the initial ERC1155 implementation used for clones."},"createRareERC1155Contract(string,string,string)":{"notice":"Creates a new initialized ERC1155 collection clone."},"defaultMinter()":{"notice":"Returns the optional minter approved on each newly created collection."},"rareERC1155()":{"notice":"Returns the ERC1155 implementation address cloned by the factory."},"setDefaultMinter(address)":{"notice":"Updates the optional minter approved during clone initialization."},"setRareERC1155(address)":{"notice":"Updates the ERC1155 implementation address cloned by future factory calls."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/ERC1155/RareERC1155ContractFactory.sol":"RareERC1155ContractFactory"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol":{"keccak256":"0xc3e465e1fdd0e491688ad75ef1b946e1680e7f9f78bf5beeefd6daed8693c856","urls":["bzz-raw://aeeca7e860afd73ce8f694de1696a5150ef5b94c9877661fc2db7283446fccb7","dweb:/ipfs/QmdbxAah67ohhR8ZEdFfDcVRAeFJ6JaGb49r6aiAQ54nTe"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155ReceiverUpgradeable.sol":{"keccak256":"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b","urls":["bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce","dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol":{"keccak256":"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8","urls":["bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83","dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol":{"keccak256":"0x048a492eee88c80ecc0354486e8e0ab99490b44a6fb28833b3cfb45d573f18d7","urls":["bzz-raw://4784249720c8ce8a9eaaf148a8cbe19484897f5b2774cd812f618acc51482b98","dweb:/ipfs/QmbDqi3H1rhmbHFnnZq5VMxtSXHWUQtjnsFsksg6mc1otm"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol":{"keccak256":"0xf7bdbcbb9fcf42997f280db8c02070e9c561406e6971ff680c6c43f92065ac9e","urls":["bzz-raw://a158fa95bbb45b9c64930c811108c15ff6303a13e170fc13666c3bdd660ec2b8","dweb:/ipfs/Qmepwqn4jtoQCmvgSK9HVRiWmyvdHdEMg7eqGVwSVVsscc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol":{"keccak256":"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448","urls":["bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9","dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/common/ERC2981Upgradeable.sol":{"keccak256":"0xaffa1f1de8169c3915df40f96e6fe67628aed4d496c6a835e55763dbd0c28f6f","urls":["bzz-raw://ba6d7ef5caf0c538c2db5ca20ff8da6b46d1819927beb3b5cab15c006e0ea1f9","dweb:/ipfs/QmciEpegd4BhA7XdV3WMv79yUdrJa3waM9fMoHrSv4thE4"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a","urls":["bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7","dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0x923b9774b81c1abfb992262ae7763b6e6de77b077a7180d53c6ebb7b1c8bd648","urls":["bzz-raw://53445dc0431f9b45c06f567c6091da961d4087bec0010cca5bd62100fa624a38","dweb:/ipfs/QmNvBYpBv183czrAqNXr76E8M3LF93ouAJFeAcHfb59Rcx"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x0e1fe02da411a6293004e5ee85bdd1facef5f1b6ef2aab8d36c73f0d77b448db","urls":["bzz-raw://c5bfd474499866fe24ac6b88eb92969395baf1e644a0f0b0054e66f9ae90c00e","dweb:/ipfs/QmS5j268UauZARToNJazEBJDWvWM35j8kHx779PF3c5rib"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/ERC1155/IRareERC1155ContractFactory.sol":{"keccak256":"0x6ba62d51baf2e8eee4a268bb872c7f221be7c5d3b7b7dcd9e55edbee14005e63","urls":["bzz-raw://866433a352dd29688452b8c12cc50347fb9061c1e2496c860ed4c9405738d179","dweb:/ipfs/QmYXdH3Por7gpzAJF3wzYhJ8naY6xxCx8o1QczSsGJMQnb"],"license":"MIT"},"src/token/ERC1155/RareERC1155.sol":{"keccak256":"0x580c03eaabe68708b30d0627a8ea44ebb7de24150a0ad6047266ef44cf2731a3","urls":["bzz-raw://7320879b3bb31bc0226013499865f7cc605f2845b4fb6700daa94cf5e928622a","dweb:/ipfs/QmesNVNev1i2iR57BFFAKa64xeBLqTTUqVBECDgYd46MT4"],"license":"MIT"},"src/token/ERC1155/RareERC1155ContractFactory.sol":{"keccak256":"0x1d75d40825831b017450e31e6b118bd27746a014099c3a3900b33f7e6c035036","urls":["bzz-raw://9584f968656c2d2c73993d8f3f4b2ae82dfb5788329544d1c620826d2d10b951","dweb:/ipfs/QmT3VCoEuHKcBaVU3P6bRU9aroGmEQgjXB3QB6Liejdrjt"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"}},"version":1},"id":83} \ No newline at end of file diff --git a/abis/RareERC1155ExecutionModuleBase.json b/abis/RareERC1155ExecutionModuleBase.json new file mode 100644 index 0000000..cb5a7da --- /dev/null +++ b/abis/RareERC1155ExecutionModuleBase.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"RareERC1155ExecutionModuleBase\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Shared validation helpers for delegatecall-only ERC1155 marketplace execution modules.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155ExecutionModuleBase.sol\":\"RareERC1155ExecutionModuleBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155ExecutionModuleBase.sol\":{\"keccak256\":\"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1\",\"dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a\",\"dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155ExecutionModuleBase.sol":"RareERC1155ExecutionModuleBase"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155ExecutionModuleBase.sol":{"keccak256":"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862","urls":["bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1","dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1","urls":["bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a","dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":168} \ No newline at end of file diff --git a/abis/RareERC1155Listings.json b/abis/RareERC1155Listings.json new file mode 100644 index 0000000..249631b --- /dev/null +++ b/abis/RareERC1155Listings.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155Listings.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_address","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60a08060405234620000e157306080526000549060ff8260081c166200008f575060ff8082160362000053575b604051616b939081620000e782396080518181816111220152818161172901526134920152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002c565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630a6ce31314610277578063176ab4401461027257806321ede0321461026d57806328fbba03146102685780632c740844146102635780632f79f3351461025e5780633492e5a8146102595780633659cfe614610254578063369679a41461024f578063373a94121461024a5780634f1ef2861461024557806352d1902d14610240578063552f791d1461023b5780635a501f8f14610236578063614bd944146102315780636442950e1461022c5780636e2f4d8b14610227578063715018a61461022257806376902b831461021d5780637777e6d7146102185780637f358230146102135780638760251a1461020e578063882796f1146102095780638da5cb5b14610204578063af231a58146101ff578063b187bd26146101fa578063be542141146101f5578063bf3d90f8146101f0578063c7c83d17146101eb578063c7ec1b98146101e6578063cfdbf254146101e1578063d7a9fb7c146101dc578063d80b23e3146101d7578063e4e87e3b146101d2578063f1035744146101cd578063f2fde38b146101c8578063ff3a52d4146101c35763ff5c83a4146101be57600080fd5b61301f565b612d26565b612c95565b612bc2565b612ae8565b612a0e565b612935565b612919565b61284a565b612814565b6127a4565b6125d6565b61250a565b61243f565b612416565b6123a7565b612378565b61229e565b611e60565b611dba565b611d5c565b611c7b565b611b1b565b6118f9565b611814565b6117d6565b611716565b611690565b6113c1565b61130d565b6110fb565b611025565b610e9f565b610d9c565b610d53565b610c56565b610b7f565b6102c2565b6001600160a01b0381160361028d57565b600080fd5b9181601f8401121561028d578235916001600160401b03831161028d576020808501946060850201011161028d57565b608036600319011261028d576102d960043561027c565b6102e460243561027c565b6102ef60443561027c565b6064356001600160401b03811161028d5761030e903690600401610292565b61031661423c565b60ff600080516020616b1e8339815191525416610b6d576103378183615e17565b6001600160a01b039133602435841614610b4b576103566044356155bc565b610361600435615678565b600080516020616a5e833981519152546103af90602090610392906001600160a01b03165b6001600160a01b031690565b6040518093819263e985e9c560e01b835260243560048401613c29565b038187600435165afa90811561074857600091610b1c575b5015610afc576103d6826142c7565b926103e0836142c7565b6103f16103ec85613ef4565b6142c7565b6103fd6103ec86613ef4565b9561040786614622565b9660008061042c610386600080516020616b3e8339815191525460018060a01b031690565b89831061089857506104419150604435615f35565b8660005b878282106107f35750506040516313849cfd60e21b815293905060008480610471858560048401614711565b038189600435165afa938415610748576000946107d8575b5060005b8881106107665750600080516020616a5e833981519152546104b7906001600160a01b0316610386565b91823b1561028d5760006040518094637ee7f69b60e01b82528183816104e88c8b3360243560043560048701614767565b03925af19182156107485761051b9360009361074d575b506040516313849cfd60e21b8152938492839260048401614711565b038188600435165afa90811561074857600091610727575b5060005b87811061064257505050505060005b838110610559576105576001606555565b005b806105bb610569600193886143bc565b51516020610577848a6143bc565b510151906040610587858b6143bc565b510151906060610597868c6143bc565b5101519160806105a7878d6143bc565b510151936024359260443590600435615265565b6105c581876143bc565b515160206105d4838888614455565b013560406105e3848989614455565b604080519485526044356001600160a01b031660208601528401929092520135606082015260043584169033906024358616907f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d78869490608090a401610546565b61064b81613ef4565b61065581846143bc565b5161067561066383886143bc565b5161066e858a6143bc565b5190614681565b14908115916106e9575b5061068c57600101610537565b6106a28161069b8793866143bc565b51926143bc565b51604051638791019960e01b81526001600160a01b036004803582169083015260248083019490945292359092166044830152336064830152608482015260a490fd5b0390fd5b905061071f61070d610700610706610700856143d0565b876143bc565b51936143d0565b5161071884896143bc565b51906143de565b14153861067f565b610742913d8091833e61073a81836115ff565b8101906146ec565b38610533565b613230565b8061075a61076092611544565b8061170b565b386104ff565b61076f81613ef4565b61077981876143bc565b5161078483896143bc565b5111610793575060010161048d565b6106e56107b888926107b1856107aa8b978b6143bc565b51956143bc565b51946143bc565b51604051938493636906ef1760e11b85526004356024356004870161448a565b6107ec91943d8091833e61073a81836115ff565b9238610489565b6108596002604061084d8560019761084761080f600435613d65565b6108306024359161082186868d614455565b35600052602052604060002090565b9060018060a01b0316600052602052604060002090565b96614455565b01359201918254614681565b8091551561086a575b018790610445565b61089361088e896108308c61082186610884600435613d65565b9260243595614455565b614575565b610862565b906108b56108a7848c8c614455565b604435602435600435615b8b565b6108bf848d6143bc565b526108ca838c6143bc565b506108d6838b8b614455565b356108e184876143bc565b5260406108ef848c8c614455565b01356108fb84896143bc565b5261093c602061090b85886143bc565b51604051627eeac760e11b8152602480356001600160a01b0316600483015281019190915291829081906044820190565b03818c600435165afa90811561074857600091610add575b5061095f84896143bc565b518110610aa35750610999602080610977868f6143bc565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa91821561074857600192858e6109f494600093610a69575b506040916109c3916143bc565b5101526109ee8d60406109e58860206109dc82866143bc565b510151936143bc565b510151906143de565b906143de565b926109fe81613ef4565b610a1d602435610a0e838b6143bc565b6001600160a01b039091169052565b610a3333610a0e610a2d846143d0565b8b6143bc565b610a3d82886143bc565b51610a4882886143bc565b52610a60610700610a59848a6143bc565b51926143d0565b5201919061042c565b6109c391935091610a9360409360203d602011610a9c575b610a8b81836115ff565b810190613221565b939150916109b6565b503d610a81565b876106e5610abc86610ab5818b6143bc565b51936143bc565b5192604051938493636906ef1760e11b85526004356024356004870161448a565b610af6915060203d602011610a9c57610a8b81836115ff565b38610954565b60405163d65b0d6960e01b8152806106e560043560243560048401613c29565b610b3e915060203d602011610b44575b610b3681836115ff565b810190614475565b386103c7565b503d610b2c565b60405163aac1ae8b60e01b8152602480356001600160a01b0316600483015290fd5b60405163ab35696f60e01b8152600490fd5b3461028d57602036600319011261028d57600435610b9c8161027c565b610ba4613090565b610bad816165de565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163ed56be5b60e01b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610c43575b50734d41524b4554504c4143455f53455454494e475360601b600080516020616a7e833981519152600080a3005b8061075a610c5092611544565b38610c15565b3461028d57602036600319011261028d57600435610c738161027c565b610c7b613090565b610c848161661d565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163143df10960e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610d14575b506d524f59414c54595f454e47494e4560901b600080516020616a7e833981519152600080a3005b8061075a610d2192611544565b38610cec565b606090600319011261028d57600435610d3f8161027c565b9060243590604435610d508161027c565b90565b3461028d576020610d93610d71610d6936610d27565b929091613d9e565b90600052835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b3461028d57602036600319011261028d57600435610db98161027c565b610dc1613090565b610dca81616656565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163632c2a3160e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610e5c575b506f5354414b494e475f524547495354525960801b600080516020616a7e833981519152600080a3005b8061075a610e6992611544565b38610e32565b9181601f8401121561028d578235916001600160401b03831161028d576020808501948460051b01011161028d57565b3461028d5760408060031936011261028d576004908135610ebf8161027c565b6024356001600160401b03811161028d57610edd9036908501610e6f565b929093610ee861423c565b610ef184615ef3565b60015b848110610fa0575050506001600160a01b03811660005b838110610f1c576105576001606555565b80610f2b610f95928688614565565b356002610f4e3361083084610f3f8a613d65565b90600052602052604060002090565b015415610f9a57610f6961088e3361083084610f3f8a613d65565b83337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a4613c59565b610f0b565b50613c59565b610fab818688614565565b6000198201903582821161102057610fc482888a614565565b351015610fda5750610fd590613c59565b610ef4565b9286610ff78388610ff06106e596988286614565565b3593614565565b915163f48f718f60e01b8152938401948552602085015235604084015290918291606090910190565b613c43565b3461028d57602036600319011261028d576004356110428161027c565b61104a613090565b61105381616691565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163148282a760e21b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576110e8575b50724e4554574f524b5f42454e454649434941525960681b600080516020616a7e833981519152600080a3005b8061075a6110f592611544565b386110bb565b3461028d57602036600319011261028d576004356111188161027c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691906111513084141561315f565b61116e6000805160206169fe8339815191529382855416146131c0565b611176613090565b60405190611183826115c9565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156111bd57505061055791506132e9565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181611214575b506112015760405162461bcd60e51b8152806106e56004820161329a565b6105579361120f911461323c565b613379565b61122d91925060203d8111610a9c57610a8b81836115ff565b90386111e3565b90815180825260208080930193019160005b828110611254575050505090565b83516001600160a01b031685529381019392810192600101611246565b90815180825260208080930193019160005b828110611291575050505090565b835160ff1685529381019392810192600101611283565b90610d50916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a06112f8608084015160c08385015260e0840190611234565b9201519060c0601f1982850301910152611271565b3461028d576113bd61135861133561132436610d27565b92909161132f6142f9565b50613d65565b9060005260205260406000209060018060a01b0316600052602052604060002090565b6113ac60056040519261136a8461155c565b80546001600160a01b031684526001810154602085015260028101546040850152600381015460608501526113a1600482016147bd565b608085015201614815565b60a0820152604051918291826112a8565b0390f35b3461028d5760408060031936011261028d576004356113df8161027c565b6024356001600160401b03811161028d576113fe903690600401610292565b91909261140961423c565b61141a611416338461692e565b1590565b61150d57916114298185615e17565b6001600160a01b0382169060005b818110611448576105576001606555565b80611457611508928489614455565b3561146281876157c1565b847fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f89896114ee86898c6114db866114ca8b610f3f6020958a6114b48a8a8a6114ac83838c614455565b013598614455565b01356114be611620565b95865287860152613dd7565b906020600191805184550151910155565b6114e6838388614455565b013594614455565b8b519283520135602082015280604081015b0390a3613c59565b611437565b51600162bed83560e01b03198152915081906106e590339060048401613c29565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161155757604052565b61152e565b60c081019081106001600160401b0382111761155757604052565b61014081019081106001600160401b0382111761155757604052565b60e081019081106001600160401b0382111761155757604052565b604081019081106001600160401b0382111761155757604052565b602081019081106001600160401b0382111761155757604052565b606081019081106001600160401b0382111761155757604052565b90601f801991011681019081106001600160401b0382111761155757604052565b6040519061162d826115ae565b565b6040519061162d82611577565b6040519061162d82611593565b6040519061162d8261155c565b6040519060a082018281106001600160401b0382111761155757604052565b6001600160401b03811161155757601f01601f191660200190565b604036600319011261028d576004356116a88161027c565b602435906001600160401b03821161028d573660238301121561028d578160040135906116d482611675565b916116e260405193846115ff565b808352366024828601011161028d57602081600092602461055797018387013784010152613488565b600091031261028d57565b3461028d57600036600319011261028d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611770576040516000805160206169fe8339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461028d57604036600319011261028d576117fb6004356117f68161027c565b613e10565b6024356000526020526020604060002054604051908152f35b3461028d576020610d93610d7161182a36610d27565b929091613e49565b81516001600160a01b031681526101408101929161162d91906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461028d57600080600319360112611ac0576113bd90611ab460405161191e81611577565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611a8361196661162f565b6000805160206169de833981519152546001600160a01b0316815293600080516020616b3e833981519152546119b0906001600160a01b03165b6001600160a01b03166020870152565b600080516020616ade833981519152546001600160a01b03166040860152600080516020616afe833981519152546001600160a01b03166060860152600080516020616a1e833981519152546001600160a01b03166080860152600080516020616a9e833981519152546001600160a01b031660a0860152600080516020616abe833981519152546001600160a01b031660c08601526000805160206169be833981519152546001600160a01b031660e0860152600080516020616a3e833981519152546001600160a01b031690850152565b7f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1309546001600160a01b031690830152565b60405191829182611832565b80fd5b604060031982011261028d57600435611adb8161027c565b916024356001600160401b039283821161028d578060238301121561028d57816004013593841161028d5760248460061b8301011161028d576024019190565b3461028d57611b2936611ac3565b611b3492919261423c565b611b41611416338461692e565b611bea57611b4f8184615e85565b60005b818110611b63576105576001606555565b80611b72611be5928487614465565b35611b7d81866157c1565b602080611b8b84878a614465565b0135611b9a83610f3f89613e10565b55611ba6838689614465565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b62908060208101611500565b611b52565b604051600162bed83560e01b03198152806106e5338560048401613c29565b90610d50916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611c6660a084015160e083850152610100840190611234565b9201519060e0601f1982850301910152611271565b3461028d5760408060031936011261028d57806113bd91600435611c9e8161027c565b611cda825191611cad83611593565b606060c0600094858152856020820152858782015285838201528560808201528260a08201520152613e82565b60243582526020522090611d4d6006825193611cf585611593565b80546001600160a01b031685526001810154611d19906001600160a01b03166119a0565b6002810154848601526003810154606086015260048101546080860152611d42600582016147bd565b60a086015201614815565b60c08301525191829182611c09565b3461028d57600080600319360112611ac057611d76613090565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b3461028d5761016036600319011261028d57610557600435611ddb8161027c565b602435611de78161027c565b604435611df38161027c565b606435611dff8161027c565b608435611e0b8161027c565b60a435611e178161027c565b60c43591611e248361027c565b60e43593611e318561027c565b6101043595611e3f8761027c565b6101243597611e4d8961027c565b6101443599611e5b8b61027c565b613698565b606036600319011261028d576004611e78813561027c565b611e8360243561027c565b6044356001600160401b03811161028d57611ea19036908301610e6f565b91611eaa61423c565b60ff600080516020616b1e833981519152541661228f57611ecb8383615da9565b611ed66024356155bc565b611edf836142c7565b611ee8846142c7565b611ef18561432d565b916000805b87811061214c5750611f0a90602435615f35565b60005b8681106120b6575083356001600160a01b03163b1561028d57604051630d4498e760e21b81529160009183918291611f4991903389850161441f565b03818387356001600160a01b03165af18015610748576120a3575b5060005b848110611f79576105576001606555565b806020611f88600193856143bc565b510151612044575b611f9a81846143bc565b5151611fba6060611fab84876143bc565b5101516001600160a01b031690565b906040611fc8848a8a61437d565b01357f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c61203b6020611ffb878d8d61437d565b013560405191829133978a8060a01b038d351696602435918590606092959493608083019660018060a01b03809316845260208401521660408201520152565b0390a401611f68565b61209e602061205383866143bc565b510151604061206284876143bc565b5101516120746060611fab86896143bc565b608061208086896143bc565b5101519160a0612090878a6143bc565b510151936024358a35614f78565b611f90565b8061075a6120b092611544565b38611f64565b806120c4600192898961437d565b356120d381610f3f8935613ebb565b54612119575b6120e781610f3f8935613e10565b546120f4575b5001611f0d565b612107906108303391610f3f8a35613e49565b61211181546143d0565b9055386120ed565b6040612126838b8b61437d565b013561214561213d3361083085610f3f8d35613d9e565b9182546143de565b90556120d9565b61216561215a828a8a61437d565b336024358935615881565b61216f82876143bc565b5261217a81866143bc565b5060208061218883886143bc565b5101516121cb575b508061219e600192876143bc565b51516121aa82866143bc565b5260406121b8828b8b61437d565b01356121c482876143bc565b5201611ef6565b600080516020616b3e83398151915254919290916121f1906001600160a01b0316610386565b906122268380612201878b6143bc565b5101516040948b86518095819482936361fe24a960e11b845283019190602083019252565b03915afa9283156107485760019461226b946109ee93600091612272575b5082612250898d6143bc565b51015261225d878b6143bc565b510151906109e5878b6143bc565b9190612190565b6122899150823d8411610a9c57610a8b81836115ff565b38612244565b60405163ab35696f60e01b8152fd5b3461028d57602036600319011261028d576004356122bb8161027c565b6122c3613090565b6122cc816166cf565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d576040516362cd1f1560e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612365575b507653504143455f4f50455241544f525f524547495354525960481b600080516020616a7e833981519152600080a3005b8061075a61237292611544565b38612334565b3461028d57604036600319011261028d576117fb6004356123988161027c565b613ebb565b8015150361028d57565b3461028d57602036600319011261028d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b19260206004356123e78161239d565b6123ef613090565b1515600080516020616b1e83398151915260ff1981541660ff8316179055604051908152a1005b3461028d57600036600319011261028d576033546040516001600160a01b039091168152602090f35b3461028d57602036600319011261028d5760043561245c8161027c565b612464613090565b61246d81616711565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051631d1d389760e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576124f7575b50675041594d454e545360c01b600080516020616a7e833981519152600080a3005b8061075a61250492611544565b386124d5565b3461028d57600036600319011261028d57602060ff600080516020616b1e83398151915254166040519015158152f35b9060a060031983011261028d576004356125538161027c565b916024356125608161027c565b91604435916001600160401b039081841161028d578060238501121561028d5783600401359382851161028d578160248660071b8301011161028d57602401939260643583811161028d57826125b891600401610e6f565b9390939260843591821161028d576125d291600401610e6f565b9091565b3461028d576125e43661253a565b6125f597969197959492939561423c565b60ff600080516020616b1e8339815191525416610b6d57612619611416338961692e565b612785576126278386615d10565b612630826155bc565b61263c8189868961612c565b60005b838110612650576105576001606555565b878787838787878f8c612664868689613c7e565b3597612670898b6157c1565b8660208061267f838a8d613c7e565b0135888b60409b8c9261269192613c7e565b0135898c60609586926126a392613c7e565b0135906126ae61163c565b338152926001600160a01b038b1684860152838d01528483015260808201526126d8368686613caa565b60a08201528b8d6126ea368a8a613d0d565b60c08401526126f890613e82565b6000918252602052604090209061270e916140ad565b6127198d898c613c7e565b0135988c89612729828b85613c7e565b01359861273592613c7e565b01359651968796339b600160a01b600190031699612753978961417f565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a461278090613c59565b61263f565b604051600162bed83560e01b03198152806106e5338a60048401613c29565b3461028d5760408060031936011261028d576127de6004356127c58161027c565b6000602084516127d4816115ae565b8281520152613dd7565b6024356000526020528060002081516127f6816115ae565b60206001835493848452015491019081528251918252516020820152f35b3461028d57600036600319011261028d57600080516020616a5e833981519152546040516001600160a01b039091168152602090f35b3461028d5761285836611ac3565b61286392919261423c565b612870611416338461692e565b611bea5761287e8184615e85565b60005b818110612892576105576001606555565b806128a1612914928487614465565b356128ac81866157c1565b6020806128ba84878a614465565b01356128c983610f3f89613ebb565b556128d5838689614465565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e61908060208101611500565b612881565b3461028d57600036600319011261028d57602060405160648152f35b3461028d57602036600319011261028d576004356129528161027c565b61295a613090565b612963816167c1565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d576040516328b80cf560e21b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576129fb575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b600080516020616a7e833981519152600080a3005b8061075a612a0892611544565b386129cb565b3461028d57602036600319011261028d57600435612a2b8161027c565b612a33613090565b612a3c816167c1565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051631f1afd0d60e01b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612ad5575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b600080516020616a7e833981519152600080a3005b8061075a612ae292611544565b38612aa4565b3461028d57602036600319011261028d57600435612b058161027c565b612b0d613090565b612b1681616744565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051632867932b60e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612baf575b5076415050524f5645445f544f4b454e5f524547495354525960481b600080516020616a7e833981519152600080a3005b8061075a612bbc92611544565b38612b7e565b3461028d57602036600319011261028d57600435612bdf8161027c565b612be7613090565b612bf081616786565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051632d8b49e160e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612c82575b506f5354414b494e475f53455454494e475360801b600080516020616a7e833981519152600080a3005b8061075a612c8f92611544565b38612c58565b3461028d57602036600319011261028d57600435612cb28161027c565b612cba613090565b6001600160a01b03811615612cd25761055790613116565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461028d57612d343661253a565b90612d449792969395949761423c565b60ff600080516020616b1e8339815191525416610b6d57612d658886615d10565b612d6e846155bc565b612d7a8282898961612c565b612d8383615678565b600080516020616a5e83398151915254612dc790602090612dac906001600160a01b0316610386565b6040518093819263e985e9c560e01b83523360048401613c29565b03816001600160a01b0388165afa90811561074857600091613000575b5015612fe45760005b888110612dfe576105576001606555565b612e09818a88613c7e565b35868a6060612e37856040612e2e82866020612e2683838c613c7e565b013598613c7e565b0135938c613c7e565b01358215612fd2578115612fc05780151580612fb6575b612f9657604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa90811561074857600091612f77575b50828110612f5657507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d839289612f498f8f8c918f97918d92612f328a612f519f9e9d8e612f2d91612eee612edf611649565b6001600160a01b039095168552565b60208401528b6040840152846060840152612f0a368888613caa565b6080840152612f1a368a8a613d0d565b60a08401526108303391610f3f8d613d65565b6144bc565b60405197889760018060a01b03169b339b8961417f565b0390a4613c59565b612ded565b604051636906ef1760e11b81529081906106e59085888d336004870161448a565b612f90915060203d602011610a9c57610a8b81836115ff565b38612e8c565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b5042811115612e4e565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b8152806106e5853360048401613c29565b613019915060203d602011610b4457610b3681836115ff565b38612de4565b3461028d57602036600319011261028d5760043561303c8161027c565b613044613090565b61304d816167c1565b6001600160a01b031661305f816130e8565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b600080516020616a7e833981519152600080a3005b6033546001600160a01b031633036130a457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020616a5e83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561316657565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156131c757565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261028d575190565b6040513d6000823e3d90fd5b1561324357565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561331e576000805160206169fe83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90613383826132e9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a280511580159061342d575b6133c5575050565b61342a91600080604051936133d9856115e4565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613424613593565b916135c3565b50565b5060006133bd565b9061343f826132e9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613480576133c5575050565b5060016133bd565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692906134c13085141561315f565b6134de6000805160206169fe8339815191529482865416146131c0565b6134e6613090565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561351c57505061162d91506132e9565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613573575b506135605760405162461bcd60e51b8152806106e56004820161329a565b61162d9361356e911461323c565b613435565b61358c91925060203d8111610a9c57610a8b81836115ff565b9038613542565b3d156135be573d906135a482611675565b916135b260405193846115ff565b82523d6000602084013e565b606090565b9192901561362557508151156135d7575090565b3b156135e05790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156136385750805190602001fd5b60405162461bcd60e51b8152602060048201529081906106e59060248301905b919082519283825260005b848110613684575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201613663565b989694929099979593916000549a60ff8c60081c1615809c819d6137be575b811561379e575b5015613742576136e49a8c6136db600160ff196000541617600055565b61372957613a16565b6136ea57565b6136fa61ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b61373d61010061ff00196000541617600055565b613a16565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b159150816137b0575b50386136be565b6001915060ff1614386137a9565b600160ff82161091506136b7565b519061162d8261027c565b908161014091031261028d576137eb61162f565b906137f5816137cc565b8252613803602082016137cc565b6020830152613814604082016137cc565b6040830152613825606082016137cc565b6060830152613836608082016137cc565b608083015261384760a082016137cc565b60a083015261385860c082016137cc565b60c083015261386960e082016137cc565b60e083015261010061387c8183016137cc565b9083015261388e6101208092016137cc565b9082015290565b80516000805160206169de83398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020616b3e833981519152805483169184169190911790556040830151600080516020616ade833981519152805483169184169190911790556060830151600080516020616afe833981519152805483169184169190911790556080830151600080516020616a1e8339815191528054831691841691909117905560a0830151600080516020616a9e8339815191528054831691841691909117905560c0830151600080516020616abe8339815191528054831691841691909117905560e08301516000805160206169be83398151915280548316918416919091179055610100830151600080516020616a3e83398151915280549092169083161790556101209091015161162d91167f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130980546001600160a01b0319166001600160a01b03909216919091179055565b95613af1979293959a98949996613a2c81616691565b613a35836165de565b613a3e856166cf565b613a478761661d565b613a508b616711565b613a598c616744565b613a6282616786565b613a6b84616656565b613a74866167c1565b613a7d886167c1565b613a868a6167c1565b60405163ef8c824960e01b81526001600160a01b039182166004820152928116602484015293841660448301529483166064820152978216608489015297811660a488015291821660c487015295811660e48601529485166101048501528416610124840152919291565b61014080846101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af4801561074857613b3494613b2e92600092613b4c575b5050613895565b166130e8565b613b3c613bd9565b613b44613c0d565b61162d613bfc565b613b6b9250803d10613b72575b613b6381836115ff565b8101906137d7565b3880613b27565b503d613b59565b15613b8057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b613bf360ff60005460081c16613bee81613b79565b613b79565b61162d33613116565b61162d60ff60005460081c16613b79565b613c2260ff60005460081c16613bee81613b79565b6001606555565b6001600160a01b0391821681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b60001981146110205760010190565b634e487b7160e01b600052603260045260246000fd5b9190811015613c8e5760071b0190565b613c68565b6001600160401b0381116115575760051b60200190565b9291613cb582613c93565b91613cc360405193846115ff565b829481845260208094019160051b810192831161028d57905b828210613ce95750505050565b8380918335613cf78161027c565b815201910190613cdc565b60ff81160361028d57565b9291613d1882613c93565b91613d2660405193846115ff565b829481845260208094019160051b810192831161028d57905b828210613d4c5750505050565b8380918335613d5a81613d02565b815201910190613d3f565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e13116020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130e6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130c6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130f6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e13106020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130b6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130d6020526040902090565b908160011b918083046002149015171561102057565b8181029291811591840414171561102057565b818110613f28575050565b60008155600101613f1d565b90600160401b811161155757815490808355818110613f5257505050565b61162d9260005260206000209182019101613f1d565b90600160401b8111611557578154818355808210613f8557505050565b61162d92600052601f6020600020918180850160051c8401941680613fb1575b500160051c0190613f1d565b600019908186019182549160200360031b1c16905538613fa5565b9080516001600160401b03811161155757613fe78184613f68565b613ffb602080930193600052602060002090565b908060051c9260005b8481106140775750601f1982169091039081614022575b5050505050565b9390600094855b82811061404057505050500155388080808061401b565b909192958261406c600192846140578b5160ff1690565b919060ff809160031b9316831b921b19161790565b970193929101614029565b6000805b83811061408f575084820155600101614004565b9690836140a46001928a614057865160ff1690565b9201970161407b565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161155757819061413f8686613f34565b0192600052806000209160005b85811061416c575050505050505090600660c061162d9301519101613fcc565b845182168482015593820193860161414c565b93928692979896919360c086019160018060a01b0380961687526020998a8801526040870152606086015260c060808601525260e08301939060005b81811061420c575050505080820360a0909101528181528201929160005b8281106141e7575050505090565b90919293828060019260ff88356141fd81613d02565b168152019501939291016141d9565b909193929897969485806001928c88356142258161027c565b1681520195019101989293949697989190916141bb565b60026065541461424d576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6040519061429f826115ae565b6001825260203681840137565b604051906142b9826115e4565b600282526040366020840137565b906142d182613c93565b6142de60405191826115ff565b82815280926142ef601f1991613c93565b0190602036910137565b604051906143068261155c565b606060a0836000815260006020820152600060408201526000838201528260808201520152565b9061433782613c93565b61434460405191826115ff565b8281528092614355601f1991613c93565b019060005b82811061436657505050565b6020906143716142f9565b8282850101520161435a565b9190811015613c8e5760051b81013590607e198136030182121561028d570190565b805115613c8e5760200190565b805160011015613c8e5760400190565b8051821015613c8e5760209160051b010190565b906001820180921161102057565b9190820180921161102057565b90815180825260208080930193019160005b82811061440b575050505090565b8351855293810193928101926001016143fd565b6001600160a01b039091168152606060208201819052610d50939192614447918401906143eb565b9160408184039101526143eb565b9190811015613c8e576060020190565b9190811015613c8e5760061b0190565b9081602091031261028d5751610d508161239d565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b0385116115575781906145258686613f34565b0192600052806000209160005b858110614552575050505050505090600560a061162d9301519101613fcc565b8451821684820155938201938601614532565b9190811015613c8e5760051b0190565b6005600091828155826001820155826002820155826003820155600481018054848255806145cb575b50500190815490808355816145b257505050565b60208161162d94601f935220910160051c810190613f1d565b6145de9185526020852090810190613f1d565b388061459e565b6040519060a082018281106001600160401b0382111761155757604052606060808360008152600060208201526000604082015282808201520152565b9061462c82613c93565b61463960405191826115ff565b828152809261464a601f1991613c93565b019060005b82811061465b57505050565b6020906146666145e5565b8282850101520161464f565b60001981019190821161102057565b9190820391821161102057565b81601f8201121561028d578051916146a583613c93565b926146b360405194856115ff565b808452602092838086019260051b82010192831161028d578301905b8282106146dd575050505090565b815181529083019083016146cf565b9060208282031261028d5781516001600160401b03811161028d57610d50920161468e565b9092916040820191604081528451809352606081019260208096019060005b81811061474a57505050610d5093948184039101526143eb565b82516001600160a01b031686529487019491870191600101614730565b93602095926147ac9461479e9360018060a01b0392838092168952168888015216604086015260c0606086015260c08501906143eb565b9083820360808501526143eb565b9060a0818303910152600081520190565b9060405191828154918282526020928383019160005283600020936000905b8282106147f25750505061162d925003836115ff565b85546001600160a01b0316845260019586019588955093810193909101906147dc565b9060408051809380549261483c614830858560209181520190565b92600052602060002090565b9360005b81601f820110614c585761162d955492828210614c42575b828210614c28575b828210614c0e575b828210614bf4575b828210614bda575b828210614bc0575b828210614ba6575b828210614b8c575b828210614b75575b50818110614b5d575b818110614b45575b818110614b2d575b818110614b15575b818110614afd575b818110614ae5575b818110614acd575b818110614ab5575b818110614a9d575b818110614a85575b818110614a6d575b818110614a55575b818110614a3d575b818110614a25575b818110614a0d575b8181106149f5575b8181106149dd575b8181106149c5575b8181106149ad575b818110614995575b81811061497d575b818110614965575b10614957575b5003836115ff565b60f81c81526020013861494f565b60f083901c60ff168452926001906020019301614949565b60e883901c60ff168452926001906020019301614941565b60e083901c60ff168452926001906020019301614939565b60d883901c60ff168452926001906020019301614931565b60d083901c60ff168452926001906020019301614929565b60c883901c60ff168452926001906020019301614921565b60c083901c60ff168452926001906020019301614919565b60b883901c60ff168452926001906020019301614911565b60b083901c60ff168452926001906020019301614909565b60a883901c60ff168452926001906020019301614901565b60a083901c60ff1684529260019060200193016148f9565b609883901c60ff1684529260019060200193016148f1565b609083901c60ff1684529260019060200193016148e9565b608883901c60ff1684529260019060200193016148e1565b608083901c60ff1684529260019060200193016148d9565b607883901c60ff1684529260019060200193016148d1565b607083901c60ff1684529260019060200193016148c9565b606883901c60ff1684529260019060200193016148c1565b606083901c60ff1684529260019060200193016148b9565b605883901c60ff1684529260019060200193016148b1565b605083901c60ff1684529260019060200193016148a9565b604883901c60ff1684529260019060200193016148a1565b83901c60ff16845292600190602001930138614898565b603884901c60ff1685529093600190602001940190614890565b603084901c60ff1685529093600190602001940190614888565b602884901c60ff1685529093600190602001940190614880565b602084811c60ff1686529194909160019101940190614878565b601884901c60ff1685529093600190602001940190614870565b601084901c60ff1685529093600190602001940190614868565b600884901c60ff1685529093600190602001940190614860565b60ff841685529093600190602001940190614858565b919350916001610400602092614ef68854614eeb60ff614c7c8582851660ff169052565b614ec4614d29614e748d614e2489614dd48e614ca18184018a8d60081c1660ff169052565b614cb48584018a8d60101c1660ff169052565b888b610200606095614ccf878201858560181c1660ff169052565b614ce46080958585888501921c1660ff169052565b614d8a60a097614cfd898401878760281c1660ff169052565b614d3a60c09b614d168d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b614d4f6101208401878760481c1660ff169052565b614d646101408401878760501c1660ff169052565b614d796101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b614d9f6101a08201858560681c1660ff169052565b614db46101c08201858560701c1660ff169052565b614dc96101e08201858560781c1660ff169052565b01921c1660ff169052565b614de96102208c01888b60881c1660ff169052565b614dfe6102408c01888b60901c1660ff169052565b614e136102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b614e396102a08a01868960a81c1660ff169052565b614e4e6102c08a01868960b01c1660ff169052565b614e636102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b614e896103208801848760c81c1660ff169052565b614e9e6103408801848760d01c1660ff169052565b614eb36103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b614ed96103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492614840565b90604051614f1381611593565b60c0614f5e6006839560018060a01b038082541686526001820154166020860152600281015460408601526003810154606086015260048101546080860152611d42600582016147bd565b910152565b9081602091031261028d5751610d5081613d02565b96959493909196614f8c8289958a866153b7565b600080516020616ade83398151915254614fae906001600160a01b0316610386565b604051635dc22eff60e01b81526001600160a01b03841660048201526020928382602481865afa918215610748576000926151a7575b5060009115615116575050604051632260494f60e01b81526001600160a01b039390931660048401529091908290829060249082905afa9081156107485760ff926000926150e9575b50505b1695606487116150c95761505261504b61162d979883613f0a565b6064900490565b9081615060575b5050616274565b816150c292945061507091614681565b92615079614292565b6000805160206169de833981519152546150a89061509f906001600160a01b0316610386565b610a0e8361439f565b6150b0614292565b91806150bb8461439f565b5284616353565b3880615059565b60405163d6849ff160e01b81526004810188905260646024820152604490fd5b6151089250803d1061510f575b61510081836115ff565b810190614f63565b388061502d565b503d6150f6565b600080516020616b3e8339815191525491945061516f92508391615142906001600160a01b0316610386565b60405163b28a7bad60e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9182156107485760ff939261518a575b5050615030565b6151a09250803d1061510f5761510081836115ff565b3880615183565b6151bf919250843d8611610b4457610b3681836115ff565b9038614fe4565b91909160408184031261028d578051926001600160401b039384811161028d5782019381601f8601121561028d5784516151ff81613c93565b9061520d60405192836115ff565b808252602096878084019260051b8201019185831161028d5788809201905b83821061524c57505050509483015190811161028d57610d50920161468e565b828091835161525a8161027c565b81520191019061522c565b9692959197939061527a87968793888c6153b7565b600080516020616afe8339815191525461529c906001600160a01b0316610386565b604051637a99dc0160e11b81526001600160a01b039990991660048a01526024890191909152604488019690965260009586908890606490829084905af19788156107485786978799615378575b50865b89518810156153135761530761530d916107188a8d6143bc565b97613c59565b966152ed565b929598919497909396508883116153585761162d979883615338575b50505050616274565b8361534f94965061534891614681565b9484616353565b3880808061532f565b6040516344783bd360e11b815260048101849052602481018a9052604490fd5b9098506153989197503d8088833e61539081836115ff565b8101906151c6565b96909697386152ea565b9081602091031261028d5751610d508161027c565b600080516020616abe8339815191525461540694929391906153e1906001600160a01b0316610386565b93604051809563470d6ed960e11b825281806020998a95600483019190602083019252565b03915afa9384156107485760009461559d575b5081841161557d57811561401b5761542f6142ac565b926154b2866154556103866000805160206169de8339815191525460018060a01b031690565b9261546384610a0e8961439f565b6000805160206169be83398151915254615485906001600160a01b0316610386565b60405163e286ef3360e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9081156107485761162d97600092615550575b506001600160a01b03916154e391508216610a0e876143ac565b6154fc6154ef866143ac565b516001600160a01b031690565b1661553b5761550f905b610a0e856143ac565b6155176142ac565b936155228184614681565b61552b8661439f565b52615535856143ac565b52616353565b5061550f61554b6154ef856143ac565b615506565b61556f9250803d10615576575b61556781836115ff565b8101906153a2565b38806154c9565b503d61555d565b604051639bdfbb5160e01b81526004810183905260248101859052604490fd5b6155b5919450853d8711610a9c57610a8b81836115ff565b9238615419565b6001600160a01b0381161515806155f8575b6155d55750565b60405163cd5f748960e01b81526001600160a01b03919091166004820152602490fd5b50600080516020616a9e8339815191525461561b906001600160a01b0316610386565b604051632d5ad3d560e01b81526001600160a01b038316600482015290602090829060249082905afa9081156107485760009161565a575b50156155ce565b615672915060203d8111610b4457610b3681836115ff565b38615653565b803b1580156156ab575b6156895750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b8083526024820152602481526156d4816115e4565b519084617530fa6000513d82615728575b508161571e575b508061570e575b806156ff575b15615682565b5061570981615791565b6156f9565b5061571881615734565b156156f3565b90501515386156ec565b602011159150386156e5565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152615764816115e4565b5191617530fa6000513d82615785575b508161577e575090565b9050151590565b60201115915038615774565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152615764816115e4565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156107485760009161582e575b5015615803575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b615846915060203d8111610a9c57610a8b81836115ff565b386157f9565b903590601e198136030182121561028d57018035906001600160401b03821161028d57602001918160051b3603831361028d57565b9061588a6142f9565b5083359360409384820135916158ab6158a688610f3f88613e82565b614f06565b805190956001600160a01b03939091841615615b645786516158da90611416906001600160a01b03168461692e565b615b39576158f76158ee606085018561584c565b90838c866167e3565b8415615b285761590a89610f3f84613ebb565b5461591c826108308c610f3f87613d9e565b5481151580615b16575b615acd57505061593989610f3f84613e10565b549061594c816108308c610f3f87613e49565b549082151580615abc575b615a835750505050608085015180151580615a7a575b615a5a57506060850151428111615a415750602001359285850151808503615a21575060208501516001600160a01b03169180821690831603615a065750506159f9916159b991613f0a565b82519093906000906001600160a01b03169160c060a0860151950151956159de611649565b97885260208801528601526001600160a01b03166060850152565b608083015260a082015290565b6106e58651928392632e834cbf60e11b845260048401613c29565b8651631d6bbb8d60e11b8152600481018690526024810191909152604490fd5b865163456afd0b60e01b81526004810191909152602490fd5b8651635bdd08f560e01b8152600481018590526024810191909152604490fd5b5080841161596d565b895163ae3586c560e01b81526001600160a01b039485166004820152602481018c9052931660448401526064830152608482015260a490fd5b5082615ac7836143d0565b11615957565b8951636d03a2e560e01b81526001600160a01b039485166004820152602481018c905292909316604483015260648201869052608482019290925260a481019190915260c49150fd5b5081615b2288836143de565b11615926565b875163c6b949a960e01b8152600490fd5b86518851600162bed83560e01b031981529081906106e5906001600160a01b03168560048401613c29565b8751634ed1072f60e11b81526001600160a01b0383166004820152602481018a9052604490fd5b9192615b956145e5565b5080359360409283830135918215615cff57615bb88261083089610f3f8a613d65565b956002870154928315615cd05760038801549081151580615cc6575b615c9257505086546001600160a01b0390811692915081168203615a065750506020600186015493013592838103615c725750818110615c545750600592615c22615c4c9593600093613f0a565b615c2a611656565b9687526020870152850152615c41600482016147bd565b606085015201614815565b608082015290565b83516364b7fccd60e11b815260048101929092526024820152604490fd5b8451631d6bbb8d60e11b8152600481018590526024810191909152604490fd5b8751635493bdef60e11b81526001600160a01b039384166004820152602481018b9052921660448301526064820152608490fd5b5042821115615bd4565b8651630bac95f560e21b81526001600160a01b039283166004820152602481018a905291166044820152606490fd5b845163c6b949a960e01b8152600490fd5b90615d1a81615ef3565b60015b818110615d2957505050565b615d34818385613c7e565b6000198201903582821161102057615d4d828587613c7e565b351015615d635750615d5e90613c59565b615d1d565b8183615d77615d7e936106e5959688613c7e565b3595613c7e565b3560405193849363f48f718f60e01b8552600485016040919493926060820195825260208201520152565b90615db381615ef3565b60015b818110615dc257505050565b615dcd81838561437d565b6000198201903582821161102057615de682858761437d565b351015615dfc5750615df790613c59565b615db6565b8183615e10615d7e936106e595968861437d565b359561437d565b90615e2181615ef3565b60015b818110615e3057505050565b615e3b818385614455565b6000198201903582821161102057615e54828587614455565b351015615e6a5750615e6590613c59565b615e24565b8183615e7e615d7e936106e5959688614455565b3595614455565b90615e8f81615ef3565b60015b818110615e9e57505050565b615ea9818385614465565b6000198201903582821161102057615ec2828587614465565b351015615ed85750615ed390613c59565b615e92565b8183615eec615d7e936106e5959688614465565b3595614465565b8015615f235760648111615f045750565b6044906040519063f80a484560e01b8252600482015260646024820152fd5b60405163c2e5347d60e01b8152600490fd5b908015615f455761162d91615f60565b505034615f4e57565b60405163429465b160e01b8152600490fd5b6001600160a01b03811680156160ec57346160da576040516370a0823160e01b808252306004830152602092908383602481855afa928315610748576000936160bb575b50600080516020616a3e83398151915254615fc7906001600160a01b0316610386565b90813b1561028d57604051630aed65f560e11b81526001600160a01b038716600482015233602482015230604482015260648101889052916000908390608490829084905af19182156107485785926160a8575b5060405190815230600482015291829060249082905afa9081156107485761604c9360009261608b575b5050614681565b82810361605857505050565b604051636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b6160a19250803d10610a9c57610a8b81836115ff565b3880616045565b8061075a6160b592611544565b3861601b565b6160d3919350843d8611610a9c57610a8b81836115ff565b9138615fa4565b60405163d9efa38960e01b8152600490fd5b50508034036160f85750565b6040516305e4640960e21b81526004810191909152346024820152604490fd5b35610d508161027c565b35610d5081613d02565b9192909283156162625760058411616242578184036162205792919060009384935b828510616186575050505050606481036161655750565b6040516357623e5560e01b8152600481019190915260646024820152604490fd5b90919293946161a161038661619c888589614565565b616118565b15616207576161c26161bc6161b7888787614565565b616122565b60ff1690565b156161ee576161df6161e5916109ee6161bc6161b78a8989614565565b95613c59565b9392919061614e565b60405163d4c1893560e01b815260048101879052602490fd5b6040516306f5730d60e41b815260048101879052602490fd5b50604051632db4fb2960e01b8152600481018490526024810191909152604490fd5b6040516366a4d05560e01b81526004810185905260056024820152604490fd5b60405163d218e6a560e01b8152600490fd5b91929390835185519081810361632057505061629084516142c7565b92819260005b865180821015616311576162aa8991614672565b82036162cb575080856162c06162c693896143bc565b52613c59565b616296565b81956162f661504b6162f06161bc6162e96162c69761630b976143bc565b5160ff1690565b88613f0a565b616300888a6143bc565b5261066e87896143bc565b94613c59565b5050955061162d949250616353565b604051632db4fb2960e01b815260048101919091526024810191909152604490fd5b906020610d50928181520190613658565b9192939083518551908181036164a1575050600092835b865185101561638a5761630b61638491610718878a6143bc565b9361636a565b90929491935083810361648057506001600160a01b039182169283156163f1575060005b81518110156163e957806163df6163cb6154ef6163e494866143bc565b856163d6848b6143bc565b519116876164c3565b613c59565b6163ae565b505050509050565b60009495925084935061644061644e616421610386600080516020616a1e8339815191525460018060a01b031690565b94604051928391602083019663c176e63960e01b885260248401614711565b03601f1981018352826115ff565b51925af161645a613593565b90156164635750565b604051634c0fe4a160e11b81529081906106e59060048301616342565b604051633bc6f52760e21b8152600481018590526024810191909152604490fd5b6040516345e8c29760e11b815260048101919091526024810191909152604490fd5b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815291926165569291600090819061650a6064866115ff565b60018060a01b03169260405194616520866115ae565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1613424613593565b8051908282159283156165c6575b5050501561656f5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6165d69350820181019101614475565b388281616564565b6001600160a01b0316156165ee57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561662d57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561666657565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b0316156166a157565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156166df57565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b03161561672157565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561675457565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b03161561679657565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156167d157565b60405163c49074af60e01b8152600490fd5b6167ef90949294613dd7565b9060005260205260406000209060405191616809836115ae565b600181549182855201549081602085015215908115616898575b50616892576168689261141692604051602081019061685d816164408a856014916bffffffffffffffffffffffff199060601b1681520190565b5190209051906168a3565b61686f5750565b60405163e2cf60cb60e01b81526001600160a01b03919091166004820152602490fd5b50505050565b905042101538616823565b92909291600080925b8084106168bb57505050501490565b909192936168fe906168ce868487614565565b35808211616906576040805160208101938452908101919091526168f58160608101616440565b51902094613c59565b9291906168ac565b604080516020810192835290810192909252906169268160608101616440565b51902061630b565b6000806040516020810190638da5cb5b60e01b825260048152616950816115ae565b5190845afa9061695e613593565b911580156169b2575b61699057508060208061697f935183010191016153a2565b6001600160a01b0390811691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b50602082511061696756fe094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1307094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1304094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1308094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130a376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1305094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1306094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1302094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1303094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1312094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1301a26469706673582212204ff4f871ea35358802f3010be34de8b577d27e1796c1b5b1eae1c9afa02cf06c64736f6c63430008120033","sourceMap":"1370:67832:73:-:0;;;;;;;1332:4:24;1324:13;;6007::23;1370:67832:73;;;;;;;;;;;;;;6078:31:23;6074:139;;-1:-1:-1;1370:67832:73;;;;;;;;1324:13:24;1370:67832:73;;;;;;;;;;;;;;;;6074:139:23;1370:67832:73;;;;;;6007:13:23;1370:67832:73;6174:28:23;1370:67832:73;;;;;;6174:28:23;6074:139;;;1370:67832:73;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;","linkReferences":{"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":3222,"length":20},{"start":3437,"length":20},{"start":3763,"length":20},{"start":4412,"length":20},{"start":9141,"length":20},{"start":9558,"length":20},{"start":10828,"length":20},{"start":11045,"length":20},{"start":11263,"length":20},{"start":11481,"length":20},{"start":15331,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c80630a6ce31314610277578063176ab4401461027257806321ede0321461026d57806328fbba03146102685780632c740844146102635780632f79f3351461025e5780633492e5a8146102595780633659cfe614610254578063369679a41461024f578063373a94121461024a5780634f1ef2861461024557806352d1902d14610240578063552f791d1461023b5780635a501f8f14610236578063614bd944146102315780636442950e1461022c5780636e2f4d8b14610227578063715018a61461022257806376902b831461021d5780637777e6d7146102185780637f358230146102135780638760251a1461020e578063882796f1146102095780638da5cb5b14610204578063af231a58146101ff578063b187bd26146101fa578063be542141146101f5578063bf3d90f8146101f0578063c7c83d17146101eb578063c7ec1b98146101e6578063cfdbf254146101e1578063d7a9fb7c146101dc578063d80b23e3146101d7578063e4e87e3b146101d2578063f1035744146101cd578063f2fde38b146101c8578063ff3a52d4146101c35763ff5c83a4146101be57600080fd5b61301f565b612d26565b612c95565b612bc2565b612ae8565b612a0e565b612935565b612919565b61284a565b612814565b6127a4565b6125d6565b61250a565b61243f565b612416565b6123a7565b612378565b61229e565b611e60565b611dba565b611d5c565b611c7b565b611b1b565b6118f9565b611814565b6117d6565b611716565b611690565b6113c1565b61130d565b6110fb565b611025565b610e9f565b610d9c565b610d53565b610c56565b610b7f565b6102c2565b6001600160a01b0381160361028d57565b600080fd5b9181601f8401121561028d578235916001600160401b03831161028d576020808501946060850201011161028d57565b608036600319011261028d576102d960043561027c565b6102e460243561027c565b6102ef60443561027c565b6064356001600160401b03811161028d5761030e903690600401610292565b61031661423c565b60ff600080516020616b1e8339815191525416610b6d576103378183615e17565b6001600160a01b039133602435841614610b4b576103566044356155bc565b610361600435615678565b600080516020616a5e833981519152546103af90602090610392906001600160a01b03165b6001600160a01b031690565b6040518093819263e985e9c560e01b835260243560048401613c29565b038187600435165afa90811561074857600091610b1c575b5015610afc576103d6826142c7565b926103e0836142c7565b6103f16103ec85613ef4565b6142c7565b6103fd6103ec86613ef4565b9561040786614622565b9660008061042c610386600080516020616b3e8339815191525460018060a01b031690565b89831061089857506104419150604435615f35565b8660005b878282106107f35750506040516313849cfd60e21b815293905060008480610471858560048401614711565b038189600435165afa938415610748576000946107d8575b5060005b8881106107665750600080516020616a5e833981519152546104b7906001600160a01b0316610386565b91823b1561028d5760006040518094637ee7f69b60e01b82528183816104e88c8b3360243560043560048701614767565b03925af19182156107485761051b9360009361074d575b506040516313849cfd60e21b8152938492839260048401614711565b038188600435165afa90811561074857600091610727575b5060005b87811061064257505050505060005b838110610559576105576001606555565b005b806105bb610569600193886143bc565b51516020610577848a6143bc565b510151906040610587858b6143bc565b510151906060610597868c6143bc565b5101519160806105a7878d6143bc565b510151936024359260443590600435615265565b6105c581876143bc565b515160206105d4838888614455565b013560406105e3848989614455565b604080519485526044356001600160a01b031660208601528401929092520135606082015260043584169033906024358616907f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d78869490608090a401610546565b61064b81613ef4565b61065581846143bc565b5161067561066383886143bc565b5161066e858a6143bc565b5190614681565b14908115916106e9575b5061068c57600101610537565b6106a28161069b8793866143bc565b51926143bc565b51604051638791019960e01b81526001600160a01b036004803582169083015260248083019490945292359092166044830152336064830152608482015260a490fd5b0390fd5b905061071f61070d610700610706610700856143d0565b876143bc565b51936143d0565b5161071884896143bc565b51906143de565b14153861067f565b610742913d8091833e61073a81836115ff565b8101906146ec565b38610533565b613230565b8061075a61076092611544565b8061170b565b386104ff565b61076f81613ef4565b61077981876143bc565b5161078483896143bc565b5111610793575060010161048d565b6106e56107b888926107b1856107aa8b978b6143bc565b51956143bc565b51946143bc565b51604051938493636906ef1760e11b85526004356024356004870161448a565b6107ec91943d8091833e61073a81836115ff565b9238610489565b6108596002604061084d8560019761084761080f600435613d65565b6108306024359161082186868d614455565b35600052602052604060002090565b9060018060a01b0316600052602052604060002090565b96614455565b01359201918254614681565b8091551561086a575b018790610445565b61089361088e896108308c61082186610884600435613d65565b9260243595614455565b614575565b610862565b906108b56108a7848c8c614455565b604435602435600435615b8b565b6108bf848d6143bc565b526108ca838c6143bc565b506108d6838b8b614455565b356108e184876143bc565b5260406108ef848c8c614455565b01356108fb84896143bc565b5261093c602061090b85886143bc565b51604051627eeac760e11b8152602480356001600160a01b0316600483015281019190915291829081906044820190565b03818c600435165afa90811561074857600091610add575b5061095f84896143bc565b518110610aa35750610999602080610977868f6143bc565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa91821561074857600192858e6109f494600093610a69575b506040916109c3916143bc565b5101526109ee8d60406109e58860206109dc82866143bc565b510151936143bc565b510151906143de565b906143de565b926109fe81613ef4565b610a1d602435610a0e838b6143bc565b6001600160a01b039091169052565b610a3333610a0e610a2d846143d0565b8b6143bc565b610a3d82886143bc565b51610a4882886143bc565b52610a60610700610a59848a6143bc565b51926143d0565b5201919061042c565b6109c391935091610a9360409360203d602011610a9c575b610a8b81836115ff565b810190613221565b939150916109b6565b503d610a81565b876106e5610abc86610ab5818b6143bc565b51936143bc565b5192604051938493636906ef1760e11b85526004356024356004870161448a565b610af6915060203d602011610a9c57610a8b81836115ff565b38610954565b60405163d65b0d6960e01b8152806106e560043560243560048401613c29565b610b3e915060203d602011610b44575b610b3681836115ff565b810190614475565b386103c7565b503d610b2c565b60405163aac1ae8b60e01b8152602480356001600160a01b0316600483015290fd5b60405163ab35696f60e01b8152600490fd5b3461028d57602036600319011261028d57600435610b9c8161027c565b610ba4613090565b610bad816165de565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163ed56be5b60e01b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610c43575b50734d41524b4554504c4143455f53455454494e475360601b600080516020616a7e833981519152600080a3005b8061075a610c5092611544565b38610c15565b3461028d57602036600319011261028d57600435610c738161027c565b610c7b613090565b610c848161661d565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163143df10960e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610d14575b506d524f59414c54595f454e47494e4560901b600080516020616a7e833981519152600080a3005b8061075a610d2192611544565b38610cec565b606090600319011261028d57600435610d3f8161027c565b9060243590604435610d508161027c565b90565b3461028d576020610d93610d71610d6936610d27565b929091613d9e565b90600052835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b3461028d57602036600319011261028d57600435610db98161027c565b610dc1613090565b610dca81616656565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163632c2a3160e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857610e5c575b506f5354414b494e475f524547495354525960801b600080516020616a7e833981519152600080a3005b8061075a610e6992611544565b38610e32565b9181601f8401121561028d578235916001600160401b03831161028d576020808501948460051b01011161028d57565b3461028d5760408060031936011261028d576004908135610ebf8161027c565b6024356001600160401b03811161028d57610edd9036908501610e6f565b929093610ee861423c565b610ef184615ef3565b60015b848110610fa0575050506001600160a01b03811660005b838110610f1c576105576001606555565b80610f2b610f95928688614565565b356002610f4e3361083084610f3f8a613d65565b90600052602052604060002090565b015415610f9a57610f6961088e3361083084610f3f8a613d65565b83337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a4613c59565b610f0b565b50613c59565b610fab818688614565565b6000198201903582821161102057610fc482888a614565565b351015610fda5750610fd590613c59565b610ef4565b9286610ff78388610ff06106e596988286614565565b3593614565565b915163f48f718f60e01b8152938401948552602085015235604084015290918291606090910190565b613c43565b3461028d57602036600319011261028d576004356110428161027c565b61104a613090565b61105381616691565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d5760405163148282a760e21b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576110e8575b50724e4554574f524b5f42454e454649434941525960681b600080516020616a7e833981519152600080a3005b8061075a6110f592611544565b386110bb565b3461028d57602036600319011261028d576004356111188161027c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691906111513084141561315f565b61116e6000805160206169fe8339815191529382855416146131c0565b611176613090565b60405190611183826115c9565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156111bd57505061055791506132e9565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181611214575b506112015760405162461bcd60e51b8152806106e56004820161329a565b6105579361120f911461323c565b613379565b61122d91925060203d8111610a9c57610a8b81836115ff565b90386111e3565b90815180825260208080930193019160005b828110611254575050505090565b83516001600160a01b031685529381019392810192600101611246565b90815180825260208080930193019160005b828110611291575050505090565b835160ff1685529381019392810192600101611283565b90610d50916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a06112f8608084015160c08385015260e0840190611234565b9201519060c0601f1982850301910152611271565b3461028d576113bd61135861133561132436610d27565b92909161132f6142f9565b50613d65565b9060005260205260406000209060018060a01b0316600052602052604060002090565b6113ac60056040519261136a8461155c565b80546001600160a01b031684526001810154602085015260028101546040850152600381015460608501526113a1600482016147bd565b608085015201614815565b60a0820152604051918291826112a8565b0390f35b3461028d5760408060031936011261028d576004356113df8161027c565b6024356001600160401b03811161028d576113fe903690600401610292565b91909261140961423c565b61141a611416338461692e565b1590565b61150d57916114298185615e17565b6001600160a01b0382169060005b818110611448576105576001606555565b80611457611508928489614455565b3561146281876157c1565b847fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f89896114ee86898c6114db866114ca8b610f3f6020958a6114b48a8a8a6114ac83838c614455565b013598614455565b01356114be611620565b95865287860152613dd7565b906020600191805184550151910155565b6114e6838388614455565b013594614455565b8b519283520135602082015280604081015b0390a3613c59565b611437565b51600162bed83560e01b03198152915081906106e590339060048401613c29565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161155757604052565b61152e565b60c081019081106001600160401b0382111761155757604052565b61014081019081106001600160401b0382111761155757604052565b60e081019081106001600160401b0382111761155757604052565b604081019081106001600160401b0382111761155757604052565b602081019081106001600160401b0382111761155757604052565b606081019081106001600160401b0382111761155757604052565b90601f801991011681019081106001600160401b0382111761155757604052565b6040519061162d826115ae565b565b6040519061162d82611577565b6040519061162d82611593565b6040519061162d8261155c565b6040519060a082018281106001600160401b0382111761155757604052565b6001600160401b03811161155757601f01601f191660200190565b604036600319011261028d576004356116a88161027c565b602435906001600160401b03821161028d573660238301121561028d578160040135906116d482611675565b916116e260405193846115ff565b808352366024828601011161028d57602081600092602461055797018387013784010152613488565b600091031261028d57565b3461028d57600036600319011261028d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611770576040516000805160206169fe8339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461028d57604036600319011261028d576117fb6004356117f68161027c565b613e10565b6024356000526020526020604060002054604051908152f35b3461028d576020610d93610d7161182a36610d27565b929091613e49565b81516001600160a01b031681526101408101929161162d91906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461028d57600080600319360112611ac0576113bd90611ab460405161191e81611577565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611a8361196661162f565b6000805160206169de833981519152546001600160a01b0316815293600080516020616b3e833981519152546119b0906001600160a01b03165b6001600160a01b03166020870152565b600080516020616ade833981519152546001600160a01b03166040860152600080516020616afe833981519152546001600160a01b03166060860152600080516020616a1e833981519152546001600160a01b03166080860152600080516020616a9e833981519152546001600160a01b031660a0860152600080516020616abe833981519152546001600160a01b031660c08601526000805160206169be833981519152546001600160a01b031660e0860152600080516020616a3e833981519152546001600160a01b031690850152565b7f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1309546001600160a01b031690830152565b60405191829182611832565b80fd5b604060031982011261028d57600435611adb8161027c565b916024356001600160401b039283821161028d578060238301121561028d57816004013593841161028d5760248460061b8301011161028d576024019190565b3461028d57611b2936611ac3565b611b3492919261423c565b611b41611416338461692e565b611bea57611b4f8184615e85565b60005b818110611b63576105576001606555565b80611b72611be5928487614465565b35611b7d81866157c1565b602080611b8b84878a614465565b0135611b9a83610f3f89613e10565b55611ba6838689614465565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b62908060208101611500565b611b52565b604051600162bed83560e01b03198152806106e5338560048401613c29565b90610d50916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611c6660a084015160e083850152610100840190611234565b9201519060e0601f1982850301910152611271565b3461028d5760408060031936011261028d57806113bd91600435611c9e8161027c565b611cda825191611cad83611593565b606060c0600094858152856020820152858782015285838201528560808201528260a08201520152613e82565b60243582526020522090611d4d6006825193611cf585611593565b80546001600160a01b031685526001810154611d19906001600160a01b03166119a0565b6002810154848601526003810154606086015260048101546080860152611d42600582016147bd565b60a086015201614815565b60c08301525191829182611c09565b3461028d57600080600319360112611ac057611d76613090565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b3461028d5761016036600319011261028d57610557600435611ddb8161027c565b602435611de78161027c565b604435611df38161027c565b606435611dff8161027c565b608435611e0b8161027c565b60a435611e178161027c565b60c43591611e248361027c565b60e43593611e318561027c565b6101043595611e3f8761027c565b6101243597611e4d8961027c565b6101443599611e5b8b61027c565b613698565b606036600319011261028d576004611e78813561027c565b611e8360243561027c565b6044356001600160401b03811161028d57611ea19036908301610e6f565b91611eaa61423c565b60ff600080516020616b1e833981519152541661228f57611ecb8383615da9565b611ed66024356155bc565b611edf836142c7565b611ee8846142c7565b611ef18561432d565b916000805b87811061214c5750611f0a90602435615f35565b60005b8681106120b6575083356001600160a01b03163b1561028d57604051630d4498e760e21b81529160009183918291611f4991903389850161441f565b03818387356001600160a01b03165af18015610748576120a3575b5060005b848110611f79576105576001606555565b806020611f88600193856143bc565b510151612044575b611f9a81846143bc565b5151611fba6060611fab84876143bc565b5101516001600160a01b031690565b906040611fc8848a8a61437d565b01357f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c61203b6020611ffb878d8d61437d565b013560405191829133978a8060a01b038d351696602435918590606092959493608083019660018060a01b03809316845260208401521660408201520152565b0390a401611f68565b61209e602061205383866143bc565b510151604061206284876143bc565b5101516120746060611fab86896143bc565b608061208086896143bc565b5101519160a0612090878a6143bc565b510151936024358a35614f78565b611f90565b8061075a6120b092611544565b38611f64565b806120c4600192898961437d565b356120d381610f3f8935613ebb565b54612119575b6120e781610f3f8935613e10565b546120f4575b5001611f0d565b612107906108303391610f3f8a35613e49565b61211181546143d0565b9055386120ed565b6040612126838b8b61437d565b013561214561213d3361083085610f3f8d35613d9e565b9182546143de565b90556120d9565b61216561215a828a8a61437d565b336024358935615881565b61216f82876143bc565b5261217a81866143bc565b5060208061218883886143bc565b5101516121cb575b508061219e600192876143bc565b51516121aa82866143bc565b5260406121b8828b8b61437d565b01356121c482876143bc565b5201611ef6565b600080516020616b3e83398151915254919290916121f1906001600160a01b0316610386565b906122268380612201878b6143bc565b5101516040948b86518095819482936361fe24a960e11b845283019190602083019252565b03915afa9283156107485760019461226b946109ee93600091612272575b5082612250898d6143bc565b51015261225d878b6143bc565b510151906109e5878b6143bc565b9190612190565b6122899150823d8411610a9c57610a8b81836115ff565b38612244565b60405163ab35696f60e01b8152fd5b3461028d57602036600319011261028d576004356122bb8161027c565b6122c3613090565b6122cc816166cf565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d576040516362cd1f1560e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612365575b507653504143455f4f50455241544f525f524547495354525960481b600080516020616a7e833981519152600080a3005b8061075a61237292611544565b38612334565b3461028d57604036600319011261028d576117fb6004356123988161027c565b613ebb565b8015150361028d57565b3461028d57602036600319011261028d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b19260206004356123e78161239d565b6123ef613090565b1515600080516020616b1e83398151915260ff1981541660ff8316179055604051908152a1005b3461028d57600036600319011261028d576033546040516001600160a01b039091168152602090f35b3461028d57602036600319011261028d5760043561245c8161027c565b612464613090565b61246d81616711565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051631d1d389760e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576124f7575b50675041594d454e545360c01b600080516020616a7e833981519152600080a3005b8061075a61250492611544565b386124d5565b3461028d57600036600319011261028d57602060ff600080516020616b1e83398151915254166040519015158152f35b9060a060031983011261028d576004356125538161027c565b916024356125608161027c565b91604435916001600160401b039081841161028d578060238501121561028d5783600401359382851161028d578160248660071b8301011161028d57602401939260643583811161028d57826125b891600401610e6f565b9390939260843591821161028d576125d291600401610e6f565b9091565b3461028d576125e43661253a565b6125f597969197959492939561423c565b60ff600080516020616b1e8339815191525416610b6d57612619611416338961692e565b612785576126278386615d10565b612630826155bc565b61263c8189868961612c565b60005b838110612650576105576001606555565b878787838787878f8c612664868689613c7e565b3597612670898b6157c1565b8660208061267f838a8d613c7e565b0135888b60409b8c9261269192613c7e565b0135898c60609586926126a392613c7e565b0135906126ae61163c565b338152926001600160a01b038b1684860152838d01528483015260808201526126d8368686613caa565b60a08201528b8d6126ea368a8a613d0d565b60c08401526126f890613e82565b6000918252602052604090209061270e916140ad565b6127198d898c613c7e565b0135988c89612729828b85613c7e565b01359861273592613c7e565b01359651968796339b600160a01b600190031699612753978961417f565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a461278090613c59565b61263f565b604051600162bed83560e01b03198152806106e5338a60048401613c29565b3461028d5760408060031936011261028d576127de6004356127c58161027c565b6000602084516127d4816115ae565b8281520152613dd7565b6024356000526020528060002081516127f6816115ae565b60206001835493848452015491019081528251918252516020820152f35b3461028d57600036600319011261028d57600080516020616a5e833981519152546040516001600160a01b039091168152602090f35b3461028d5761285836611ac3565b61286392919261423c565b612870611416338461692e565b611bea5761287e8184615e85565b60005b818110612892576105576001606555565b806128a1612914928487614465565b356128ac81866157c1565b6020806128ba84878a614465565b01356128c983610f3f89613ebb565b556128d5838689614465565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e61908060208101611500565b612881565b3461028d57600036600319011261028d57602060405160648152f35b3461028d57602036600319011261028d576004356129528161027c565b61295a613090565b612963816167c1565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d576040516328b80cf560e21b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af48015610748576129fb575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b600080516020616a7e833981519152600080a3005b8061075a612a0892611544565b386129cb565b3461028d57602036600319011261028d57600435612a2b8161027c565b612a33613090565b612a3c816167c1565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051631f1afd0d60e01b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612ad5575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b600080516020616a7e833981519152600080a3005b8061075a612ae292611544565b38612aa4565b3461028d57602036600319011261028d57600435612b058161027c565b612b0d613090565b612b1681616744565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051632867932b60e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612baf575b5076415050524f5645445f544f4b454e5f524547495354525960481b600080516020616a7e833981519152600080a3005b8061075a612bbc92611544565b38612b7e565b3461028d57602036600319011261028d57600435612bdf8161027c565b612be7613090565b612bf081616786565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561028d57604051632d8b49e160e11b81526000805160206169de83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af4801561074857612c82575b506f5354414b494e475f53455454494e475360801b600080516020616a7e833981519152600080a3005b8061075a612c8f92611544565b38612c58565b3461028d57602036600319011261028d57600435612cb28161027c565b612cba613090565b6001600160a01b03811615612cd25761055790613116565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461028d57612d343661253a565b90612d449792969395949761423c565b60ff600080516020616b1e8339815191525416610b6d57612d658886615d10565b612d6e846155bc565b612d7a8282898961612c565b612d8383615678565b600080516020616a5e83398151915254612dc790602090612dac906001600160a01b0316610386565b6040518093819263e985e9c560e01b83523360048401613c29565b03816001600160a01b0388165afa90811561074857600091613000575b5015612fe45760005b888110612dfe576105576001606555565b612e09818a88613c7e565b35868a6060612e37856040612e2e82866020612e2683838c613c7e565b013598613c7e565b0135938c613c7e565b01358215612fd2578115612fc05780151580612fb6575b612f9657604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa90811561074857600091612f77575b50828110612f5657507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d839289612f498f8f8c918f97918d92612f328a612f519f9e9d8e612f2d91612eee612edf611649565b6001600160a01b039095168552565b60208401528b6040840152846060840152612f0a368888613caa565b6080840152612f1a368a8a613d0d565b60a08401526108303391610f3f8d613d65565b6144bc565b60405197889760018060a01b03169b339b8961417f565b0390a4613c59565b612ded565b604051636906ef1760e11b81529081906106e59085888d336004870161448a565b612f90915060203d602011610a9c57610a8b81836115ff565b38612e8c565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b5042811115612e4e565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b8152806106e5853360048401613c29565b613019915060203d602011610b4457610b3681836115ff565b38612de4565b3461028d57602036600319011261028d5760043561303c8161027c565b613044613090565b61304d816167c1565b6001600160a01b031661305f816130e8565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b600080516020616a7e833981519152600080a3005b6033546001600160a01b031633036130a457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020616a5e83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561316657565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156131c757565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261028d575190565b6040513d6000823e3d90fd5b1561324357565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561331e576000805160206169fe83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b90613383826132e9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a280511580159061342d575b6133c5575050565b61342a91600080604051936133d9856115e4565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613424613593565b916135c3565b50565b5060006133bd565b9061343f826132e9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613480576133c5575050565b5060016133bd565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692906134c13085141561315f565b6134de6000805160206169fe8339815191529482865416146131c0565b6134e6613090565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561351c57505061162d91506132e9565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613573575b506135605760405162461bcd60e51b8152806106e56004820161329a565b61162d9361356e911461323c565b613435565b61358c91925060203d8111610a9c57610a8b81836115ff565b9038613542565b3d156135be573d906135a482611675565b916135b260405193846115ff565b82523d6000602084013e565b606090565b9192901561362557508151156135d7575090565b3b156135e05790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156136385750805190602001fd5b60405162461bcd60e51b8152602060048201529081906106e59060248301905b919082519283825260005b848110613684575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201613663565b989694929099979593916000549a60ff8c60081c1615809c819d6137be575b811561379e575b5015613742576136e49a8c6136db600160ff196000541617600055565b61372957613a16565b6136ea57565b6136fa61ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b61373d61010061ff00196000541617600055565b613a16565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b159150816137b0575b50386136be565b6001915060ff1614386137a9565b600160ff82161091506136b7565b519061162d8261027c565b908161014091031261028d576137eb61162f565b906137f5816137cc565b8252613803602082016137cc565b6020830152613814604082016137cc565b6040830152613825606082016137cc565b6060830152613836608082016137cc565b608083015261384760a082016137cc565b60a083015261385860c082016137cc565b60c083015261386960e082016137cc565b60e083015261010061387c8183016137cc565b9083015261388e6101208092016137cc565b9082015290565b80516000805160206169de83398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020616b3e833981519152805483169184169190911790556040830151600080516020616ade833981519152805483169184169190911790556060830151600080516020616afe833981519152805483169184169190911790556080830151600080516020616a1e8339815191528054831691841691909117905560a0830151600080516020616a9e8339815191528054831691841691909117905560c0830151600080516020616abe8339815191528054831691841691909117905560e08301516000805160206169be83398151915280548316918416919091179055610100830151600080516020616a3e83398151915280549092169083161790556101209091015161162d91167f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130980546001600160a01b0319166001600160a01b03909216919091179055565b95613af1979293959a98949996613a2c81616691565b613a35836165de565b613a3e856166cf565b613a478761661d565b613a508b616711565b613a598c616744565b613a6282616786565b613a6b84616656565b613a74866167c1565b613a7d886167c1565b613a868a6167c1565b60405163ef8c824960e01b81526001600160a01b039182166004820152928116602484015293841660448301529483166064820152978216608489015297811660a488015291821660c487015295811660e48601529485166101048501528416610124840152919291565b61014080846101448173__$c98ca6a62396e5a7a1471db151198a1f31$__5af4801561074857613b3494613b2e92600092613b4c575b5050613895565b166130e8565b613b3c613bd9565b613b44613c0d565b61162d613bfc565b613b6b9250803d10613b72575b613b6381836115ff565b8101906137d7565b3880613b27565b503d613b59565b15613b8057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b613bf360ff60005460081c16613bee81613b79565b613b79565b61162d33613116565b61162d60ff60005460081c16613b79565b613c2260ff60005460081c16613bee81613b79565b6001606555565b6001600160a01b0391821681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b60001981146110205760010190565b634e487b7160e01b600052603260045260246000fd5b9190811015613c8e5760071b0190565b613c68565b6001600160401b0381116115575760051b60200190565b9291613cb582613c93565b91613cc360405193846115ff565b829481845260208094019160051b810192831161028d57905b828210613ce95750505050565b8380918335613cf78161027c565b815201910190613cdc565b60ff81160361028d57565b9291613d1882613c93565b91613d2660405193846115ff565b829481845260208094019160051b810192831161028d57905b828210613d4c5750505050565b8380918335613d5a81613d02565b815201910190613d3f565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e13116020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130e6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130c6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130f6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e13106020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130b6020526040902090565b6001600160a01b031660009081527f094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130d6020526040902090565b908160011b918083046002149015171561102057565b8181029291811591840414171561102057565b818110613f28575050565b60008155600101613f1d565b90600160401b811161155757815490808355818110613f5257505050565b61162d9260005260206000209182019101613f1d565b90600160401b8111611557578154818355808210613f8557505050565b61162d92600052601f6020600020918180850160051c8401941680613fb1575b500160051c0190613f1d565b600019908186019182549160200360031b1c16905538613fa5565b9080516001600160401b03811161155757613fe78184613f68565b613ffb602080930193600052602060002090565b908060051c9260005b8481106140775750601f1982169091039081614022575b5050505050565b9390600094855b82811061404057505050500155388080808061401b565b909192958261406c600192846140578b5160ff1690565b919060ff809160031b9316831b921b19161790565b970193929101614029565b6000805b83811061408f575084820155600101614004565b9690836140a46001928a614057865160ff1690565b9201970161407b565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161155757819061413f8686613f34565b0192600052806000209160005b85811061416c575050505050505090600660c061162d9301519101613fcc565b845182168482015593820193860161414c565b93928692979896919360c086019160018060a01b0380961687526020998a8801526040870152606086015260c060808601525260e08301939060005b81811061420c575050505080820360a0909101528181528201929160005b8281106141e7575050505090565b90919293828060019260ff88356141fd81613d02565b168152019501939291016141d9565b909193929897969485806001928c88356142258161027c565b1681520195019101989293949697989190916141bb565b60026065541461424d576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6040519061429f826115ae565b6001825260203681840137565b604051906142b9826115e4565b600282526040366020840137565b906142d182613c93565b6142de60405191826115ff565b82815280926142ef601f1991613c93565b0190602036910137565b604051906143068261155c565b606060a0836000815260006020820152600060408201526000838201528260808201520152565b9061433782613c93565b61434460405191826115ff565b8281528092614355601f1991613c93565b019060005b82811061436657505050565b6020906143716142f9565b8282850101520161435a565b9190811015613c8e5760051b81013590607e198136030182121561028d570190565b805115613c8e5760200190565b805160011015613c8e5760400190565b8051821015613c8e5760209160051b010190565b906001820180921161102057565b9190820180921161102057565b90815180825260208080930193019160005b82811061440b575050505090565b8351855293810193928101926001016143fd565b6001600160a01b039091168152606060208201819052610d50939192614447918401906143eb565b9160408184039101526143eb565b9190811015613c8e576060020190565b9190811015613c8e5760061b0190565b9081602091031261028d5751610d508161239d565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b0385116115575781906145258686613f34565b0192600052806000209160005b858110614552575050505050505090600560a061162d9301519101613fcc565b8451821684820155938201938601614532565b9190811015613c8e5760051b0190565b6005600091828155826001820155826002820155826003820155600481018054848255806145cb575b50500190815490808355816145b257505050565b60208161162d94601f935220910160051c810190613f1d565b6145de9185526020852090810190613f1d565b388061459e565b6040519060a082018281106001600160401b0382111761155757604052606060808360008152600060208201526000604082015282808201520152565b9061462c82613c93565b61463960405191826115ff565b828152809261464a601f1991613c93565b019060005b82811061465b57505050565b6020906146666145e5565b8282850101520161464f565b60001981019190821161102057565b9190820391821161102057565b81601f8201121561028d578051916146a583613c93565b926146b360405194856115ff565b808452602092838086019260051b82010192831161028d578301905b8282106146dd575050505090565b815181529083019083016146cf565b9060208282031261028d5781516001600160401b03811161028d57610d50920161468e565b9092916040820191604081528451809352606081019260208096019060005b81811061474a57505050610d5093948184039101526143eb565b82516001600160a01b031686529487019491870191600101614730565b93602095926147ac9461479e9360018060a01b0392838092168952168888015216604086015260c0606086015260c08501906143eb565b9083820360808501526143eb565b9060a0818303910152600081520190565b9060405191828154918282526020928383019160005283600020936000905b8282106147f25750505061162d925003836115ff565b85546001600160a01b0316845260019586019588955093810193909101906147dc565b9060408051809380549261483c614830858560209181520190565b92600052602060002090565b9360005b81601f820110614c585761162d955492828210614c42575b828210614c28575b828210614c0e575b828210614bf4575b828210614bda575b828210614bc0575b828210614ba6575b828210614b8c575b828210614b75575b50818110614b5d575b818110614b45575b818110614b2d575b818110614b15575b818110614afd575b818110614ae5575b818110614acd575b818110614ab5575b818110614a9d575b818110614a85575b818110614a6d575b818110614a55575b818110614a3d575b818110614a25575b818110614a0d575b8181106149f5575b8181106149dd575b8181106149c5575b8181106149ad575b818110614995575b81811061497d575b818110614965575b10614957575b5003836115ff565b60f81c81526020013861494f565b60f083901c60ff168452926001906020019301614949565b60e883901c60ff168452926001906020019301614941565b60e083901c60ff168452926001906020019301614939565b60d883901c60ff168452926001906020019301614931565b60d083901c60ff168452926001906020019301614929565b60c883901c60ff168452926001906020019301614921565b60c083901c60ff168452926001906020019301614919565b60b883901c60ff168452926001906020019301614911565b60b083901c60ff168452926001906020019301614909565b60a883901c60ff168452926001906020019301614901565b60a083901c60ff1684529260019060200193016148f9565b609883901c60ff1684529260019060200193016148f1565b609083901c60ff1684529260019060200193016148e9565b608883901c60ff1684529260019060200193016148e1565b608083901c60ff1684529260019060200193016148d9565b607883901c60ff1684529260019060200193016148d1565b607083901c60ff1684529260019060200193016148c9565b606883901c60ff1684529260019060200193016148c1565b606083901c60ff1684529260019060200193016148b9565b605883901c60ff1684529260019060200193016148b1565b605083901c60ff1684529260019060200193016148a9565b604883901c60ff1684529260019060200193016148a1565b83901c60ff16845292600190602001930138614898565b603884901c60ff1685529093600190602001940190614890565b603084901c60ff1685529093600190602001940190614888565b602884901c60ff1685529093600190602001940190614880565b602084811c60ff1686529194909160019101940190614878565b601884901c60ff1685529093600190602001940190614870565b601084901c60ff1685529093600190602001940190614868565b600884901c60ff1685529093600190602001940190614860565b60ff841685529093600190602001940190614858565b919350916001610400602092614ef68854614eeb60ff614c7c8582851660ff169052565b614ec4614d29614e748d614e2489614dd48e614ca18184018a8d60081c1660ff169052565b614cb48584018a8d60101c1660ff169052565b888b610200606095614ccf878201858560181c1660ff169052565b614ce46080958585888501921c1660ff169052565b614d8a60a097614cfd898401878760281c1660ff169052565b614d3a60c09b614d168d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b614d4f6101208401878760481c1660ff169052565b614d646101408401878760501c1660ff169052565b614d796101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b614d9f6101a08201858560681c1660ff169052565b614db46101c08201858560701c1660ff169052565b614dc96101e08201858560781c1660ff169052565b01921c1660ff169052565b614de96102208c01888b60881c1660ff169052565b614dfe6102408c01888b60901c1660ff169052565b614e136102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b614e396102a08a01868960a81c1660ff169052565b614e4e6102c08a01868960b01c1660ff169052565b614e636102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b614e896103208801848760c81c1660ff169052565b614e9e6103408801848760d01c1660ff169052565b614eb36103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b614ed96103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492614840565b90604051614f1381611593565b60c0614f5e6006839560018060a01b038082541686526001820154166020860152600281015460408601526003810154606086015260048101546080860152611d42600582016147bd565b910152565b9081602091031261028d5751610d5081613d02565b96959493909196614f8c8289958a866153b7565b600080516020616ade83398151915254614fae906001600160a01b0316610386565b604051635dc22eff60e01b81526001600160a01b03841660048201526020928382602481865afa918215610748576000926151a7575b5060009115615116575050604051632260494f60e01b81526001600160a01b039390931660048401529091908290829060249082905afa9081156107485760ff926000926150e9575b50505b1695606487116150c95761505261504b61162d979883613f0a565b6064900490565b9081615060575b5050616274565b816150c292945061507091614681565b92615079614292565b6000805160206169de833981519152546150a89061509f906001600160a01b0316610386565b610a0e8361439f565b6150b0614292565b91806150bb8461439f565b5284616353565b3880615059565b60405163d6849ff160e01b81526004810188905260646024820152604490fd5b6151089250803d1061510f575b61510081836115ff565b810190614f63565b388061502d565b503d6150f6565b600080516020616b3e8339815191525491945061516f92508391615142906001600160a01b0316610386565b60405163b28a7bad60e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9182156107485760ff939261518a575b5050615030565b6151a09250803d1061510f5761510081836115ff565b3880615183565b6151bf919250843d8611610b4457610b3681836115ff565b9038614fe4565b91909160408184031261028d578051926001600160401b039384811161028d5782019381601f8601121561028d5784516151ff81613c93565b9061520d60405192836115ff565b808252602096878084019260051b8201019185831161028d5788809201905b83821061524c57505050509483015190811161028d57610d50920161468e565b828091835161525a8161027c565b81520191019061522c565b9692959197939061527a87968793888c6153b7565b600080516020616afe8339815191525461529c906001600160a01b0316610386565b604051637a99dc0160e11b81526001600160a01b039990991660048a01526024890191909152604488019690965260009586908890606490829084905af19788156107485786978799615378575b50865b89518810156153135761530761530d916107188a8d6143bc565b97613c59565b966152ed565b929598919497909396508883116153585761162d979883615338575b50505050616274565b8361534f94965061534891614681565b9484616353565b3880808061532f565b6040516344783bd360e11b815260048101849052602481018a9052604490fd5b9098506153989197503d8088833e61539081836115ff565b8101906151c6565b96909697386152ea565b9081602091031261028d5751610d508161027c565b600080516020616abe8339815191525461540694929391906153e1906001600160a01b0316610386565b93604051809563470d6ed960e11b825281806020998a95600483019190602083019252565b03915afa9384156107485760009461559d575b5081841161557d57811561401b5761542f6142ac565b926154b2866154556103866000805160206169de8339815191525460018060a01b031690565b9261546384610a0e8961439f565b6000805160206169be83398151915254615485906001600160a01b0316610386565b60405163e286ef3360e01b81526001600160a01b0390921660048301529092839190829081906024820190565b03915afa9081156107485761162d97600092615550575b506001600160a01b03916154e391508216610a0e876143ac565b6154fc6154ef866143ac565b516001600160a01b031690565b1661553b5761550f905b610a0e856143ac565b6155176142ac565b936155228184614681565b61552b8661439f565b52615535856143ac565b52616353565b5061550f61554b6154ef856143ac565b615506565b61556f9250803d10615576575b61556781836115ff565b8101906153a2565b38806154c9565b503d61555d565b604051639bdfbb5160e01b81526004810183905260248101859052604490fd5b6155b5919450853d8711610a9c57610a8b81836115ff565b9238615419565b6001600160a01b0381161515806155f8575b6155d55750565b60405163cd5f748960e01b81526001600160a01b03919091166004820152602490fd5b50600080516020616a9e8339815191525461561b906001600160a01b0316610386565b604051632d5ad3d560e01b81526001600160a01b038316600482015290602090829060249082905afa9081156107485760009161565a575b50156155ce565b615672915060203d8111610b4457610b3681836115ff565b38615653565b803b1580156156ab575b6156895750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b8083526024820152602481526156d4816115e4565b519084617530fa6000513d82615728575b508161571e575b508061570e575b806156ff575b15615682565b5061570981615791565b6156f9565b5061571881615734565b156156f3565b90501515386156ec565b602011159150386156e5565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152615764816115e4565b5191617530fa6000513d82615785575b508161577e575090565b9050151590565b60201115915038615774565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152615764816115e4565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156107485760009161582e575b5015615803575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b615846915060203d8111610a9c57610a8b81836115ff565b386157f9565b903590601e198136030182121561028d57018035906001600160401b03821161028d57602001918160051b3603831361028d57565b9061588a6142f9565b5083359360409384820135916158ab6158a688610f3f88613e82565b614f06565b805190956001600160a01b03939091841615615b645786516158da90611416906001600160a01b03168461692e565b615b39576158f76158ee606085018561584c565b90838c866167e3565b8415615b285761590a89610f3f84613ebb565b5461591c826108308c610f3f87613d9e565b5481151580615b16575b615acd57505061593989610f3f84613e10565b549061594c816108308c610f3f87613e49565b549082151580615abc575b615a835750505050608085015180151580615a7a575b615a5a57506060850151428111615a415750602001359285850151808503615a21575060208501516001600160a01b03169180821690831603615a065750506159f9916159b991613f0a565b82519093906000906001600160a01b03169160c060a0860151950151956159de611649565b97885260208801528601526001600160a01b03166060850152565b608083015260a082015290565b6106e58651928392632e834cbf60e11b845260048401613c29565b8651631d6bbb8d60e11b8152600481018690526024810191909152604490fd5b865163456afd0b60e01b81526004810191909152602490fd5b8651635bdd08f560e01b8152600481018590526024810191909152604490fd5b5080841161596d565b895163ae3586c560e01b81526001600160a01b039485166004820152602481018c9052931660448401526064830152608482015260a490fd5b5082615ac7836143d0565b11615957565b8951636d03a2e560e01b81526001600160a01b039485166004820152602481018c905292909316604483015260648201869052608482019290925260a481019190915260c49150fd5b5081615b2288836143de565b11615926565b875163c6b949a960e01b8152600490fd5b86518851600162bed83560e01b031981529081906106e5906001600160a01b03168560048401613c29565b8751634ed1072f60e11b81526001600160a01b0383166004820152602481018a9052604490fd5b9192615b956145e5565b5080359360409283830135918215615cff57615bb88261083089610f3f8a613d65565b956002870154928315615cd05760038801549081151580615cc6575b615c9257505086546001600160a01b0390811692915081168203615a065750506020600186015493013592838103615c725750818110615c545750600592615c22615c4c9593600093613f0a565b615c2a611656565b9687526020870152850152615c41600482016147bd565b606085015201614815565b608082015290565b83516364b7fccd60e11b815260048101929092526024820152604490fd5b8451631d6bbb8d60e11b8152600481018590526024810191909152604490fd5b8751635493bdef60e11b81526001600160a01b039384166004820152602481018b9052921660448301526064820152608490fd5b5042821115615bd4565b8651630bac95f560e21b81526001600160a01b039283166004820152602481018a905291166044820152606490fd5b845163c6b949a960e01b8152600490fd5b90615d1a81615ef3565b60015b818110615d2957505050565b615d34818385613c7e565b6000198201903582821161102057615d4d828587613c7e565b351015615d635750615d5e90613c59565b615d1d565b8183615d77615d7e936106e5959688613c7e565b3595613c7e565b3560405193849363f48f718f60e01b8552600485016040919493926060820195825260208201520152565b90615db381615ef3565b60015b818110615dc257505050565b615dcd81838561437d565b6000198201903582821161102057615de682858761437d565b351015615dfc5750615df790613c59565b615db6565b8183615e10615d7e936106e595968861437d565b359561437d565b90615e2181615ef3565b60015b818110615e3057505050565b615e3b818385614455565b6000198201903582821161102057615e54828587614455565b351015615e6a5750615e6590613c59565b615e24565b8183615e7e615d7e936106e5959688614455565b3595614455565b90615e8f81615ef3565b60015b818110615e9e57505050565b615ea9818385614465565b6000198201903582821161102057615ec2828587614465565b351015615ed85750615ed390613c59565b615e92565b8183615eec615d7e936106e5959688614465565b3595614465565b8015615f235760648111615f045750565b6044906040519063f80a484560e01b8252600482015260646024820152fd5b60405163c2e5347d60e01b8152600490fd5b908015615f455761162d91615f60565b505034615f4e57565b60405163429465b160e01b8152600490fd5b6001600160a01b03811680156160ec57346160da576040516370a0823160e01b808252306004830152602092908383602481855afa928315610748576000936160bb575b50600080516020616a3e83398151915254615fc7906001600160a01b0316610386565b90813b1561028d57604051630aed65f560e11b81526001600160a01b038716600482015233602482015230604482015260648101889052916000908390608490829084905af19182156107485785926160a8575b5060405190815230600482015291829060249082905afa9081156107485761604c9360009261608b575b5050614681565b82810361605857505050565b604051636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b6160a19250803d10610a9c57610a8b81836115ff565b3880616045565b8061075a6160b592611544565b3861601b565b6160d3919350843d8611610a9c57610a8b81836115ff565b9138615fa4565b60405163d9efa38960e01b8152600490fd5b50508034036160f85750565b6040516305e4640960e21b81526004810191909152346024820152604490fd5b35610d508161027c565b35610d5081613d02565b9192909283156162625760058411616242578184036162205792919060009384935b828510616186575050505050606481036161655750565b6040516357623e5560e01b8152600481019190915260646024820152604490fd5b90919293946161a161038661619c888589614565565b616118565b15616207576161c26161bc6161b7888787614565565b616122565b60ff1690565b156161ee576161df6161e5916109ee6161bc6161b78a8989614565565b95613c59565b9392919061614e565b60405163d4c1893560e01b815260048101879052602490fd5b6040516306f5730d60e41b815260048101879052602490fd5b50604051632db4fb2960e01b8152600481018490526024810191909152604490fd5b6040516366a4d05560e01b81526004810185905260056024820152604490fd5b60405163d218e6a560e01b8152600490fd5b91929390835185519081810361632057505061629084516142c7565b92819260005b865180821015616311576162aa8991614672565b82036162cb575080856162c06162c693896143bc565b52613c59565b616296565b81956162f661504b6162f06161bc6162e96162c69761630b976143bc565b5160ff1690565b88613f0a565b616300888a6143bc565b5261066e87896143bc565b94613c59565b5050955061162d949250616353565b604051632db4fb2960e01b815260048101919091526024810191909152604490fd5b906020610d50928181520190613658565b9192939083518551908181036164a1575050600092835b865185101561638a5761630b61638491610718878a6143bc565b9361636a565b90929491935083810361648057506001600160a01b039182169283156163f1575060005b81518110156163e957806163df6163cb6154ef6163e494866143bc565b856163d6848b6143bc565b519116876164c3565b613c59565b6163ae565b505050509050565b60009495925084935061644061644e616421610386600080516020616a1e8339815191525460018060a01b031690565b94604051928391602083019663c176e63960e01b885260248401614711565b03601f1981018352826115ff565b51925af161645a613593565b90156164635750565b604051634c0fe4a160e11b81529081906106e59060048301616342565b604051633bc6f52760e21b8152600481018590526024810191909152604490fd5b6040516345e8c29760e11b815260048101919091526024810191909152604490fd5b60405163a9059cbb60e01b60208083019182526001600160a01b0394909416602483015260448083019590955293815291926165569291600090819061650a6064866115ff565b60018060a01b03169260405194616520866115ae565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1613424613593565b8051908282159283156165c6575b5050501561656f5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6165d69350820181019101614475565b388281616564565b6001600160a01b0316156165ee57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b03161561662d57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b03161561666657565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b0316156166a157565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b0316156166df57565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b03161561672157565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b03161561675457565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b03161561679657565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b0316156167d157565b60405163c49074af60e01b8152600490fd5b6167ef90949294613dd7565b9060005260205260406000209060405191616809836115ae565b600181549182855201549081602085015215908115616898575b50616892576168689261141692604051602081019061685d816164408a856014916bffffffffffffffffffffffff199060601b1681520190565b5190209051906168a3565b61686f5750565b60405163e2cf60cb60e01b81526001600160a01b03919091166004820152602490fd5b50505050565b905042101538616823565b92909291600080925b8084106168bb57505050501490565b909192936168fe906168ce868487614565565b35808211616906576040805160208101938452908101919091526168f58160608101616440565b51902094613c59565b9291906168ac565b604080516020810192835290810192909252906169268160608101616440565b51902061630b565b6000806040516020810190638da5cb5b60e01b825260048152616950816115ae565b5190845afa9061695e613593565b911580156169b2575b61699057508060208061697f935183010191016153a2565b6001600160a01b0390811691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b50602082511061696756fe094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1307094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1304094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1308094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e130a376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1305094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1306094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1302094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1303094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1312094ebcede13e570fe473dc3b580b6f2befba2d2420d1e71f35699327bd0e1301a26469706673582212204ff4f871ea35358802f3010be34de8b577d27e1796c1b5b1eae1c9afa02cf06c64736f6c63430008120033","sourceMap":"1370:67832:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1370:67832:73;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;:::i;:::-;2471:103:25;;:::i;:::-;1370:67832:73;-1:-1:-1;;;;;;;;;;;971:66:21;1370:67832:73;7028:54;;22629:9;;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;22653:10;1370:67832;;;;22653:21;22649:66;;22847:16;1370:67832;;22847:16;:::i;:::-;22899;1370:67832;;22899:16;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;23140:68;;1370:67832;;23174:33;;-1:-1:-1;;;;;1370:67832:73;;-1:-1:-1;;;;;1370:67832:73;;;23174:33;1370:67832;;971:66:21;;;;;;;23140:68:73;;1370:67832;;;23140:68;;;:::i;:::-;;1370:67832;;;;;23140:68;;;;;;;-1:-1:-1;23140:68:73;;;1370:67832;23139:69;;23135:156;;23378:27;;;:::i;:::-;23442;;;;:::i;:::-;23514:31;23528:16;;;:::i;:::-;23514:31;:::i;:::-;23590;23604:16;;;:::i;23590:31::-;23680:42;;;;:::i;:::-;23732:22;-1:-1:-1;23770:13:73;24342:58;1370:67832;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;24342:58;23785:16;;;;;1370:67832;25034:10;1370:67832;;;;25034:10;:::i;:::-;25061:13;-1:-1:-1;25076:16:73;;;;;;;-1:-1:-1;;1370:67832:73;;-1:-1:-1;;;25754:56:73;;1370:67832;971:66:21;-1:-1:-1;;1370:67832:73;;25754:56;;971:66:21;1370:67832:73;25754:56;;;:::i;:::-;;1370:67832;;;;;25754:56;;;;;;;-1:-1:-1;25754:56:73;;;25056:646;25825:13;-1:-1:-1;25840:16:73;;;;;;-1:-1:-1;;;;;;;;;;;;1370:67832:73;26349:46;;-1:-1:-1;;;;;1370:67832:73;;;26349:46;:108;;;;;;-1:-1:-1;1370:67832:73;;971:66:21;;;;;26349:108:73;;22653:10;;;26349:108;22653:10;;;1370:67832;;;;;26349:108;;;:::i;:::-;;;;;;;;;;26509:56;26349:108;-1:-1:-1;26349:108:73;;;25820:430;-1:-1:-1;1370:67832:73;;-1:-1:-1;;;26509:56:73;;1370:67832;;;;;;26509:56;;;:::i;:::-;;1370:67832;;;;;26509:56;;;;;;;-1:-1:-1;26509:56:73;;;25820:430;26580:13;-1:-1:-1;26595:16:73;;;;;;27125:13;;;;;-1:-1:-1;27140:16:73;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;2536:1;1370:67832:73;27125:13;27336:17;27586:29;27336:17;1370:67832;27336:17;;;:::i;:::-;;1370:67832;;27413:17;;;;:::i;:::-;;:29;1370:67832;27460:17;1370:67832;27460:17;;;;:::i;:::-;;:32;1370:67832;27535:17;1370:67832;27535:17;;;;:::i;:::-;;:33;;27586:17;1370:67832;27586:17;;;;:::i;:::-;;:29;;1370:67832;;;;;;;;;27586:29;:::i;:::-;27758:17;;;;:::i;:::-;;1370:67832;;27835:12;;;;;:::i;:::-;:18;1370:67832;;27871:12;;;;;:::i;:::-;1370:67832;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;27871:21;1370:67832;;;;;;;;;;22653:10;;1370:67832;;;;;27649:257;;1370:67832;;27649:257;1370:67832;27125:13;;26580;26651:5;;;:::i;:::-;26691:35;;;;:::i;:::-;1370:67832;26730:49;:36;;;;:::i;:::-;1370:67832;26769:10;;;;:::i;:::-;1370:67832;26730:49;;:::i;:::-;26691:88;;;;:208;;;26580:13;26670:370;;;1370:67832;;26580:13;;26670:370;27014:10;26980:11;;;;;;:::i;:::-;1370:67832;27014:10;;:::i;:::-;1370:67832;;;-1:-1:-1;;;26939:86:73;;-1:-1:-1;;;;;1370:67832:73;;;;;26939:86;;;1370:67832;;;;;;;;;;;;;;;;;;22653:10;1370:67832;;;;;;;;;;26939:86;;;;;26691:208;26825:16;;26846:53;:40;26869:16;26803:39;26825:16;;;:::i;:::-;26803:39;;:::i;:::-;1370:67832;26869:16;;:::i;26846:40::-;1370:67832;26889:10;;;;:::i;:::-;1370:67832;26846:53;;:::i;:::-;26803:96;;26691:208;;;26509:56;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;26349:108::-;;;;;;:::i;:::-;;;:::i;:::-;;;;25825:13;25902:5;;;:::i;:::-;25925:42;;;;:::i;:::-;1370:67832;25970:10;;;;:::i;:::-;1370:67832;-1:-1:-1;25921:259:73;;1370:67832;;;25825:13;;25921:259;26007:158;26105:42;26080:11;;26093:10;26080:11;;;;;;:::i;:::-;1370:67832;26093:10;;:::i;:::-;1370:67832;26105:42;;:::i;:::-;1370:67832;;;24171:91;;;;;;26007:158;;1370:67832;;;;;26007:158;;;:::i;25754:56::-;;;;;;;;;;;;;:::i;:::-;;;;;25061:13;25350:43;23543:1;1370:67832;25372:12;1370:67832;;;25176:61;:30;1370:67832;;25176:30;:::i;:::-;:52;1370:67832;;25207:12;;;;;;:::i;:::-;1370:67832;;;;;;;;;;25176:52;1370:67832;;;;;;;;;;;;;;;;25176:61;25372:12;;:::i;:::-;:21;1370:67832;25350:18;;1370:67832;;;25350:43;:::i;:::-;1787:1:25;;;25411:23:73;25407:225;;25061:13;1370:67832;25061:13;;;;25407:225;25549:68;25556:61;1370:67832;25556:52;1370:67832;25587:12;1370:67832;25556:30;1370:67832;;25556:30;:::i;:::-;1370:67832;;;25587:12;;:::i;25556:61::-;25549:68;:::i;:::-;25407:225;;23770:13;23912:12;23838:87;23912:12;;;;;:::i;:::-;1370:67832;;;;;;23838:87;:::i;:::-;23818:107;;;;:::i;:::-;;;;;;:::i;:::-;;23954:12;;;;;:::i;:::-;1370:67832;23940:34;;;;:::i;:::-;1370:67832;;24001:12;;;;;:::i;:::-;:21;1370:67832;23988:34;;;;:::i;:::-;1370:67832;24061:39;1370:67832;24088:11;;;;:::i;:::-;1370:67832;;;-1:-1:-1;;;24061:39:73;;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;24061:39;;1370:67832;;;;;;;;;;;;;;;;;24061:39;;1370:67832;;;;;24061:39;;;;;;;-1:-1:-1;24061:39:73;;;23770:13;24134:10;;;;;:::i;:::-;1370:67832;24118:26;;24114:163;;24401:17;24342:89;1370:67832;24401:17;;;;;:::i;:::-;;:29;1370:67832;;;971:66:21;;;;;;;24342:89:73;;1370:67832;24342:89;;1370:67832;;;;;;;;24342:89;;;;;;;;;;;1370:67832;24342:89;;;24445:78;24342:89;-1:-1:-1;24342:89:73;;;23770:13;24291:17;1370:67832;24291:17;;;;:::i;:::-;;:32;1370:67832;24459:64;:17;1370:67832;24491:17;24459;1370:67832;24459:17;;;;:::i;:::-;;:29;1370:67832;24491:17;;:::i;:::-;;:32;1370:67832;24459:64;;:::i;:::-;24445:78;;:::i;:::-;24561:5;;;;:::i;:::-;24580:39;1370:67832;;24580:39;;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;;24580:39;24633:46;22653:10;24633:46;24649:16;;;:::i;:::-;24633:46;;:::i;:::-;24725:11;;;;:::i;:::-;1370:67832;24693:43;;;;:::i;:::-;1370:67832;24750:47;24766:16;24786:11;;;;:::i;:::-;1370:67832;24766:16;;:::i;24750:47::-;1370:67832;;;23770:13;;;24342:89;24291:17;24342:89;;;;;1370:67832;24342:89;1370:67832;24342:89;1370:67832;24342:89;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;24114:163;24223:11;24171:91;24236:10;24223:11;;;;;:::i;:::-;1370:67832;24236:10;;:::i;:::-;1370:67832;;;;24171:91;;;;;;;;1370:67832;;;;;24171:91;;;:::i;24061:39::-;;;;1370:67832;24061:39;1370:67832;24061:39;;;;;;;:::i;:::-;;;;23135:156;1370:67832;;23231:49;;;;;1370:67832;23231:49;1370:67832;;;;;23231:49;;;:::i;23140:68::-;;;;1370:67832;23140:68;1370:67832;23140:68;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;22649:66;1370:67832;;-1:-1:-1;;;22683:32:73;;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;22683:32;;1370:67832;;26939:86;7028:54;1370:67832;;-1:-1:-1;;;7066:16:73;;1370:67832;;7066:16;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;33294:26:73;;;:::i;:::-;33417:57;:79;;;;;;1370:67832;;-1:-1:-1;;;33417:79:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;33417:79;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;33417:79;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;33512:78:73;1370:67832;33417:79;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;34619:20:73;;;:::i;:::-;34736:51;:67;;;;;;1370:67832;;-1:-1:-1;;;34736:67:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;34736:67;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;34736:67;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;34819:66:73;1370:67832;34736:67;;;;;;:::i;:::-;;;;1370:67832;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;29862:77;:57;1370:67832;;;:::i;:::-;29862:57;;;;:::i;:::-;1370:67832;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;29862:77;1370:67832;;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;37115:22:73;;;:::i;:::-;37234:53;:71;;;;;;1370:67832;;-1:-1:-1;;;37234:71:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;37234:71;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;37234:71;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;37321:70:73;1370:67832;37234:71;;;;;;:::i;:::-;;;;1370:67832;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;54194:16:73;;;:::i;:::-;54238:1;54241:20;;;;;;-1:-1:-1;;;;;;;;1370:67832:73;;;21815:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;21837:3:73;21874:12;;21837:3;21874:12;;;;:::i;:::-;1370:67832;21964:60;:51;22004:10;21964:39;:30;;;;:::i;:::-;1370:67832;;;;;;;;;;21964:51;:60;1370:67832;21964:65;21960:112;;22180:58;22187:51;22004:10;22187:39;:30;;;;:::i;22180:58::-;22004:10;;22258:57;1370:67832;22258:57;;21837:3;:::i;:::-;21800:13;;21960:112;22049:8;21837:3;:::i;54263:::-;54286:12;;;;;:::i;:::-;-1:-1:-1;;1370:67832:73;;;;;;;;;54302:16;;;;;:::i;:::-;1370:67832;-1:-1:-1;54286:32:73;54282:141;;54263:3;;;;:::i;:::-;54226:13;;54282:141;54377:16;;54395:12;54377:16;;;54345:63;54377:16;;;;;:::i;:::-;1370:67832;54395:12;;:::i;:::-;1370:67832;;-1:-1:-1;;;54345:63:73;;;;;1370:67832;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;32614:25:73;;;:::i;:::-;32736:56;:77;;;;;;1370:67832;;-1:-1:-1;;;32736:77:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;32736:77;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;32736:77;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;32829:76:73;1370:67832;32736:77;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1898:6:24;1370:67832:73;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;1370:67832:73;;;;;;:::i;:::-;-1:-1:-1;1370:67832:73;;971:66:21;;1370:67832:73;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;1370:67832:73;;;;;;;;971:66:21;;;;;;;3383:63;;1370:67832:73;;3383:63:21;;-1:-1:-1;;3383:63:21;;;3232:526;-1:-1:-1;3379:302:21;;1370:67832:73;;-1:-1:-1;;;3610:56:21;;1370:67832:73;3610:56:21;1370:67832:73;3610:56:21;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;1370:67832:73;3383:63:21;;;;;;;;;:::i;:::-;;;;;1370:67832:73;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;31444:66;:47;1370:67832;;;:::i;:::-;;;;;;:::i;:::-;;31444:47;:::i;:::-;1370:67832;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;31444:66;1370:67832;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;16506:47:73;16507:46;16542:10;16507:46;;:::i;:::-;16506:47;;1370:67832;16506:47;16502:106;;16651:9;;;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;-1:-1:-1;16692:20:73;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;16714:3:73;16751:12;;16714:3;16751:12;;;;:::i;:::-;1370:67832;16826:7;;;;:::i;:::-;1370:67832;17114:96;1370:67832;;17184:12;1370:67832;;;;;16929:65;1370:67832;16929:56;1370:67832;17050:12;;17069;17050;;;;;;;;:::i;:::-;:17;1370:67832;17069:12;;:::i;:::-;:25;1370:67832;;;:::i;:::-;;;;17013:82;;;1370:67832;16929:56;:::i;:65::-;1370:67832;;;;;;1787:1:25;;1370:67832:73;;;;1787:1:25;1370:67832:73;;17165:12;;;;;:::i;:::-;:17;1370:67832;17184:12;;:::i;:::-;1370:67832;;;;;17184:25;1370:67832;;;;;;;;;17114:96;;;;16714:3;:::i;:::-;16677:13;;16502:106;1370:67832;-1:-1:-1;;;;;;16562:46:73;;1370:67832;-1:-1:-1;1370:67832:73;;16562:46;;16542:10;;1370:67832;16562:46;;;:::i;1370:67832::-;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;;-1:-1:-1;;1370:67832:73;;;;:::o;:::-;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;3901:220:24;1370:67832:73;;;;;;;;;;3901:220:24;:::i;1370:67832:73:-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1370:67832:73;;;;2333:6:24;-1:-1:-1;;;;;1370:67832:73;2324:4:24;2316:23;1370:67832:73;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;30306:49;1370:67832;;;;;:::i;:::-;30306:49;:::i;:::-;1370:67832;;-1:-1:-1;1370:67832:73;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;30863:75;:55;1370:67832;;;:::i;:::-;30863:55;;;;:::i;1370:67832::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;-1:-1:-1;;;;;1370:67832:73;;-1:-1:-1;;;;;1370:67832:73;;;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;18438:47:73;18439:46;18474:10;18439:46;;:::i;18438:47::-;18434:106;;18578:9;;;;:::i;:::-;18616:1;18619:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;18641:3:73;18678:12;;18641:3;18678:12;;;;:::i;:::-;1370:67832;18753:7;;;;:::i;:::-;18921:18;:12;;;;;;:::i;:::-;:18;1370:67832;18860:58;:49;;;;:::i;:58::-;1787:1:25;19001:12:73;;;;;:::i;:::-;1370:67832;;19001:18;;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;;18958:62;;1370:67832;;;;18958:62;1370:67832;18641:3;18604:13;;18434:106;1370:67832;;-1:-1:-1;;;;;;18494:46:73;;1370:67832;18494:46;18474:10;1370:67832;;18494:46;;;:::i;1370:67832::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28404:54;1370:67832;;;;;;:::i;:::-;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28404:54;:::i;:::-;1370:67832;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1303:62:17;;:::i;:::-;2758:6;1370:67832:73;;-1:-1:-1;;;;;;1370:67832:73;;;;;;;-1:-1:-1;;;;;1370:67832:73;2806:40:17;1370:67832:73;;2806:40:17;1370:67832:73;;;;;;;;-1:-1:-1;;1370:67832:73;;;;8218:2213;1370:67832;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;8218:2213;:::i;1370:67832::-;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;:::i;:::-;2471:103:25;;;:::i;:::-;1370:67832:73;-1:-1:-1;;;;;;;;;;;971:66:21;1370:67832:73;7028:54;;13034:9;;;;:::i;:::-;13081:16;1370:67832;;13081:16;:::i;:::-;13242:27;;;:::i;:::-;13306;;;:::i;:::-;13390:40;;;:::i;:::-;13440:22;-1:-1:-1;13478:13:73;13493:16;;;;;;1370:67832;14302:10;1370:67832;;;14302:10;:::i;:::-;-1:-1:-1;14344:16:73;;;;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;;;;;1370:67832:73;15128:73;;;;1370:67832;;-1:-1:-1;;;15128:73:73;;1370:67832;-1:-1:-1;;1370:67832:73;;;;15128:73;;1370:67832;13629:10;15128:73;;;;:::i;:::-;;1370:67832;;;;-1:-1:-1;;;;;1370:67832:73;15128:73;;;;;;;;14324:710;15217:13;-1:-1:-1;15232:16:73;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;15217:13:73;15363:17;1370:67832;15363:17;1370:67832;15363:17;;;:::i;:::-;;:29;1370:67832;15359:438;;15217:13;15882:17;;;;:::i;:::-;;1370:67832;15953:24;1370:67832;15953:17;;;;:::i;:::-;;:24;2779:18;-1:-1:-1;;;;;1370:67832:73;;2779:18;15953:24;15995:12;1370:67832;15995:12;;;;;:::i;:::-;:21;1370:67832;15816:284;;1370:67832;16068:12;;;;;:::i;:::-;:18;1370:67832;;;13629:10;;;;1370:67832;;;;;;;;;;;;15816:284;;1370:67832;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15816:284;;;;1370:67832;15217:13;;15359:438;15735:29;1370:67832;15529:17;;;;:::i;:::-;;:29;1370:67832;;15580:17;;;;:::i;:::-;;:32;1370:67832;15634:24;1370:67832;15634:17;;;;:::i;:24::-;15680:33;:17;;;;:::i;:::-;;:33;;15735:17;1370:67832;15735:17;;;;:::i;:::-;;:29;;1370:67832;;;;;15735:29;:::i;:::-;15359:438;;15128:73;;;;;;:::i;:::-;;;;14329:13;14395:12;;1370:67832;14395:12;;;;:::i;:::-;1370:67832;14434:43;1370:67832;14434:34;1370:67832;;14434:34;:::i;:43::-;1370:67832;14430:269;;14329:13;14717:41;1370:67832;14717:32;1370:67832;;14717:32;:::i;:41::-;1370:67832;14713:251;;14329:13;1370:67832;;14329:13;;14713:251;14885:59;13629:10;14885:47;13629:10;1370:67832;14885:38;1370:67832;;14885:38;:::i;:59::-;:64;1370:67832;;14885:64;:::i;:::-;1787:1:25;;14713:251:73;;;14430:269;1370:67832;14663:12;;;;;:::i;:::-;:21;1370:67832;14598:86;:61;13629:10;14598:49;1370:67832;14598:40;1370:67832;;14598:40;:::i;:61::-;1370:67832;;;14598:86;:::i;:::-;1787:1:25;;14430:269:73;;13478:13;13562:92;13641:12;;;;;:::i;:::-;13629:10;1370:67832;;;;13562:92;:::i;:::-;13526:128;;;;:::i;:::-;;;;;;:::i;:::-;;1370:67832;13672:17;;;;;:::i;:::-;;:29;1370:67832;13668:313;;13478:13;14009:17;;;1370:67832;14009:17;;;:::i;:::-;;1370:67832;13995:39;;;;:::i;:::-;1370:67832;;14061:12;;;;;:::i;:::-;:21;1370:67832;14048:34;;;;:::i;:::-;1370:67832;;13478:13;;13668:313;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;13781:58;;-1:-1:-1;;;;;1370:67832:73;;;13781:58;13840:17;13781:89;13840:17;;;;;;:::i;:::-;;:29;1370:67832;;;;;;971:66:21;;;;;;;;;13781:89:73;;;;1370:67832;;;;;;;;13781:89;;;;;;;;;;1370:67832;13781:89;13888:78;13781:89;13902:64;13781:89;-1:-1:-1;13781:89:73;;;13668:313;13726:17;;;;;;:::i;:::-;;:32;1370:67832;13902:17;;;;:::i;:::-;;:29;1370:67832;13934:17;;;;;:::i;13888:78::-;13668:313;;;;13781:89;;;;;;;;;;;;;;:::i;:::-;;;;7028:54;1370:67832;;-1:-1:-1;;;7066:16:73;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;33978:29:73;;;:::i;:::-;34104:59;:83;;;;;;1370:67832;;-1:-1:-1;;;34104:83:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;34104:83;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;34104:83;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;34203:83:73;1370:67832;34104:83;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;29327:51;1370:67832;;;;;:::i;:::-;29327:51;:::i;1370:67832::-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1370:67832:73;;;;39743:32;1370:67832;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1370:67832:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;;;;39743:32;1370:67832;;;;;;;-1:-1:-1;;1370:67832:73;;;;1513:6:17;1370:67832:73;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;35217:14:73;;;:::i;:::-;35328:46;:57;;;;;;1370:67832;;-1:-1:-1;;;35328:57:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;35328:57;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;35328:57;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;35401:55:73;1370:67832;35328:57;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;-1:-1:-1;;;;;;;;;;;971:66:21;1370:67832:73;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;;;:::i;:::-;1370:67832:73;-1:-1:-1;;;;;;;;;;;971:66:21;1370:67832:73;7028:54;;11332:47;11333:46;11368:10;11333:46;;:::i;11332:47::-;11328:131;;11619:9;;;;:::i;:::-;11666:16;;;:::i;:::-;11724:12;;;;;;:::i;:::-;-1:-1:-1;11768:20:73;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;11790:3:73;11827:12;;;;;;;;;;;;;;:::i;:::-;1370:67832;11902:7;;;;;:::i;:::-;12202:18;;:12;;;;;;:::i;:::-;:18;1370:67832;12238:22;;;:12;;;;;;:::i;:::-;:22;1370:67832;12278:21;;;:12;;;;;;:::i;:::-;:21;1370:67832;;;;:::i;:::-;11368:10;1370:67832;;11368:10;-1:-1:-1;;;;;1370:67832:73;;12085:292;;;1370:67832;12085:292;;;1370:67832;12085:292;;;1370:67832;12085:292;;;1370:67832;;;;;;:::i;:::-;12085:292;;;1370:67832;;;;;;;;:::i;:::-;12085:292;;;1370:67832;12019:54;;;:::i;:::-;1370:67832;;;;;;;;;;;;;:::i;:::-;12557:12;;;;;:::i;:::-;:18;1370:67832;12593:12;;;;;;;;:::i;:::-;:22;1370:67832;12633:12;;;;:::i;:::-;:21;1370:67832;;;11368:10;;;;1370:67832;;;;;;;;12397:335;;;;;:::i;:::-;;;;;11790:3;;;:::i;:::-;11753:13;;11328:131;1370:67832;;-1:-1:-1;;;;;;11402:46:73;;1370:67832;11402:46;11368:10;1370:67832;;11402:46;;;:::i;1370:67832::-;;;;;;;;;;;;;28888:56;1370:67832;;;;;:::i;:::-;-1:-1:-1;1370:67832:73;;;;;;:::i;:::-;;;;;;28888:56;:::i;:::-;1370:67832;;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;17530:47:73;17531:46;17566:10;17531:46;;:::i;17530:47::-;17526:106;;17670:9;;;;:::i;:::-;17708:1;17711:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;17733:3:73;17770:12;;17733:3;17770:12;;;;:::i;:::-;1370:67832;17845:7;;;;:::i;:::-;18012:18;:12;;;;;;:::i;:::-;:18;1370:67832;17949:60;:51;;;;:::i;:60::-;1787:1:25;18094:12:73;;;;;:::i;:::-;1370:67832;;18094:18;;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;;18049:64;;1370:67832;;;;18049:64;1370:67832;17733:3;17696:13;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;3383:3;1370:67832;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;37738:21:73;;;:::i;:::-;37856:58;:81;;;;;;1370:67832;;-1:-1:-1;;;37856:81:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;37856:81;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;37856:81;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;37953:81:73;1370:67832;37856:81;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;38434:22:73;;;:::i;:::-;38553:59;:83;;;;;;1370:67832;;-1:-1:-1;;;38553:83:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;38553:83;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;38553:83;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;38652:83:73;1370:67832;38553:83;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;35837:29:73;;;:::i;:::-;35963:59;:83;;;;;;1370:67832;;-1:-1:-1;;;35963:83:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;35963:83;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;35963:83;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;36062:83:73;1370:67832;35963:83;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;36488:22:73;;;:::i;:::-;36607:53;:71;;;;;;1370:67832;;-1:-1:-1;;;36607:71:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;36607:71;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;36607:71;;;;;;;;1370:67832;-1:-1:-1;;;;;;;;;;;;;;;;;36694:70:73;1370:67832;36607:71;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;2402:22:17;1370:67832:73;;2496:8:17;;;:::i;1370:67832:73:-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;;:::i;:::-;1370:67832:73;-1:-1:-1;;;;;;;;;;;971:66:21;1370:67832:73;7028:54;;19539:9;;;;:::i;:::-;19586:16;;;:::i;:::-;19644:12;;;;;;:::i;:::-;19692:16;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;19883:88;;;;19920:50;;-1:-1:-1;;;;;1370:67832:73;;;19920:50;1370:67832;;971:66:21;;;;;;;19883:88:73;;19908:10;1370:67832;19883:88;;;:::i;:::-;;1370:67832;-1:-1:-1;;;;;1370:67832:73;;19883:88;;;;;;;-1:-1:-1;19883:88:73;;;1370:67832;19882:89;;19878:179;;-1:-1:-1;20087:20:73;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;20109:3:73;20146:12;;;;;:::i;:::-;1370:67832;20196:12;;20307:27;:12;20196;1370:67832;20247:12;20196;;19883:88;20196:12;;;;;:::i;:::-;:18;1370:67832;20247:12;;:::i;:::-;:21;1370:67832;20307:12;;;:::i;:::-;:27;1370:67832;20353:10;;20349:46;;20413:13;;20409:48;;20475:19;;;:56;;;20109:3;20471:161;;1370:67832;;-1:-1:-1;;;20737:38:73;;19908:10;1370:67832;20737:38;;1370:67832;;;;;;;19883:88;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;20737:38;;;;;;;-1:-1:-1;20737:38:73;;;20109:3;20793:24;;;;20789:158;;1370:67832;21286:292;1370:67832;;;21286:292;1370:67832;;;;;;;;;;;20109:3;1370:67832;;;;21052:68;1370:67832;21123:143;1370:67832;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;;21123:143;19883:88;21123:143;;1370:67832;21123:143;1370:67832;21123:143;;1370:67832;21123:143;20307:27;21123:143;;1370:67832;;;;;;:::i;:::-;21123:143;;;1370:67832;;;;;;:::i;:::-;;21123:143;;1370:67832;21052:56;19908:10;21052:47;;;;:::i;:68::-;1370:67832;:::i;:::-;;;;;;;;;;;;19908:10;;21286:292;;;:::i;:::-;;;;20109:3;:::i;:::-;20072:13;;20789:158;1370:67832;;-1:-1:-1;;;20844:88:73;;1370:67832;;;20844:88;;1370:67832;;;19908:10;1370:67832;20844:88;;;:::i;20737:38::-;;;;19883:88;20737:38;19883:88;20737:38;;;;;;;:::i;:::-;;;;20471:161;1370:67832;;-1:-1:-1;;;20558:59:73;;1370:67832;20558:59;;1370:67832;;;;20601:15;1370:67832;;;;;;26939:86;20475:56;20516:15;;20498:33;;;20475:56;;20409:48;1370:67832;;-1:-1:-1;;;20435:22:73;;1370:67832;;20435:22;20349:46;1370:67832;;-1:-1:-1;;;20372:23:73;;1370:67832;;20372:23;19878:179;1370:67832;;-1:-1:-1;;;19994:52:73;;1370:67832;19994:52;1370:67832;19908:10;1370:67832;19994:52;;;:::i;19883:88::-;;;;;;;;;;;;;;:::i;:::-;;;;1370:67832;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;39104:23:73;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;39230:92;1370:67832;39230:92;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;39338:85:73;1370:67832;1599:130:17;1513:6;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;929:10:34;1662:23:17;1370:67832:73;;1599:130:17:o;1370:67832:73:-;;;;3610:56:21;;;1370:67832:73;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;-1:-1:-1;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;:::o;2666:187:17:-;2758:6;1370:67832:73;;-1:-1:-1;;;;;1370:67832:73;;;-1:-1:-1;;;;;;1370:67832:73;;;;;;;;;;2806:40:17;-1:-1:-1;;2806:40:17;2666:187::o;1370:67832:73:-;;;;:::o;:::-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;971:66:21;;;;;;;;;;;:::o;:::-;1370:67832:73;;971:66:21;;;;;;;;;;;:::o;:::-;1370:67832:73;;-1:-1:-1;;;971:66:21;;;;;;;;;;;1370:67832:73;971:66:21;1370:67832:73;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;;;;;;;;;;;;1370:67832:73;971:66:21;1370:67832:73;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;:::o;1699:281::-;1713:19:33;;:23;1370:67832:73;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;-1:-1:-1;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;1699:281:21:o;1370:67832:73:-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;2372:276:21;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;2204:27:21;-1:-1:-1;;2204:27:21;1370:67832:73;;2523:15:21;;;:28;;;2372:276;2519:123;;2372:276;;:::o;2519:123::-;7318:69:33;1370:67832:73;-1:-1:-1;1370:67832:73;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;7276:25:33;;;;;;;;;:::i;:::-;7318:69;;:::i;:::-;;2372:276:21:o;2523:28::-;;-1:-1:-1;2523:28:21;;2372:276;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;2204:27:21;;;;1370:67832:73;;2523:15:21;;;:28;;;2519:123;;2372:276;;:::o;2523:28::-;;1370:67832:73;2523:28:21;;1842:226:24;-1:-1:-1;;;;;1898:6:24;1370:67832:73;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;971:66:21;;1370:67832:73;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;3383:63;;1370:67832:73;;;;;;971:66:21;;;;;;;3383:63;;1370:67832:73;;3383:63:21;;;;;;;3232:526;-1:-1:-1;3379:302:21;;1370:67832:73;;-1:-1:-1;;;3610:56:21;;1370:67832:73;3610:56:21;3383:63;3610:56;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;1370:67832:73;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1370:67832:73;;;;:::o;:::-;;;:::o;7682:628:33:-;;;;7886:418;;;1370:67832:73;;;7917:22:33;7913:286;;8212:17;;:::o;7913:286::-;1713:19;:23;1370:67832:73;;8212:17:33;:::o;1370:67832:73:-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;7886:418:33;1370:67832:73;;;;-1:-1:-1;8991:21:33;:17;;9163:142;;;;;;;8987:379;1370:67832:73;;-1:-1:-1;;;9335:20:33;;1370:67832:73;9335:20:33;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;3246:506:23;;;;;;;;;;;3302:13;1370:67832:73;;;;;;;3301:14:23;3347:34;;;;;;3246:506;3346:108;;;;3246:506;1370:67832:73;;;;3636:1:23;3536:16;;;1370:67832:73;;;3302:13:23;1370:67832:73;;;3302:13:23;1370:67832:73;;3536:16:23;3562:65;;3636:1;:::i;:::-;3647:99;;3246:506::o;3647:99::-;3681:21;1370:67832:73;;3302:13:23;1370:67832:73;;3302:13:23;1370:67832:73;;3681:21:23;1370:67832:73;;3551:1:23;1370:67832:73;;3721:14:23;;1370:67832:73;;3721:14:23;3246:506::o;3562:65::-;3596:20;1370:67832:73;;;3302:13:23;1370:67832:73;;;3302:13:23;1370:67832:73;;3596:20:23;3636:1;:::i;1370:67832:73:-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;3346:108:23;3426:4;1713:19:33;:23;;-1:-1:-1;1713:23:33;3387:66:23;;3346:108;;;;;3387:66;3452:1;1370:67832:73;;;;3436:17:23;3387:66;;;3347:34;3380:1;1370:67832:73;;;3365:16:23;;-1:-1:-1;3347:34:23;;2779:18:73;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;-1:-1:-1;;;;;;1370:67832:73;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;;;;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;;;2779:18;;;;;;;1370:67832;2779:18;1370:67832;;-1:-1:-1;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;8218:2213;;2779:18;8218:2213;;;;;;;;;8823:25;;;:::i;:::-;8910:26;;;:::i;:::-;9000:29;;;:::i;:::-;9085:20;;;:::i;:::-;9156:14;;;:::i;:::-;9234:29;;;:::i;:::-;9321:22;;;:::i;:::-;9401;;;:::i;:::-;9459:21;;;:::i;:::-;9516:22;;;:::i;:::-;9574:23;;;:::i;:::-;1370:67832;;-1:-1:-1;;;9780:366:73;;-1:-1:-1;;;;;1370:67832:73;;;9780:366;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;;2779:18;;;1370:67832;;;2779:18;;;1370:67832;;;;;2779:18;9780:366;:14;;2779:18;9780:14;;:366;;;;;;10156:75;9780:366;2779:18;9780:366;-1:-1:-1;9780:366:73;;;8218:2213;2779:18;;;:::i;:::-;1370:67832;10156:75;:::i;:::-;1003:95:17;;:::i;:::-;1868:111:25;;:::i;:::-;1042:67:24;;:::i;9780:366:73:-;;;;;;-1:-1:-1;9780:366:73;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1370:67832;;;;:::o;:::-;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;5328:125:23;5366:69;1370:67832:73;5374:13:23;1370:67832:73;;;;5366:69:23;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:34;1195:12:17;:::i;5328:125:23:-;5366:69;1370:67832:73;5374:13:23;1370:67832:73;;;;5366:69:23;:::i;5328:125::-;5366:69;1370:67832:73;5374:13:23;1370:67832:73;;;;5366:69:23;;;:::i;:::-;1787:1:25;2065:22;1787:1;5328:125:23:o;1370:67832:73:-;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;25176:12;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;29862:39;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;16929:38;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;30306:31;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;30863:37;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;28404:36;1370:67832;;;;;;:::o;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;14434:16;1370:67832;;;;;;:::o;:::-;;;;;;;;;23543:1;1370:67832;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;;;;:::i;:::-;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1370:67832:73;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2779:18;;1370:67832;;-1:-1:-1;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;2779:18;1370:67832;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;-1:-1:-1;;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;1787:1:25;1370:67832:73;;;;;;;1787:1:25;1370:67832:73;;;;;;;1787:1:25;1370:67832:73;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2580:287:25;1830:1;2712:7;1370:67832:73;2712:19:25;1830:1;;;2712:7;1787:1;2580:287::o;1830:1::-;1370:67832:73;;-1:-1:-1;;;1830:1:25;;;;;;;;;;;1370:67832:73;1830:1:25;1370:67832:73;;;1830:1:25;;;;1370:67832:73;;;;;;;:::i;:::-;42089:1;1370:67832;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;46412:1;1370:67832;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1370:67832:73;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;46503:1;1370:67832;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;24342:34;1370:67832;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;2779:18;;1370:67832;;-1:-1:-1;;;;;;1370:67832:73;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;1787:1:25;1370:67832:73;;;;;;;1787:1:25;1370:67832:73;;;;;;;1787:1:25;1370:67832:73;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1370:67832:73;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;:::i;40410:2256::-;;;;;;;;41065:7;40850:33;;41065:7;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;41220:60;;-1:-1:-1;;;;;1370:67832:73;;;41220:60;1370:67832;;-1:-1:-1;;;41220:69:73;;-1:-1:-1;;;;;1370:67832:73;;41220:69;;;1370:67832;41220:69;;;1370:67832;;;41220:69;;;;;;;;:14;:69;;;40410:2256;-1:-1:-1;41220:14:73;;:260;;;-1:-1:-1;;1370:67832:73;;-1:-1:-1;;;41304:67:73;;-1:-1:-1;;;;;1370:67832:73;;;;41220:69;41304:67;;1370:67832;;;;;;;;;;;;41304:67;;;;;;;1370:67832;41304:67;41220:14;41304:67;;;41220:260;;;;1370:67832;41494:24;41515:3;41494:24;;41490:113;;41712:36;41713:28;42646:12;41713:28;;;;:::i;:::-;41515:3;1370:67832;;;;41712:36;41762:15;;41758:720;;41220:260;42646:12;;;:::i;41758:720::-;41888:30;42451:15;41888:30;;;;;;:::i;:::-;42067:24;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;42105:66;;42129:42;;-1:-1:-1;;;;;1370:67832:73;;;42129:42;42105:66;;;:::i;:::-;42220:16;;:::i;:::-;42250:32;;;;;:::i;:::-;1370:67832;42451:15;;:::i;:::-;41758:720;;;;41490:113;1370:67832;;-1:-1:-1;;;41541:51:73;;41220:69;41541:51;;1370:67832;;;41515:3;1370:67832;;;;;;26939:86;41304:67;;;;;;-1:-1:-1;41304:67:73;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;41220:260;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;-1:-1:-1;41386:94:73;;-1:-1:-1;1370:67832:73;;41386:76;;-1:-1:-1;;;;;1370:67832:73;;;41386:76;1370:67832;;-1:-1:-1;;;41386:94:73;;-1:-1:-1;;;;;1370:67832:73;;;41220:69;41386:94;;1370:67832;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;41386:94;;;;;;;;;;1370:67832;41386:94;;;;41220:260;;;;;41386:94;;;;;;-1:-1:-1;41386:94:73;;;;;;:::i;:::-;;;;;41220:69;;;;;;;;;;;;;;;:::i;:::-;;;;;1370:67832;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;43342:1845;;;;;;;;43951:7;43342:1845;;43736:33;43951:7;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;44132:56;;-1:-1:-1;;;;;1370:67832:73;;;44132:56;1370:67832;;-1:-1:-1;;;44132:93:73;;-1:-1:-1;;;;;1370:67832:73;;;;44132:93;;;1370:67832;;;;;;;;;;;;;;;-1:-1:-1;;;;1370:67832:73;;;;;;-1:-1:-1;;44132:93:73;;;;;;;;:31;;:93;;;43342:1845;44315:26;;44393:3;1370:67832;;44371:20;;;;;44412:30;44393:3;44430:12;;;;;:::i;44412:30::-;44393:3;;:::i;:::-;44356:13;;;44371:20;;;;;;;;;;;44546:32;;;44542:103;;45167:12;44660:18;;;44656:343;;44351:102;45167:12;;;;;:::i;44656:343::-;44791:33;44978:9;44791:33;;;;;;:::i;:::-;44978:9;;;:::i;:::-;44656:343;;;;;;44542:103;1370:67832;;-1:-1:-1;;;44587:58:73;;44132:93;44587:58;;1370:67832;;;;;;;;;;;26939:86;44132:93;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;1370:67832;;;;;;;;;2779:18;;;;:::i;45622:1484::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;45961:59;;45622:1484;;;;45961:50;;-1:-1:-1;;;;;1370:67832:73;;;45961:50;1370:67832;;;971:66:21;;;;;45961:59:73;;;;;;;;;;;1370:67832;;;;;;;;45961:59;;;;;;;;;;:14;:59;;;45622:1484;46034:28;;;;46030:126;;46170:20;;46166:57;;46390:24;;:::i;:::-;1370:67832;46516:74;1370:67832;46440:42;1370:67832;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;46440:42;46424:58;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1370:67832:73;46516:65;;-1:-1:-1;;;;;1370:67832:73;;;46516:65;1370:67832;;-1:-1:-1;;;46516:74:73;;-1:-1:-1;;;;;1370:67832:73;;;45961:59;46516:74;;1370:67832;;;;;-1:-1:-1;1370:67832:73;;;;;;;;;46516:74;;;;;;;;;;47091:7;46516:74;45961:14;46516:74;;;45622:1484;-1:-1:-1;;;;;;1370:67832:73;46492:99;;-1:-1:-1;1370:67832:73;;46492:99;;;:::i;:::-;46617:13;;;;:::i;:::-;2779:18;-1:-1:-1;;;;;1370:67832:73;;2779:18;46617:13;1370:67832;46617:88;;46601:104;46617:88;;46601:104;;;:::i;:::-;46850:16;;:::i;:::-;46889:28;;;;;:::i;:::-;46876:41;;;:::i;:::-;1370:67832;46927:23;;;:::i;:::-;1370:67832;47091:7;:::i;46617:88::-;46692:13;46601:104;46692:13;;;;:::i;:::-;46617:88;;46516:74;;;;;;-1:-1:-1;46516:74:73;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;46030:126;1370:67832;;-1:-1:-1;;;46085:60:73;;45961:59;46085:60;;1370:67832;;;;;;;;;;;26939:86;45961:59;;;;;;;;;;;;;;;:::i;:::-;;;;;47265:412;-1:-1:-1;;;;;1370:67832:73;;47453:30;;;:138;;47265:412;47436:235;;47265:412;:::o;47436:235::-;1370:67832;;-1:-1:-1;;;47623:37:73;;-1:-1:-1;;;;;1370:67832:73;;;;47623:37;;;1370:67832;;;26939:86;47453:138;-1:-1:-1;;;;;;;;;;;;1370:67832:73;47504:69;;-1:-1:-1;;;;;1370:67832:73;;;47504:69;1370:67832;;-1:-1:-1;;;47504:87:73;;-1:-1:-1;;;;;1370:67832:73;;47504:87;;;1370:67832;;47504:87;;1370:67832;;;;;;47504:87;;;;;;;47481:1;47504:87;;;47453:138;47503:88;;47453:138;;47504:87;;;;;;;;;;;;;;:::i;:::-;;;;47829:321;47930:28;;:33;:131;;;;47829:321;47913:231;;47829:321;:::o;47913:231::-;1370:67832;;-1:-1:-1;;;48093:40:73;;-1:-1:-1;;;;;1370:67832:73;;;48093:40;;;1370:67832;;;48093:40;47930:131;1370:67832;4592:71:65;-1:-1:-1;1370:67832:73;;4592:71:65;;;1017:25;;;;4592:71;;;;;;1370:67832:73;4592:71:65;;;;;;:::i;:::-;4784:212;;;;;-1:-1:-1;4784:212:65;;5013:29;;;47930:131:73;5013:48:65;;;;47930:131:73;975:149:65;;;;47930:131:73;1543:81:65;;;47930:131:73;47983:78;47930:131;;1543:81:65;1570:54;;;;:::i;:::-;1543:81;;975:149;1060:64;;;;:::i;:::-;1059:65;975:149;;5013:48;5046:15;;;;5013:48;;;:29;4592:71;-1:-1:-1;5024:18:65;;-1:-1:-1;5013:29:65;;;4421:647;-1:-1:-1;4592:71:65;4421:647;1370:67832:73;;4592:71:65;;;1017:25;;;;4592:71;;1370:67832:73;;;4592:71:65;;;1370:67832:73;4592:71:65;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:65;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:65;;-1:-1:-1;5013:29:65;;;4421:647;-1:-1:-1;4592:71:65;4421:647;1370:67832:73;;4592:71:65;;;1017:25;;;;4592:71;;48034:26:73;;;4592:71:65;;;1370:67832:73;4592:71:65;;;;;;:::i;48342:351:73:-;1370:67832;;-1:-1:-1;;;;;;48549:58:73;;;;;1370:67832;;;48549:58;1370:67832;;;-1:-1:-1;;;;;1370:67832:73;;48549:58;;;;;;;-1:-1:-1;48549:58:73;;;48342:351;48549:63;;48545:142;;48342:351;;:::o;48545:142::-;1370:67832;;-1:-1:-1;;;48635:41:73;;-1:-1:-1;;;;;1370:67832:73;;;;48549:58;48635:41;;1370:67832;;;;;;;;;;26939:86;48549:58;;;;;;;;;;;;;;:::i;:::-;;;;1370:67832;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;;;;;;;;;;;;;:::o;49082:2891::-;;1370:67832;;:::i;:::-;;;;49475:17;;;;;;1370:67832;49566:37;1370:67832;49566:46;:37;;;;:::i;:46::-;1370:67832;:::i;:::-;2779:18;;;;-1:-1:-1;;;;;1370:67832:73;;;;;49747:37;49743:100;;2779:18;;49857:60;;49858:59;;-1:-1:-1;;;;;1370:67832:73;49858:59;;:::i;49857:60::-;49853:157;;50077:14;;;;;;;:::i;:::-;;;;;;:::i;:::-;50106:13;;50102:48;;50288:43;:34;;;;:::i;:43::-;1370:67832;50364:57;:40;:49;:40;;;;:::i;:57::-;1370:67832;50435:14;;;:53;;;49082:2891;50431:178;;50748:32;;:41;:32;;;;:::i;:41::-;1370:67832;50820:38;:55;:38;:47;:38;;;;:::i;:55::-;1370:67832;50889:12;;;;:40;;;49082:2891;50885:158;;51162:25;;;;;;;1370:67832;51162:30;;;:70;;;49082:2891;51158:160;;51331:26;50077:14;51331:26;;1370:67832;51360:15;51331:44;;51327:99;;51440:14;;;1370:67832;51458:22;;;;1370:67832;51440:40;;;51436:106;;-1:-1:-1;51440:14:73;51556:32;;2779:18;-1:-1:-1;;;;;1370:67832:73;;;;;;;;51556:52;51552:158;;51791:25;;51736:230;51791:25;;;;:::i;:::-;2779:18;;;;;-1:-1:-1;;;;;;;1370:67832:73;51882:32;51928:28;1370:67832;51882:32;;;51928:28;;;1370:67832;;;:::i;:::-;;;;51440:14;51736:230;;1370:67832;51736:230;;1370:67832;-1:-1:-1;;;;;1370:67832:73;50077:14;51736:230;;1370:67832;;51736:230;51162:25;51736:230;;1370:67832;;51736:230;;1370:67832;49082:2891;:::o;51552:158::-;51631:68;1370:67832;;51631:68;;;;;;;;;;;;:::i;51436:106::-;1370:67832;;-1:-1:-1;;;51489:53:73;;;;;1370:67832;;;;;;;;;;;;26939:86;51327:99;1370:67832;;-1:-1:-1;;;51384:42:73;;;;;1370:67832;;;;;;26939:86;51158:160;1370:67832;;-1:-1:-1;;;51255:52:73;;;;;1370:67832;;;;;;;;;;;;26939:86;51162:70;51196:36;;;;51162:70;;50885:158;1370:67832;;-1:-1:-1;;;50952:80:73;;-1:-1:-1;;;;;1370:67832:73;;;50952:80;;;1370:67832;;;;;;;;;;;;;;;;;;;;;;;26939:86;50889:40;50905:14;;;;;:::i;:::-;:24;50889:40;;50431:178;1370:67832;;-1:-1:-1;;;50511:87:73;;-1:-1:-1;;;;;1370:67832:73;;;50511:87;;;1370:67832;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26939:86:73;50435:53;50453:23;;;;;;:::i;:::-;:35;50435:53;;50102:48;1370:67832;;-1:-1:-1;;;50128:22:73;;;;;49853:157;2779:18;;1370:67832;;-1:-1:-1;;;;;;49940:59:73;;1370:67832;;;49940:59;;-1:-1:-1;;;;;1370:67832:73;2779:18;49940:59;;;;:::i;49743:100::-;1370:67832;;-1:-1:-1;;;49793:50:73;;-1:-1:-1;;;;;1370:67832:73;;49793:50;;;1370:67832;;;;;;;;;26939:86;52389:1573;;;1370:67832;;:::i;:::-;;;;52726:17;;;;;;1370:67832;52757:13;;;52753:48;;52971:65;:47;:56;:47;;;;:::i;:65::-;53136:18;;;;1370:67832;53136:23;;;53132:93;;53239:24;;;1370:67832;53239:29;;;;:76;;;52389:1573;53235:192;;-1:-1:-1;;1370:67832:73;;-1:-1:-1;;;;;1370:67832:73;;;;;-1:-1:-1;1370:67832:73;;53440:45;;53436:144;;53593:15;;53612:14;1370:67832;53593:15;;1370:67832;53612:14;;1370:67832;53593:33;;;;53589:92;;53695:29;;;;53691:104;;53867:25;53924:21;53867:25;;1370:67832;53867:25;;52681:16;53867:25;;:::i;:::-;1370:67832;;:::i;:::-;;;;53612:14;53822:133;;1370:67832;53822:133;;1370:67832;;53897:25;;;1370:67832;:::i;:::-;53822:133;;;1370:67832;53924:21;1370:67832;:::i;:::-;53822:133;;;1370:67832;52389:1573;:::o;53691:104::-;1370:67832;;-1:-1:-1;;;53733:62:73;;;;;1370:67832;;;;;;;;;;26939:86;53589:92;1370:67832;;-1:-1:-1;;;53635:46:73;;;;;1370:67832;;;;;;;;;;;;26939:86;53235:192;1370:67832;;-1:-1:-1;;;53338:78:73;;-1:-1:-1;;;;;1370:67832:73;;;53338:78;;;1370:67832;;;;;;;;;;;;;;;;;;;26939:86;53239:76;53300:15;;53272:43;;;53239:76;;53132:93;1370:67832;;-1:-1:-1;;;53168:57:73;;-1:-1:-1;;;;;1370:67832:73;;;53168:57;;;1370:67832;;;;;;;;;;;;;;;26939:86;52753:48;1370:67832;;-1:-1:-1;;;52779:22:73;;;;;54583:418;;54724:16;;;:::i;:::-;54768:1;54771:20;;;;;;54583:418;;;:::o;54793:3::-;54816:12;;;;;:::i;:::-;-1:-1:-1;;1370:67832:73;;;;;;;;;54840:16;;;;;:::i;:::-;1370:67832;-1:-1:-1;54816:48:73;54812:173;;54793:3;;;;:::i;:::-;54756:13;;54812:173;54923:16;;;54949:12;54923:16;54891:79;54923:16;;;;:::i;:::-;1370:67832;54949:12;;:::i;:::-;1370:67832;;;54345:63;;;;;;54891:79;;;;;1370:67832;;;;;;;;;;;;;;;;;;55138:406;;55267:16;;;:::i;:::-;55311:1;55314:20;;;;;;55138:406;;;:::o;55336:3::-;55359:12;;;;;:::i;:::-;-1:-1:-1;;1370:67832:73;;;;;;;;;55383:16;;;;;:::i;:::-;1370:67832;-1:-1:-1;55359:48:73;55355:173;;55336:3;;;;:::i;:::-;55299:13;;55355:173;55466:16;;;55492:12;55466:16;55434:79;55466:16;;;;:::i;:::-;1370:67832;55492:12;;:::i;55685:448::-;;55856:16;;;:::i;:::-;55900:1;55903:20;;;;;;55685:448;;;:::o;55925:3::-;55948:12;;;;;:::i;:::-;-1:-1:-1;;1370:67832:73;;;;;;;;;55972:16;;;;;:::i;:::-;1370:67832;-1:-1:-1;55948:48:73;55944:173;;55925:3;;;;:::i;:::-;55888:13;;55944:173;56055:16;;;56081:12;56055:16;56023:79;56055:16;;;;:::i;:::-;1370:67832;56081:12;;:::i;56269:418::-;;56410:16;;;:::i;:::-;56454:1;56457:20;;;;;;56269:418;;;:::o;56479:3::-;56502:12;;;;;:::i;:::-;-1:-1:-1;;1370:67832:73;;;;;;;;;56526:16;;;;;:::i;:::-;1370:67832;-1:-1:-1;56502:48:73;56498:173;;56479:3;;;;:::i;:::-;56442:13;;56498:173;56609:16;;;56635:12;56609:16;56577:79;56609:16;;;;:::i;:::-;1370:67832;56635:12;;:::i;57919:202::-;57992:12;;57988:37;;3383:3;58039:24;;58035:79;;57919:202;:::o;58035:79::-;1370:67832;;;;58072:42;;;;;;;;;1370:67832;3383:3;1370:67832;;;;58072:42;57988:37;1370:67832;;-1:-1:-1;;;58013:12:73;;;;;58385:365;;58479:12;;58475:208;;58735:7;;;:::i;58475:208::-;58609:9;;;58605:47;;58666:7::o;58605:47::-;1370:67832;;-1:-1:-1;;;58632:20:73;;;;;59131:1253;-1:-1:-1;;;;;1370:67832:73;;59230:30;;59226:246;;59555:9;59551:56;;1370:67832;;-1:-1:-1;;;59790:30:73;;;59814:4;59790:30;;;1370:67832;59790:30;;;;1370:67832;;;59790:30;;;;;;;;59258:1;59790:30;;;59131:1253;-1:-1:-1;;;;;;;;;;;;1370:67832:73;59932:78;;-1:-1:-1;;;;;1370:67832:73;;;59932:78;:132;;;;;;1370:67832;;-1:-1:-1;;;59932:132:73;;-1:-1:-1;;;;;1370:67832:73;;59790:30;59932:132;;1370:67832;60029:10;1370:67832;;;;59814:4;1370:67832;;;;;;;;;;;-1:-1:-1;;1370:67832:73;;;;;;-1:-1:-1;;59932:132:73;;;;;;;;;;;59131:1253;-1:-1:-1;1370:67832:73;;60187:30;;;59814:4;59790:30;60187;;1370:67832;;;;;;;;60187:30;;;;;;;:46;:30;59258:1;60187:30;;;59131:1253;60187:46;;;:::i;:::-;60247:25;;;60243:135;;59131:1253;;;:::o;60243:135::-;1370:67832;;-1:-1:-1;;;60295:72:73;;-1:-1:-1;;;;;1370:67832:73;;;;59790:30;60295:72;;1370:67832;;;;;;;;;;;;;;;;;26939:86;60187:30;;;;;;-1:-1:-1;60187:30:73;;;;;;:::i;:::-;;;;;59932:132;;;;;;:::i;:::-;;;;59790:30;;;;;;;;;;;;;;;:::i;:::-;;;;;59551:56;1370:67832;;-1:-1:-1;;;59578:29:73;;;;;59226:246;59374:9;;;;:20;59370:71;;59455:7;:::o;59370:71::-;1370:67832;;-1:-1:-1;;;59403:38:73;;;;;1370:67832;;;;59374:9;1370:67832;;;;;;26939:86;1370:67832;;;;;:::i;:::-;;;;;:::i;60601:1000::-;;;;;60816:28;;60812:66;;60918:1;60892:27;;60888:94;;60996:46;;;60992:149;;61223:22;;;60843:1;61260:13;;61255:265;61275:23;;;;;;61534:17;;;;;61548:3;61534:17;;61530:64;;60601:1000;:::o;61530:64::-;1370:67832;;-1:-1:-1;;;61560:34:73;;;;;1370:67832;;;;41515:3;1370:67832;;;;;;26939:86;61300:3;61323:19;;;;;:33;:19;;;;;;:::i;:::-;;:::i;:33::-;;61319:75;;61412:20;:15;;;;;;:::i;:::-;;:::i;:::-;1370:67832;;;;61412:20;;61408:58;;61480:29;61300:3;61494:15;61480:29;61494:15;;;;;;:::i;61480:29::-;61300:3;;:::i;:::-;61260:13;;;;;;61408:58;1370:67832;;-1:-1:-1;;;61441:25:73;;;;;1370:67832;;;;;26939:86;61319:75;1370:67832;;-1:-1:-1;;;61365:29:73;;;;;1370:67832;;;;;26939:86;60992:149;-1:-1:-1;1370:67832:73;;-1:-1:-1;;;61065:65:73;;;;;1370:67832;;;;;;;;;;;;26939:86;60888:94;1370:67832;;-1:-1:-1;;;60928:54:73;;;;;1370:67832;;;60918:1;1370:67832;;;;;;26939:86;60812:66;1370:67832;;-1:-1:-1;;;60853:25:73;;;;;61957:1293;;;;;1370:67832;;;;62221:46;;;;62217:149;;1370:67832;;62484:38;1370:67832;;62484:38;:::i;:::-;62532:33;;62581:13;-1:-1:-1;62625:3:73;1370:67832;;62596:27;;;;;;62653;;;;:::i;:::-;62648:32;;1370:67832;;62813:28;;;;62625:3;62813:28;;;:::i;:::-;1370:67832;62625:3;:::i;:::-;62581:13;;62644:439;62999:15;;62988:33;62989:25;;62999:15;;62625:3;62999:15;63039:29;62999:15;;:::i;:::-;1370:67832;;;;;62989:25;;;:::i;62988:33::-;62975:46;;;;:::i;:::-;1370:67832;63058:10;;;;:::i;63039:29::-;62644:439;62625:3;:::i;62596:27::-;;;;;63235:7;62596:27;;;63235:7;:::i;62217:149::-;1370:67832;;-1:-1:-1;;;62290:65:73;;;;;1370:67832;;;;;;;;;;;;;26939:86;1370:67832;;;;;;;;;;;:::i;63666:1631::-;;;;;1370:67832;;;;63957:37;;;;63953:132;;64189:23;;-1:-1:-1;64227:13:73;;64263:3;1370:67832;;64242:19;;;;;64282:26;64263:3;64297:11;;;;;:::i;64263:3::-;64227:13;;;64242:19;;;;;;;64332:22;;;64328:76;;-1:-1:-1;;;;;;1370:67832:73;;;;64419:30;;64415:611;;65090:13;-1:-1:-1;65129:3:73;1370:67832;;65105:22;;;;;65252:14;65233:47;65252:14;;65129:3;65252:14;;;:::i;:::-;65268:11;;;;;:::i;:::-;1370:67832;;;65233:47;;:::i;:::-;65129:3;:::i;:::-;65090:13;;65105:22;;;;;;;63666:1631::o;64415:611::-;-1:-1:-1;1370:67832:73;;;;;;;64748:84;;64679:30;1370:67832;-1:-1:-1;;;;;;;;;;;1370:67832:73;;;;;;;;;64679:30;1370:67832;;;64748:84;;;;;;971:66:21;;;;64748:84:73;;;;;;:::i;:::-;;1370:67832;;64748:84;;;;;;:::i;:::-;64679:167;;;;;;:::i;:::-;64960:8;;64956:39;;65009:7;:::o;64956:39::-;1370:67832;;-1:-1:-1;;;64977:18:73;;1370:67832;;;64977:18;;64687:21;64977:18;;;:::i;64328:76::-;1370:67832;;-1:-1:-1;;;64363:41:73;;;;;1370:67832;;;;;;;;;;;;26939:86;63953:132;1370:67832;;-1:-1:-1;;;64017:57:73;;;;;1370:67832;;;;;;;;;;;;;26939:86;941:175:57;1370:67832:73;;-1:-1:-1;;;1050:58:57;;;;;;;-1:-1:-1;;;;;1370:67832:73;;;;1050:58:57;;;1370:67832:73;;;;;;;;;1050:58:57;;;;;5535:69:59;;1370:67832:73;-1:-1:-1;;;;1050:58:57;1370:67832:73;;1050:58:57;:::i;:::-;1370:67832:73;;;;;;;;;;;;;:::i;:::-;;;;;;;;;5487:31:59;;;;;;;;:::i;5535:69::-;1370:67832:73;;5705:22:57;;;;:56;;;;;941:175;1370:67832:73;;;;;;941:175:57;:::o;1370:67832:73:-;;;;;3610:56:21;;;;1370:67832:73;;;;;;;1050:58:57;1370:67832:73;;;;;;;;-1:-1:-1;;;1370:67832:73;;;;;5705:56:57;5731:30;;-1:-1:-1;5731:30:57;;;;;;;:::i;:::-;5705:56;;;;;65478:281:73;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65478:281;-1:-1:-1;;;;;1370:67832:73;65682:22;65678:74;;65478:281::o;65678:74::-;1370:67832;;-1:-1:-1;;;65713:39:73;;-1:-1:-1;;;65713:39:73;;;1370:67832;;;65713:39;65890:270;-1:-1:-1;;;;;1370:67832:73;66085:30;66081:72;;65890:270::o;66081:72::-;1370:67832;;-1:-1:-1;;;66124:29:73;;;;;66452:791;66774:56;66452:791;;;;66774:56;:::i;:::-;1370:67832;-1:-1:-1;1370:67832:73;;;;-1:-1:-1;1370:67832:73;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;66855:34;:85;;;;;66452:791;66851:122;;;67090:82;1370:67832;67091:81;1370:67832;;;;67114:26;;;;;;;;1370:67832;;;;;;;;;;;;;67114:26;1370:67832;67104:37;;1370:67832;;67091:81;;:::i;67090:82::-;67086:151;;66452:791;:::o;67086:151::-;1370:67832;;-1:-1:-1;;;67195:31:73;;-1:-1:-1;;;;;1370:67832:73;;;;67195:31;;;1370:67832;;;26939:86;66851:122;66956:7;;;;:::o;66855:85::-;66893:15;;;:47;;66855:85;;;67489:499;;;;67730:13;67742:1;67730:13;67725:219;67745:17;;;;;;67961:20;;;;;67489:499;:::o;67764:3::-;67923:9;;;;67764:3;67923:9;;;;;;:::i;:::-;1370:67832;68261:6;;;;;1370:67832;;;68280:22;;;1370:67832;;;;;;;;;;68280:22;1370:67832;;;;68280:22;1370:67832;68280:22;1370:67832;68270:33;;67764:3;;:::i;:::-;67730:13;;;;;68261:78;1370:67832;;;68316:22;;;1370:67832;;;;;;;;;;68316:22;;1370:67832;;;;68316:22;1370:67832;68316:22;1370:67832;68306:33;;68261:78;;68651:549;68933:34;1370:67832;;;68933:34;;;;;;;;;;;;;;;:::i;:::-;68905:63;;;;;;;;:::i;:::-;69064:8;;1370:67832;;69064:28;;68651:549;69060:77;;1370:67832;;68933:34;1370:67832;69154:27;1370:67832;;69154:27;;;;;;:::i;:::-;-1:-1:-1;;;;;1370:67832:73;;;;;69154:39;;68651:549::o;69060:77::-;1370:67832;;-1:-1:-1;;;69101:36:73;;-1:-1:-1;;;;;1370:67832:73;;;68933:34;69101:36;;1370:67832;68933:34;;69101:36;69064:28;1370:67832;68933:34;1370:67832;;69076:16;69064:28;","linkReferences":{"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":2991,"length":20},{"start":3206,"length":20},{"start":3532,"length":20},{"start":4181,"length":20},{"start":8910,"length":20},{"start":9327,"length":20},{"start":10597,"length":20},{"start":10814,"length":20},{"start":11032,"length":20},{"start":11250,"length":20},{"start":15100,"length":20}]}},"immutableReferences":{"30045":[{"start":4386,"length":32},{"start":5929,"length":32},{"start":13458,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelSalePrices(address,uint256[])":"2f79f335","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","initialize(address,address,address,address,address,address,address,address,address,address,address)":"76902b83","isPaused()":"b187bd26","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","owner()":"8da5cb5b","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setApprovedTokenRegistry(address)":"e4e87e3b","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Listings.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155Listings.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155Listings.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155Listings.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"UUPS-upgradeable marketplace that keeps ERC1155 sale semantics separate from ERC721 marketplace logic.\",\"errors\":{\"AddressNotAllowlisted(address)\":[{\"params\":{\"_account\":\"Buyer account that failed allowlist verification.\"}}],\"BatchSizeExceeded(uint256,uint256)\":[{\"params\":{\"max\":\"Maximum supported item count.\",\"supplied\":\"Number of items supplied.\"}}],\"ContractHasNoOwner(address)\":[{\"params\":{\"_contractAddress\":\"Contract that did not expose a valid `owner()`.\"}}],\"CurrencyMismatch(address,address)\":[{\"params\":{\"_configuredCurrency\":\"Currency stored in marketplace configuration.\",\"_suppliedCurrency\":\"Currency supplied by the caller.\"}}],\"CurrencyNotApproved(address)\":[{\"params\":{\"_currencyAddress\":\"Currency that failed approval.\"}}],\"DirectSaleNotConfigured(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Token id missing a primary sale config.\"}}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"params\":{\"_currencyAddress\":\"ERC20 token address.\",\"_expectedAmount\":\"Amount expected by the marketplace.\",\"_receivedAmount\":\"Amount actually received by the marketplace.\"}}],\"IncorrectETHAmount(uint256,uint256)\":[{\"params\":{\"_requiredAmount\":\"Amount required by the marketplace.\",\"_suppliedAmount\":\"Amount supplied as `msg.value`.\"}}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Account whose balance was checked.\",\"_availableQuantity\":\"Quantity available at check time.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_requestedQuantity\":\"Quantity required by the operation.\",\"_tokenId\":\"Token id whose balance was checked.\"}}],\"InvalidERC1155Contract(address)\":[{\"params\":{\"_contractAddress\":\"Collection address that failed validation.\"}}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"params\":{\"_buyer\":\"Buyer whose balance should increase.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_quantity\":\"Quantity that should be transferred.\",\"_seller\":\"Seller whose balance should decrease.\",\"_tokenId\":\"Token id transferred.\"}}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"params\":{\"_field\":\"Name of the dependency field that was zero.\"}}],\"MarketplaceNotApproved(address,address)\":[{\"params\":{\"_account\":\"ERC1155 owner that must approve the marketplace.\",\"_contractAddress\":\"ERC1155 collection address.\"}}],\"MaxMintExceeded(uint256,uint256)\":[{\"params\":{\"_maxMints\":\"Configured max quantity per transaction.\",\"_requestedQuantity\":\"Requested mint quantity.\"}}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured mint limit.\",\"_mintedQuantity\":\"Quantity already minted by the account.\",\"_requestedQuantity\":\"Requested mint quantity.\",\"_tokenId\":\"Token id being minted.\"}}],\"NotContractOwner(address,address)\":[{\"params\":{\"_account\":\"Account that failed the owner check.\",\"_contractAddress\":\"Collection address whose owner was checked.\"}}],\"PayoutFailed(bytes)\":[{\"params\":{\"_revertData\":\"Raw revert data returned by the failed payout call.\"}}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"params\":{\"_amountsLength\":\"Number of payout amounts supplied.\",\"_recipientsLength\":\"Number of payout recipients supplied.\"}}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"params\":{\"_actualAmount\":\"Sum of supplied payout amounts.\",\"_expectedAmount\":\"Amount expected to be paid by the batch.\"}}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"params\":{\"_maxPlatformCommission\":\"Maximum supported platform commission percentage.\",\"_platformCommission\":\"Supplied primary platform commission percentage.\"}}],\"PriceMismatch(uint256,uint256)\":[{\"params\":{\"_configuredPrice\":\"Price stored in marketplace configuration.\",\"_suppliedPrice\":\"Price supplied by the caller.\"}}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"params\":{\"_availableQuantity\":\"Quantity currently listed.\",\"_requestedQuantity\":\"Quantity requested by the buyer.\"}}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"params\":{\"_royalties\":\"Total royalties returned by the royalty engine.\",\"_saleAmount\":\"Gross sale amount before royalty deduction.\"}}],\"SaleNotStarted(uint256)\":[{\"params\":{\"_startTime\":\"Configured sale start timestamp.\"}}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SalePriceExpirationInvalid(uint256,uint256)\":[{\"params\":{\"_currentTime\":\"Current block timestamp.\",\"_expirationTime\":\"Expiration supplied for the listing.\"}}],\"SalePriceExpired(address,uint256,address,uint256)\":[{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_expirationTime\":\"Stored listing expiration timestamp.\",\"_seller\":\"Seller whose listing was requested.\",\"_tokenId\":\"Token id requested.\"}}],\"SelfPurchaseUnsupported(address)\":[{\"params\":{\"_seller\":\"Seller whose listing was targeted.\"}}],\"SplitLengthMismatch(uint256,uint256)\":[{\"params\":{\"_ratiosLength\":\"Supplied ratio count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitRatioCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split ratio.\"}}],\"SplitRecipientCannotBeZero(uint256)\":[{\"params\":{\"_index\":\"Index of the invalid split recipient.\"}}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"params\":{\"_maxRecipients\":\"Maximum supported recipient count.\",\"_recipientsLength\":\"Supplied recipient count.\"}}],\"SplitTotalInvalid(uint256,uint256)\":[{\"params\":{\"_requiredTotal\":\"Required ratio total.\",\"_totalRatio\":\"Supplied ratio total.\"}}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"params\":{\"_marketplaceFee\":\"Total marketplace fee collected from the buyer.\",\"_stakingFee\":\"Staking portion requested by staking settings.\"}}],\"TokenIdsNotStrictlyAscending(uint256,uint256,uint256)\":[{\"params\":{\"index\":\"Index of the token id that is not greater than the previous token id.\",\"previousTokenId\":\"Token id at `index - 1`.\",\"tokenId\":\"Token id at `index`.\"}}],\"TokenNotFound(address,uint256)\":[{\"params\":{\"_contractAddress\":\"Collection address.\",\"_tokenId\":\"Missing token id.\"}}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"params\":{\"_account\":\"Buyer account.\",\"_contractAddress\":\"Collection address.\",\"_limit\":\"Configured transaction limit.\",\"_tokenId\":\"Token id being minted.\",\"_usedTransactions\":\"Transactions already used by the account.\"}}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"ContractPausedUpdated(bool)\":{\"params\":{\"isPaused\":\"True when marketplace writes are paused.\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MarketplaceDependencyUpdated(bytes32,address)\":{\"params\":{\"dependency\":\"New dependency address.\",\"field\":\"Config field that was updated.\"}},\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"params\":{\"buyer\":\"Address that paid for and received the mint.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity minted.\",\"seller\":\"Creator/seller that received proceeds.\",\"tokenId\":\"Minted token id.\"}},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Sale currency. Zero address indicates ETH.\",\"maxMints\":\"Max quantity per transaction. Zero means unlimited.\",\"price\":\"Unit price per token.\",\"seller\":\"Creator/seller that receives sale proceeds.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"startTime\":\"Timestamp when minting may begin.\",\"tokenId\":\"Token id sold by the primary sale.\"}},\"SalePriceCancelled(address,address,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"seller\":\"Seller that cancelled the listing.\",\"tokenId\":\"Token id whose listing was cancelled.\"}},\"SalePriceSet(address,address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Listing currency. Zero address indicates ETH.\",\"expirationTime\":\"Timestamp when the listing can no longer be filled. Zero means no expiration.\",\"price\":\"Unit price per token.\",\"quantity\":\"Quantity listed.\",\"seller\":\"Seller that owns the listed ERC1155 balance.\",\"splitRatios\":\"Percentages for `splitRecipients`.\",\"splitRecipients\":\"Recipients that split seller proceeds.\",\"tokenId\":\"Listed token id.\"}},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"endTimestamp\":\"Timestamp when allowlist enforcement expires.\",\"root\":\"Merkle root for allowlisted buyers.\",\"tokenId\":\"Token id controlled by the allowlist.\"}},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"params\":{\"buyer\":\"Buyer that paid and received the ERC1155 tokens.\",\"contractAddress\":\"ERC1155 collection address.\",\"currency\":\"Purchase currency. Zero address indicates ETH.\",\"price\":\"Unit price paid.\",\"quantity\":\"Quantity purchased.\",\"seller\":\"Seller that transferred the ERC1155 tokens.\",\"tokenId\":\"Purchased token id.\"}},\"TokenMintLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max quantity each address may mint while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"TokenTxLimitSet(address,uint256,uint256)\":{\"params\":{\"contractAddress\":\"ERC1155 collection address.\",\"limit\":\"Max mint transactions each address may submit while the limit is enabled. Zero disables the limit.\",\"tokenId\":\"Token id controlled by the limit.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending. A one-token buy is represented by a one-item batch.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_requests\":\"Buy requests to execute.\",\"_seller\":\"Seller whose listing is being filled.\"}},\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenIds\":\"Listed token ids.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getDirectSaleConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Primary sale config for the token id.\"}},\"getERC1155ApprovalManager()\":{\"returns\":{\"_0\":\"Current ERC1155 approval manager address.\"}},\"getMarketConfig()\":{\"returns\":{\"_0\":\"Current market config struct.\"}},\"getSalePrice(address,uint256,address)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_seller\":\"Seller whose listing is returned.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Secondary fixed-price listing for the seller and token id.\"}},\"getTokenAllowListConfig(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Allowlist config for the token id.\"}},\"getTokenMintLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Mint quantity limit. Zero means unlimited.\"}},\"getTokenMintsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose minted quantity is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Quantity minted by `_address`.\"}},\"getTokenTxLimit(address,uint256)\":{\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Transaction limit. Zero means unlimited.\"}},\"getTokenTxsPerAddress(address,uint256,address)\":{\"params\":{\"_address\":\"Address whose transaction count is returned.\",\"_contractAddress\":\"ERC1155 collection address.\",\"_tokenId\":\"Token id to inspect.\"},\"returns\":{\"_0\":\"Number of mint transactions used by `_address`.\"}},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"details\":\"Stores the market config dependency bundle and initializes inherited upgradeability modules.\",\"params\":{\"_approvedTokenRegistry\":\"Registry of approved ERC20 currencies.\",\"_erc1155ApprovalManager\":\"ERC1155 transfer manager for seller token approvals.\",\"_erc20ApprovalManager\":\"ERC20 transfer manager for buyer currency approvals.\",\"_erc721ApprovalManager\":\"ERC721 transfer manager kept in shared V2 market config.\",\"_marketplaceSettings\":\"Marketplace settings contract.\",\"_networkBeneficiary\":\"Address receiving network marketplace fees.\",\"_payments\":\"Payments contract used for ETH fan-out.\",\"_royaltyEngine\":\"Royalty engine contract.\",\"_spaceOperatorRegistry\":\"Space operator registry contract.\",\"_stakingRegistry\":\"Staking registry contract.\",\"_stakingSettings\":\"Staking fee settings contract.\"}},\"isPaused()\":{\"returns\":{\"_0\":\"True when paused.\"}},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Request token ids must be strictly ascending. Each token id included in a batch consumes one transaction against that token's tx limit when the token tx limit is enabled.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Currency expected by the buyer.\",\"_requests\":\"Mint requests to execute.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending. A one-token sale is represented by a one-item batch.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Sale currency. Zero address indicates ETH.\",\"_requests\":\"Sale configs to apply.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setApprovedTokenRegistry(address)\":{\"params\":{\"_approvedTokenRegistry\":\"New approved token registry contract.\"}},\"setContractPaused(bool)\":{\"params\":{\"_isPaused\":\"New pause state.\"}},\"setERC1155ApprovalManager(address)\":{\"params\":{\"_erc1155ApprovalManager\":\"New ERC1155 approval manager contract.\"}},\"setERC20ApprovalManager(address)\":{\"params\":{\"_erc20ApprovalManager\":\"New ERC20 approval manager contract.\"}},\"setERC721ApprovalManager(address)\":{\"params\":{\"_erc721ApprovalManager\":\"New ERC721 approval manager contract.\"}},\"setMarketplaceSettings(address)\":{\"params\":{\"_marketplaceSettings\":\"New marketplace settings contract.\"}},\"setNetworkBeneficiary(address)\":{\"params\":{\"_networkBeneficiary\":\"New network beneficiary.\"}},\"setPayments(address)\":{\"params\":{\"_payments\":\"New payments contract.\"}},\"setRoyaltyEngine(address)\":{\"params\":{\"_royaltyEngine\":\"New royalty engine contract.\"}},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending. `expirationTime == 0` means no expiration. Listings can be cancelled by the seller with `cancelSalePrices`.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_currencyAddress\":\"Listing currency. Zero address indicates ETH.\",\"_requests\":\"Listing configs to apply.\",\"_splitRatios\":\"Percentages for `splitRecipients`, totaling 100.\",\"_splitRecipients\":\"Recipients that split seller proceeds.\"}},\"setSpaceOperatorRegistry(address)\":{\"params\":{\"_spaceOperatorRegistry\":\"New space operator registry contract.\"}},\"setStakingRegistry(address)\":{\"params\":{\"_stakingRegistry\":\"New staking registry contract.\"}},\"setStakingSettings(address)\":{\"params\":{\"_stakingSettings\":\"New staking settings contract.\"}},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Allowlist configs to apply.\"}},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Mint limits to apply. Zero disables a token id's limit and disabled periods are not counted.\"}},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\",\"params\":{\"_contractAddress\":\"ERC1155 collection address.\",\"_requests\":\"Transaction limits to apply. Zero disables a token id's limit and disabled periods are not counted.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"LISTINGS_STORAGE_LOCATION\":{\"details\":\"keccak256(abi.encode(uint256(keccak256(\\\"superrare.storage.RareERC1155Listings\\\")) - 1)) & ~bytes32(uint256(0xff))\"},\"MAX_BATCH_SIZE\":{\"return\":\"Maximum supported batch item count.\",\"returns\":{\"_0\":\"Maximum supported batch item count.\"}}},\"title\":\"RareERC1155Listings\",\"version\":1},\"userdoc\":{\"errors\":{\"AddressNotAllowlisted(address)\":[{\"notice\":\"Reverted when a buyer is not included in an active allowlist.\"}],\"ApprovalManagerCannotBeZero()\":[{\"notice\":\"Reverted when an approval manager address is zero.\"}],\"BatchSizeExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a batch exceeds the supported item count.\"}],\"ContractHasNoOwner(address)\":[{\"notice\":\"Reverted when ownership cannot be read from a collection.\"}],\"ContractPaused()\":[{\"notice\":\"Reverted when a write function is called while the marketplace is paused.\"}],\"CurrencyMismatch(address,address)\":[{\"notice\":\"Reverted when a caller-supplied currency does not match the configured currency.\"}],\"CurrencyNotApproved(address)\":[{\"notice\":\"Reverted when a currency is neither ETH nor approved by the token registry.\"}],\"DirectSaleNotConfigured(address,uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before sale configuration exists.\"}],\"ERC20FeeOnTransferUnsupported(address,uint256,uint256)\":[{\"notice\":\"Reverted when an ERC20 transfer receives less or more than expected.\"}],\"EmptyBatch()\":[{\"notice\":\"Reverted when a batch operation receives no items.\"}],\"IncorrectETHAmount(uint256,uint256)\":[{\"notice\":\"Reverted when an ETH purchase sends the wrong `msg.value`.\"}],\"InsufficientTokenBalance(address,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a seller does not have enough ERC1155 balance for a listing or purchase.\"}],\"InvalidERC1155Contract(address)\":[{\"notice\":\"Reverted when a secondary collection is not a deployed ERC1155 contract.\"}],\"InvalidERC1155Transfer(address,uint256,address,address,uint256)\":[{\"notice\":\"Reverted when an ERC1155 transfer completes without exact seller and buyer balance deltas.\"}],\"MarketConfigAddressCannotBeZero(bytes32)\":[{\"notice\":\"Reverted when a required market config dependency address is zero.\"}],\"MarketplaceNotApproved(address,address)\":[{\"notice\":\"Reverted when the marketplace is not approved to transfer a seller's ERC1155 tokens.\"}],\"MaxMintExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when a mint quantity exceeds the sale's per-transaction max.\"}],\"MintLimitExceeded(address,uint256,address,uint256,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address mint limit for a token id.\"}],\"MsgValueMustBeZero()\":[{\"notice\":\"Reverted when a free mint includes ETH.\"}],\"MsgValueUnsupportedForERC20()\":[{\"notice\":\"Reverted when ETH is supplied for an ERC20 purchase.\"}],\"NotContractOwner(address,address)\":[{\"notice\":\"Reverted when a caller is not the owner of a collection.\"}],\"PayoutFailed(bytes)\":[{\"notice\":\"Reverted when ETH payout through the Payments contract fails.\"}],\"PayoutLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout recipients and amounts have different lengths.\"}],\"PayoutTotalMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when payout amounts do not sum to the expected batch amount.\"}],\"PlatformCommissionExceeded(uint256,uint256)\":[{\"notice\":\"Reverted when primary platform commission exceeds 100%.\"}],\"PriceMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when a caller-supplied price does not match the configured price.\"}],\"QuantityCannotBeZero()\":[{\"notice\":\"Reverted when a quantity argument is zero.\"}],\"QuantityExceedsSalePriceQuantity(uint256,uint256)\":[{\"notice\":\"Reverted when a purchase quantity exceeds listed quantity.\"}],\"RoyaltiesExceedSaleAmount(uint256,uint256)\":[{\"notice\":\"Reverted when royalties returned by the royalty engine exceed sale proceeds.\"}],\"SaleNotStarted(uint256)\":[{\"notice\":\"Reverted when a primary mint is attempted before the start time.\"}],\"SalePriceCannotBeZero()\":[{\"notice\":\"Reverted when a secondary listing price is zero.\"}],\"SalePriceDoesNotExist(address,uint256,address)\":[{\"notice\":\"Reverted when no secondary listing exists for a seller and token id.\"}],\"SalePriceExpirationInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when a secondary listing expiration is nonzero and not in the future.\"}],\"SalePriceExpired(address,uint256,address,uint256)\":[{\"notice\":\"Reverted when a buyer tries to fill an expired secondary listing.\"}],\"SelfPurchaseUnsupported(address)\":[{\"notice\":\"Reverted when a buyer tries to fill their own secondary listing.\"}],\"SplitLengthMismatch(uint256,uint256)\":[{\"notice\":\"Reverted when split recipient and ratio arrays have different lengths.\"}],\"SplitRatioCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split ratio is zero.\"}],\"SplitRecipientCannotBeZero(uint256)\":[{\"notice\":\"Reverted when a split recipient is the zero address.\"}],\"SplitRecipientsExceededMax(uint256,uint256)\":[{\"notice\":\"Reverted when a sale config has more split recipients than supported.\"}],\"SplitRecipientsRequired()\":[{\"notice\":\"Reverted when a sale config has no split recipients.\"}],\"SplitTotalInvalid(uint256,uint256)\":[{\"notice\":\"Reverted when split ratios do not total 100.\"}],\"StakingFeeExceedsMarketplaceFee(uint256,uint256)\":[{\"notice\":\"Reverted when the staking fee exceeds the buyer-paid marketplace fee.\"}],\"TokenIdsNotStrictlyAscending(uint256,uint256,uint256)\":[{\"notice\":\"Reverted when token ids are not strictly ascending.\"}],\"TokenNotFound(address,uint256)\":[{\"notice\":\"Reverted when a token id has not been created on a collection.\"}],\"TransactionLimitExceeded(address,uint256,address,uint256,uint256)\":[{\"notice\":\"Reverted when a mint would exceed a buyer's per-address transaction limit for a token id.\"}]},\"events\":{\"ContractPausedUpdated(bool)\":{\"notice\":\"Emitted when an owner updates marketplace pause state.\"},\"MarketplaceDependencyUpdated(bytes32,address)\":{\"notice\":\"Emitted when an owner updates a critical marketplace dependency.\"},\"MintDirectSale(address,uint256,address,address,uint256,address,uint256)\":{\"notice\":\"Emitted when a buyer mints through a primary sale.\"},\"PrepareMintDirectSale(address,uint256,address,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a creator configures a primary mint sale.\"},\"SalePriceCancelled(address,address,uint256)\":{\"notice\":\"Emitted when a seller cancels a secondary listing.\"},\"SalePriceSet(address,address,uint256,address,uint256,uint256,uint256,address[],uint8[])\":{\"notice\":\"Emitted when a seller creates or replaces a secondary fixed-price listing.\"},\"SetTokenAllowListConfig(address,uint256,bytes32,uint256)\":{\"notice\":\"Emitted when a token allowlist config is set.\"},\"Sold(address,address,address,uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when a buyer fills a secondary fixed-price listing.\"},\"TokenMintLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address mint limit is set for a token id.\"},\"TokenTxLimitSet(address,uint256,uint256)\":{\"notice\":\"Emitted when a per-address transaction limit is set for a token id.\"}},\"kind\":\"user\",\"methods\":{\"MAX_BATCH_SIZE()\":{\"notice\":\"Maximum number of token ids accepted by public batch operations.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"getDirectSaleConfig(address,uint256)\":{\"notice\":\"Returns the primary mint sale config for a token id.\"},\"getERC1155ApprovalManager()\":{\"notice\":\"Returns the ERC1155 approval manager used for secondary transfers.\"},\"getMarketConfig()\":{\"notice\":\"Returns the marketplace dependency configuration.\"},\"getSalePrice(address,uint256,address)\":{\"notice\":\"Returns a seller's secondary fixed-price listing.\"},\"getTokenAllowListConfig(address,uint256)\":{\"notice\":\"Returns the allowlist config for a token id.\"},\"getTokenMintLimit(address,uint256)\":{\"notice\":\"Returns the per-address mint quantity limit for a token id.\"},\"getTokenMintsPerAddress(address,uint256,address)\":{\"notice\":\"Returns quantity minted by an address for a token id.\"},\"getTokenTxLimit(address,uint256)\":{\"notice\":\"Returns the per-address transaction limit for a token id.\"},\"getTokenTxsPerAddress(address,uint256,address)\":{\"notice\":\"Returns mint transactions used by an address for a token id.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace implementation behind a proxy.\"},\"isPaused()\":{\"notice\":\"Returns whether marketplace writes are paused.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setApprovedTokenRegistry(address)\":{\"notice\":\"Updates the approved token registry address.\"},\"setContractPaused(bool)\":{\"notice\":\"Pauses or unpauses marketplace write operations.\"},\"setERC1155ApprovalManager(address)\":{\"notice\":\"Updates the ERC1155 approval manager address.\"},\"setERC20ApprovalManager(address)\":{\"notice\":\"Updates the ERC20 approval manager address.\"},\"setERC721ApprovalManager(address)\":{\"notice\":\"Updates the ERC721 approval manager address retained by the shared V2 market config.\"},\"setMarketplaceSettings(address)\":{\"notice\":\"Updates the marketplace settings contract address.\"},\"setNetworkBeneficiary(address)\":{\"notice\":\"Updates the network beneficiary address.\"},\"setPayments(address)\":{\"notice\":\"Updates the Payments contract address used for ETH fan-out.\"},\"setRoyaltyEngine(address)\":{\"notice\":\"Updates the royalty engine address.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setSpaceOperatorRegistry(address)\":{\"notice\":\"Updates the space operator registry address.\"},\"setStakingRegistry(address)\":{\"notice\":\"Updates the staking registry address.\"},\"setStakingSettings(address)\":{\"notice\":\"Updates the staking settings address.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets the max quantity each address may mint for token ids while the limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets the max number of mint transactions each address may submit for token ids while the limit is enabled.\"}},\"notice\":\"Primary mint sales for RARE Protocol ERC1155 tokens and fixed-price resale listings for ERC1155 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155Listings.sol\":\"RareERC1155Listings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol\":{\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0\",\"dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159\",\"dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d\",\"dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685\",\"dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155Listings.sol\":{\"keccak256\":\"0x4772059a1b272c84ea7ea7d463ba92e67aded8ec11219a7d8117e12b47e59f52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45ccce54d9d11c50b7829e31443a39b196e9b17bceae954b59b562bdcc3d1f43\",\"dweb:/ipfs/QmeMQR5XVVmFSYUUmofn2sHC88e63vAv6ENjWjotPYi8Xa\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155Listings.sol\":{\"keccak256\":\"0x82dc3d1eb00b9b81cb24ebbf959173361c5b1e47cfb84736a261c47ad277938b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5c139ef262f13966d94821f7a364f727b5897ed0636ba39902e5b465b64aa36\",\"dweb:/ipfs/QmTrH19KGphkbMsun8QNmpzq2LUAEx2Q3zNTEzte4r94Pd\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a\",\"dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9\",\"dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155Listings.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155Listings.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155Listings.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155Listings.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Request token ids must be strictly ascending. A one-token buy is represented by a one-item batch.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_requests":"Buy requests to execute.","_seller":"Seller whose listing is being filled."}},"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_tokenIds":"Listed token ids."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getDirectSaleConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Primary sale config for the token id."}},"getERC1155ApprovalManager()":{"returns":{"_0":"Current ERC1155 approval manager address."}},"getMarketConfig()":{"returns":{"_0":"Current market config struct."}},"getSalePrice(address,uint256,address)":{"params":{"_contractAddress":"ERC1155 collection address.","_seller":"Seller whose listing is returned.","_tokenId":"Token id to inspect."},"returns":{"_0":"Secondary fixed-price listing for the seller and token id."}},"getTokenAllowListConfig(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Allowlist config for the token id."}},"getTokenMintLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Mint quantity limit. Zero means unlimited."}},"getTokenMintsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose minted quantity is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Quantity minted by `_address`."}},"getTokenTxLimit(address,uint256)":{"params":{"_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Transaction limit. Zero means unlimited."}},"getTokenTxsPerAddress(address,uint256,address)":{"params":{"_address":"Address whose transaction count is returned.","_contractAddress":"ERC1155 collection address.","_tokenId":"Token id to inspect."},"returns":{"_0":"Number of mint transactions used by `_address`."}},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"details":"Stores the market config dependency bundle and initializes inherited upgradeability modules.","params":{"_approvedTokenRegistry":"Registry of approved ERC20 currencies.","_erc1155ApprovalManager":"ERC1155 transfer manager for seller token approvals.","_erc20ApprovalManager":"ERC20 transfer manager for buyer currency approvals.","_erc721ApprovalManager":"ERC721 transfer manager kept in shared V2 market config.","_marketplaceSettings":"Marketplace settings contract.","_networkBeneficiary":"Address receiving network marketplace fees.","_payments":"Payments contract used for ETH fan-out.","_royaltyEngine":"Royalty engine contract.","_spaceOperatorRegistry":"Space operator registry contract.","_stakingRegistry":"Staking registry contract.","_stakingSettings":"Staking fee settings contract."}},"isPaused()":{"returns":{"_0":"True when paused."}},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Request token ids must be strictly ascending. Each token id included in a batch consumes one transaction against that token's tx limit when the token tx limit is enabled.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Currency expected by the buyer.","_requests":"Mint requests to execute."}},"owner()":{"details":"Returns the address of the current owner."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending. A one-token sale is represented by a one-item batch.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Sale currency. Zero address indicates ETH.","_requests":"Sale configs to apply.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds."}},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setApprovedTokenRegistry(address)":{"params":{"_approvedTokenRegistry":"New approved token registry contract."}},"setContractPaused(bool)":{"params":{"_isPaused":"New pause state."}},"setERC1155ApprovalManager(address)":{"params":{"_erc1155ApprovalManager":"New ERC1155 approval manager contract."}},"setERC20ApprovalManager(address)":{"params":{"_erc20ApprovalManager":"New ERC20 approval manager contract."}},"setERC721ApprovalManager(address)":{"params":{"_erc721ApprovalManager":"New ERC721 approval manager contract."}},"setMarketplaceSettings(address)":{"params":{"_marketplaceSettings":"New marketplace settings contract."}},"setNetworkBeneficiary(address)":{"params":{"_networkBeneficiary":"New network beneficiary."}},"setPayments(address)":{"params":{"_payments":"New payments contract."}},"setRoyaltyEngine(address)":{"params":{"_royaltyEngine":"New royalty engine contract."}},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending. `expirationTime == 0` means no expiration. Listings can be cancelled by the seller with `cancelSalePrices`.","params":{"_contractAddress":"ERC1155 collection address.","_currencyAddress":"Listing currency. Zero address indicates ETH.","_requests":"Listing configs to apply.","_splitRatios":"Percentages for `splitRecipients`, totaling 100.","_splitRecipients":"Recipients that split seller proceeds."}},"setSpaceOperatorRegistry(address)":{"params":{"_spaceOperatorRegistry":"New space operator registry contract."}},"setStakingRegistry(address)":{"params":{"_stakingRegistry":"New staking registry contract."}},"setStakingSettings(address)":{"params":{"_stakingSettings":"New staking settings contract."}},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Allowlist configs to apply."}},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Mint limits to apply. Zero disables a token id's limit and disabled periods are not counted."}},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending.","params":{"_contractAddress":"ERC1155 collection address.","_requests":"Transaction limits to apply. Zero disables a token id's limit and disabled periods are not counted."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_BATCH_SIZE()":{"notice":"Maximum number of token ids accepted by public batch operations."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"getDirectSaleConfig(address,uint256)":{"notice":"Returns the primary mint sale config for a token id."},"getERC1155ApprovalManager()":{"notice":"Returns the ERC1155 approval manager used for secondary transfers."},"getMarketConfig()":{"notice":"Returns the marketplace dependency configuration."},"getSalePrice(address,uint256,address)":{"notice":"Returns a seller's secondary fixed-price listing."},"getTokenAllowListConfig(address,uint256)":{"notice":"Returns the allowlist config for a token id."},"getTokenMintLimit(address,uint256)":{"notice":"Returns the per-address mint quantity limit for a token id."},"getTokenMintsPerAddress(address,uint256,address)":{"notice":"Returns quantity minted by an address for a token id."},"getTokenTxLimit(address,uint256)":{"notice":"Returns the per-address transaction limit for a token id."},"getTokenTxsPerAddress(address,uint256,address)":{"notice":"Returns mint transactions used by an address for a token id."},"initialize(address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace implementation behind a proxy."},"isPaused()":{"notice":"Returns whether marketplace writes are paused."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setApprovedTokenRegistry(address)":{"notice":"Updates the approved token registry address."},"setContractPaused(bool)":{"notice":"Pauses or unpauses marketplace write operations."},"setERC1155ApprovalManager(address)":{"notice":"Updates the ERC1155 approval manager address."},"setERC20ApprovalManager(address)":{"notice":"Updates the ERC20 approval manager address."},"setERC721ApprovalManager(address)":{"notice":"Updates the ERC721 approval manager address retained by the shared V2 market config."},"setMarketplaceSettings(address)":{"notice":"Updates the marketplace settings contract address."},"setNetworkBeneficiary(address)":{"notice":"Updates the network beneficiary address."},"setPayments(address)":{"notice":"Updates the Payments contract address used for ETH fan-out."},"setRoyaltyEngine(address)":{"notice":"Updates the royalty engine address."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setSpaceOperatorRegistry(address)":{"notice":"Updates the space operator registry address."},"setStakingRegistry(address)":{"notice":"Updates the staking registry address."},"setStakingSettings(address)":{"notice":"Updates the staking settings address."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets the max quantity each address may mint for token ids while the limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets the max number of mint transactions each address may submit for token ids while the limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155Listings.sol":"RareERC1155Listings"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol":{"keccak256":"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b","urls":["bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0","dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol":{"keccak256":"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f","urls":["bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053","dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"keccak256":"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161","urls":["bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159","dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol":{"keccak256":"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908","urls":["bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1","dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad","urls":["bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d","dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0","urls":["bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025","dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol":{"keccak256":"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908","urls":["bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685","dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155Listings.sol":{"keccak256":"0x4772059a1b272c84ea7ea7d463ba92e67aded8ec11219a7d8117e12b47e59f52","urls":["bzz-raw://45ccce54d9d11c50b7829e31443a39b196e9b17bceae954b59b562bdcc3d1f43","dweb:/ipfs/QmeMQR5XVVmFSYUUmofn2sHC88e63vAv6ENjWjotPYi8Xa"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155Listings.sol":{"keccak256":"0x82dc3d1eb00b9b81cb24ebbf959173361c5b1e47cfb84736a261c47ad277938b","urls":["bzz-raw://a5c139ef262f13966d94821f7a364f727b5897ed0636ba39902e5b465b64aa36","dweb:/ipfs/QmTrH19KGphkbMsun8QNmpzq2LUAEx2Q3zNTEzte4r94Pd"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x423f16f31739668c0162422d91b2f9eea3769de9389d876d876928369b298976","urls":["bzz-raw://b942a7152ad01624065e302e75505c551348ddeca2bbb80d2ce556a0d15b0b2a","dweb:/ipfs/QmQrtDpdLvntxFnh9tqFVUiRQPHQpf5BZjGp9PhM558gvJ"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0x266ca292519029c94c00e24fa5eeeb0ebabd4bb81f676bc68935ef6f4574fef5","urls":["bzz-raw://bcb3c4324d09e91ef41ef0633d4b0df9491b34dd7221c1d38460d2d9434f54c9","dweb:/ipfs/QmSxfuCTGue51UAHohCWEuGnh7HJ1mBqRShkV8UyitJBhU"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":73} \ No newline at end of file diff --git a/abis/RareERC1155Marketplace.json b/abis/RareERC1155Marketplace.json new file mode 100644 index 0000000..e4b2c25 --- /dev/null +++ b/abis/RareERC1155Marketplace.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"cancelMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenIds","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkout","inputs":[{"name":"_items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","components":[{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","components":[{"name":"summary","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","components":[{"name":"filledCount","type":"uint256","internalType":"uint256"},{"name":"skippedCount","type":"uint256","internalType":"uint256"},{"name":"ethSpent","type":"uint256","internalType":"uint256"},{"name":"ethRefunded","type":"uint256","internalType":"uint256"}]},{"name":"items","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","components":[{"name":"itemIndex","type":"uint256","internalType":"uint256"},{"name":"itemKind","type":"uint8","internalType":"uint8"},{"name":"contractAddress","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"filled","type":"bool","internalType":"bool"},{"name":"failureStage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","internalType":"bytes4"},{"name":"failureData","type":"bytes","internalType":"bytes"},{"name":"totalPaid","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"payable"},{"type":"function","name":"getCheckoutExecutionModule","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getDirectSaleConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","components":[{"name":"seller","type":"address","internalType":"address"},{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getERC1155ApprovalManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getMarketConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct MarketConfigV2.Config","components":[{"name":"networkBeneficiary","type":"address","internalType":"address"},{"name":"marketplaceSettings","type":"address","internalType":"contract IMarketplaceSettings"},{"name":"spaceOperatorRegistry","type":"address","internalType":"contract ISpaceOperatorRegistry"},{"name":"royaltyEngine","type":"address","internalType":"contract IRoyaltyEngineV1"},{"name":"payments","type":"address","internalType":"contract IPayments"},{"name":"approvedTokenRegistry","type":"address","internalType":"contract IApprovedTokenRegistry"},{"name":"stakingSettings","type":"address","internalType":"contract IStakingSettings"},{"name":"stakingRegistry","type":"address","internalType":"contract IRareStakingRegistry"},{"name":"erc20ApprovalManager","type":"address","internalType":"contract IERC20ApprovalManager"},{"name":"erc721ApprovalManager","type":"address","internalType":"contract IERC721ApprovalManager"}]}],"stateMutability":"view"},{"type":"function","name":"getOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.Offer","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"initialQuantity","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"marketplaceFeeTotal","type":"uint256","internalType":"uint256"},{"name":"stakingFeeRemaining","type":"uint256","internalType":"uint256"},{"name":"stakingFeeTotal","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getSalePrice","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","components":[{"name":"currencyAddress","type":"address","internalType":"address"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"},{"name":"splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","internalType":"uint8[]"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenAllowListConfig","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","components":[{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getTokenMintLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenMintsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxLimit","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTokenTxsPerAddress","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTradeExecutionModule","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"},{"name":"_marketplaceSettings","type":"address","internalType":"address"},{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"},{"name":"_royaltyEngine","type":"address","internalType":"address"},{"name":"_payments","type":"address","internalType":"address"},{"name":"_approvedTokenRegistry","type":"address","internalType":"address"},{"name":"_stakingSettings","type":"address","internalType":"address"},{"name":"_stakingRegistry","type":"address","internalType":"address"},{"name":"_erc20ApprovalManager","type":"address","internalType":"address"},{"name":"_erc721ApprovalManager","type":"address","internalType":"address"},{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"},{"name":"_tradeExecutionModule","type":"address","internalType":"address"},{"name":"_checkoutExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPaused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"makeOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"prepareMintDirectSales","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"maxMints","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovedTokenRegistry","inputs":[{"name":"_approvedTokenRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCheckoutExecutionModule","inputs":[{"name":"_checkoutExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setContractPaused","inputs":[{"name":"_isPaused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC1155ApprovalManager","inputs":[{"name":"_erc1155ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20ApprovalManager","inputs":[{"name":"_erc20ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC721ApprovalManager","inputs":[{"name":"_erc721ApprovalManager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMarketplaceSettings","inputs":[{"name":"_marketplaceSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNetworkBeneficiary","inputs":[{"name":"_networkBeneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPayments","inputs":[{"name":"_payments","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoyaltyEngine","inputs":[{"name":"_royaltyEngine","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSalePrices","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"expirationTime","type":"uint256","internalType":"uint256"}]},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSpaceOperatorRegistry","inputs":[{"name":"_spaceOperatorRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingRegistry","inputs":[{"name":"_stakingRegistry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakingSettings","inputs":[{"name":"_stakingSettings","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenAllowListConfigs","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenMintLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTokenTxLimits","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTradeExecutionModule","inputs":[{"name":"_tradeExecutionModule","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeTo","inputs":[{"name":"newImplementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x60a08060405234620000e157306080526000549060ff8260081c166200008f575060ff8082160362000053575b6040516160df9081620000e78239608051818181610eaf015281816115520152613af90152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002c565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630a6ce31314610327578063176ab4401461032257806321ede0321461031d57806328fbba03146103185780632c0c49ee146103135780632c7408441461030e5780632f79f335146103095780632fdd983d146103045780633492e5a8146102ff5780633659cfe6146102fa578063369679a4146102f5578063373a9412146102f05780634f1ef286146102eb57806352d1902d146102e6578063552f791d146102e15780635a501f8f146102dc5780635e50c42e146102d7578063614bd944146102d257806363cf9cef146102cd5780636442950e146102c85780636e2f4d8b146102c3578063715018a6146102be5780637777e6d7146102b95780637f358230146102b45780638760251a146102af578063882796f1146102aa5780638da5cb5b146102a55780639400d601146102a0578063a0f597dd1461029b578063a3eaf4d914610296578063af231a5814610291578063b187bd261461028c578063b38df71f14610287578063b8e6b50f14610282578063be5421411461027d578063bf3d90f814610278578063c7c83d1714610273578063c7ec1b981461026e578063cfdbf25414610269578063d7a9fb7c14610264578063d80b23e31461025f578063e3409ce31461025a578063e4e87e3b14610255578063e92f94d114610250578063ed5b25b51461024b578063f103574414610246578063f2fde38b14610241578063ff3a52d41461023c5763ff5c83a41461023757600080fd5b61362a565b613244565b6131b3565b6130e0565b6130aa565b613084565b612faa565b612e19565b612d3f565b612c66565b612c4a565b612b73565b612b3d565b612acd565b61286a565b61274a565b6122a8565b612278565b6121ad565b612191565b612122565b6120ec565b6120c3565b612054565b612025565b611f4b565b611e05565b611da7565b611cc6565b611b5e565b611a94565b61185e565b61169f565b61163d565b6115ff565b61153f565b6114b9565b61117f565b6110ae565b610e88565b610db2565b610d00565b610c13565b610b04565b610912565b6106a6565b6105a9565b6104c7565b6103a9565b6001600160a01b0381160361033d57565b600080fd5b61014435906103508261032c565b565b61016435906103508261032c565b61018435906103508261032c565b35906103508261032c565b9181601f8401121561033d578235916001600160401b03831161033d576020808501946060850201011161033d57565b608036600319011261033d576004356103c18161032c565b6024356103cd8161032c565b604435906103da8261032c565b6064356001600160401b03811161033d576103f9903690600401610379565b6104049291926149df565b61040c6158c2565b60008051602061602a8339815191525460408051630a6ce31360e01b6020808301919091526001600160a01b039889166024830152948816604482015295871660648701526080608487015260a4860183905295169460c485019392600091905b83831061049e57610491878961048c828a03601f19810184528361141c565b61586f565b5061049c6001606555565b005b84358652848101358682015284820135868301526060958601959094019360019092019161046d565b3461033d57602036600319011261033d576004356104e48161032c565b6104ec61369b565b6104f5816159cf565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163ed56be5b60e01b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a45761058b575b50734d41524b4554504c4143455f53455454494e475360601b60008051602061600a833981519152600080a3005b8061059861059e9261132a565b80611534565b3861055d565b613897565b3461033d57602036600319011261033d576004356105c68161032c565b6105ce61369b565b6105d781615a0e565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163143df10960e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610667575b506d524f59414c54595f454e47494e4560901b60008051602061600a833981519152600080a3005b806105986106749261132a565b3861063f565b606090600319011261033d576004356106928161032c565b90602435906044356106a38161032c565b90565b3461033d5760206107086106b93661067a565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51086526040808220938252928652828120919093168352602052902090565b54604051908152f35b9181601f8401121561033d578235916001600160401b03831161033d576020808501948460051b01011161033d57565b90600682101561074e5752565b634e487b7160e01b600052602160045260246000fd5b60005b8381106107775750506000910152565b8181015183820152602001610767565b906020916107a081518092818552858086019101610764565b601f01601f1916010190565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a89106108235750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d52519081518152610856838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526108c16101208084015190830190610741565b610140828101516001600160e01b031916908201526108f161016080840151906101a08091850152830190610787565b91610180809101519101529e0199019901979a99989695949392919061080d565b60208060031936011261033d576004356001600160401b03811161033d5761093e903690600401610711565b9091604091825161094e81611342565b83519461095a8661135d565b600095868152868582015286868201528460609382898680950152815201526109816149df565b6109896158c2565b60018060a01b03600080516020615f8a83398151915254169585519363160624f760e11b86860152806044860187602488015252606485019160648260051b8701019484825b848410610a1e575050610a1a89610a058a6109f88b8f61048c828e03601f19810184528361141c565b8051810182019101615099565b90610a106001606555565b51918291826107ac565b0390f35b90919293949596606319898203018752873560fe1984360301811215610b00578a610af16001938e610a95888596019160ff8335610a5b8161433a565b168452610a7b610a6c87850161036e565b6001600160a01b031685880152565b610a8681840161036e565b6001600160a01b031690840152565b610ab2610aa38a830161036e565b6001600160a01b0316838b0152565b6080808201359083015260a0808201359083015260c08082013590830152610adf60e09182810190614dab565b91909261010080928201520191614ddf565b990197019594019291906109cf565b8280fd5b3461033d57602036600319011261033d57600435610b218161032c565b610b2961369b565b610b3281615a47565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163632c2a3160e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610bc4575b506f5354414b494e475f524547495354525960801b60008051602061600a833981519152600080a3005b80610598610bd19261132a565b38610b9a565b90604060031983011261033d57600435610bf08161032c565b91602435906001600160401b03821161033d57610c0f91600401610711565b9091565b3461033d57610c2136610bd7565b9091610c2b6149df565b610c358284615e75565b60005b828110610c495761049c6001606555565b80610c58610cf5928587614a35565b35610c62846144f6565b600082815260209182526040808220338352909252206002015415610cfa57610cc0610cbb33610ca484610c95896144f6565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b614b66565b6001600160a01b038416337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a46143f0565b610c38565b506143f0565b3461033d576101a036600319011261033d5761049c600435610d218161032c565b602435610d2d8161032c565b604435610d398161032c565b606435610d458161032c565b608435610d518161032c565b60a435610d5d8161032c565b60c435610d698161032c565b60e43591610d768361032c565b6101043593610d848561032c565b6101243595610d928761032c565b610d9a610342565b97610da3610352565b99610dac610360565b9b613cc3565b3461033d57602036600319011261033d57600435610dcf8161032c565b610dd761369b565b610de081615a82565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163148282a760e21b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610e75575b50724e4554574f524b5f42454e454649434941525960681b60008051602061600a833981519152600080a3005b80610598610e829261132a565b38610e48565b3461033d57602036600319011261033d57600435610ea58161032c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610ede308414156137c6565b610efb600080516020615fea833981519152938285541614613827565b610f0361369b565b60405190610f10826113e6565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f4a57505061049c9150613950565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181610fa5575b50610f925760405162461bcd60e51b815280610f8e60048201613901565b0390fd5b61049c93610fa091146138a3565b6139e0565b610fc791925060203d8111610fce575b610fbf818361141c565b810190613888565b9038610f70565b503d610fb5565b90815180825260208080930193019160005b828110610ff5575050505090565b83516001600160a01b031685529381019392810192600101610fe7565b90815180825260208080930193019160005b828110611032575050505090565b835160ff1685529381019392810192600101611024565b906106a3916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a0611099608084015160c08385015260e0840190610fd5565b9201519060c0601f1982850301910152611012565b3461033d57610a1a61111d6110c23661067a565b906040939284916110ff8351926110d884611378565b606060a06000958681528660208201528688820152868382015282608082015201526144f6565b908252602052209060018060a01b0316600052602052604060002090565b90611170600582519361112f85611378565b80546001600160a01b03168552600181015460208601526002810154848601526003810154606086015261116560048201615126565b60808601520161517e565b60a08301525191829182611049565b3461033d5760408060031936011261033d57600490813561119f8161032c565b6024356001600160401b03811161033d576111bd9036908501610379565b906111c66149df565b6111ce6158c2565b6111df6111db3385615dde565b1590565b6112f7576111f08282959395615941565b6001600160a01b0383169160005b85811061120f5761049c6001606555565b61121a818785614a7d565b35602080611229848a88614a7d565b013584611237858b89614a7d565b013591611244848a615d53565b811515806112ed575b6112cc578288926112ac7fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f9361129b88610c958f6112c79c9b9a61128f61143d565b9588875286015261452f565b906020600191805184550151910155565b8751908152602081019190915280604081015b0390a36143f0565b6111fe565b8551639359452360e01b8152808c0184815242602082015281906040010390fd5b504283111561124d565b8351600162bed83560e01b0319815280610f8e3386838a016142f9565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161133d57604052565b611314565b604081019081106001600160401b0382111761133d57604052565b608081019081106001600160401b0382111761133d57604052565b60c081019081106001600160401b0382111761133d57604052565b61014081019081106001600160401b0382111761133d57604052565b60e081019081106001600160401b0382111761133d57604052565b61012081019081106001600160401b0382111761133d57604052565b602081019081106001600160401b0382111761133d57604052565b606081019081106001600160401b0382111761133d57604052565b90601f801991011681019081106001600160401b0382111761133d57604052565b6040519061035082611342565b6040519061035082611393565b60405190610350826113ca565b60405190610350826113af565b6040519061035082611378565b604051906101a082018281106001600160401b0382111761133d57604052565b6001600160401b03811161133d57601f01601f191660200190565b604036600319011261033d576004356114d18161032c565b602435906001600160401b03821161033d573660238301121561033d578160040135906114fd8261149e565b9161150b604051938461141c565b808352366024828601011161033d57602081600092602461049c97018387013784010152613aef565b600091031261033d57565b3461033d57600036600319011261033d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361159957604051600080516020615fea8339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461033d57604036600319011261033d5761162460043561161f8161032c565b614568565b6024356000526020526020604060002054604051908152f35b3461033d5760206107086116503661067a565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51286526040808220938252928652828120919093168352602052902090565b3461033d576116ad36610bd7565b90916116b76149df565b6116c46111db3383615dde565b611775576116d28284615e75565b60005b8281106116e65761049c6001606555565b806116f5611770928587614a35565b3561172261171661170983610c95886145a1565b546001600160a01b031690565b6001600160a01b031690565b15610cfa5761173c61173782610c95876145a1565b614a45565b6001600160a01b0384167fda6836b3af7ccd9683b9c04bdbe253e29f59637fae61c508b62142e0c45b6dea600080a36143f0565b6116d5565b604051600162bed83560e01b03198152908190610f8e903390600484016142f9565b81516001600160a01b031681526101408101929161035091906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461033d57600080600319360112611a9157610a1a90611a8560405161188381611393565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611a546118cb61144a565b600080516020615faa833981519152546001600160a01b0316815293600080516020615fca83398151915254611915906001600160a01b03165b6001600160a01b03166020870152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d502546001600160a01b031660408601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d503546001600160a01b031660608601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d504546001600160a01b031660808601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505546001600160a01b031660a086015260008051602061606a833981519152546001600160a01b031660c08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507546001600160a01b031660e08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546001600160a01b031690850152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d509546001600160a01b031690830152565b60405191829182611797565b80fd5b3461033d57602036600319011261033d57600435611ab18161032c565b611ab961369b565b611ac281615bd4565b611acb816136f3565b6001600160a01b031678434845434b4f55545f455845435554494f4e5f4d4f44554c4560381b60008051602061600a833981519152600080a3005b604060031982011261033d57600435611b1e8161032c565b916024356001600160401b039283821161033d578060238301121561033d57816004013593841161033d5760248460061b8301011161033d576024019190565b3461033d57611b6c36611b06565b611b779291926149df565b611b7f6158c2565b611b8c6111db3384615dde565b611c3557611b9a8184615988565b60005b818110611bae5761049c6001606555565b80611bbd611c30928487614a8d565b35611bc88186615d53565b602080611bd684878a614a8d565b0135611be583610c9589614568565b55611bf1838689614a8d565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b629080602081016112bf565b611b9d565b604051600162bed83560e01b0319815280610f8e3385600484016142f9565b906106a3916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611cb160a084015160e083850152610100840190610fd5565b9201519060e0601f1982850301910152611012565b3461033d5760408060031936011261033d5780610a1a91600435611ce98161032c565b611d25825191611cf8836113af565b606060c0600094858152856020820152858782015285838201528560808201528260a082015201526145a1565b60243582526020522090611d986006825193611d40856113af565b80546001600160a01b031685526001810154611d64906001600160a01b0316611905565b6002810154848601526003810154606086015260048101546080860152611d8d60058201615126565b60a08601520161517e565b60c08301525191829182611c54565b3461033d57600080600319360112611a9157611dc161369b565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b60608060031936011261033d5760043590611e1f8261032c565b60243590611e2c8261032c565b6044356001600160401b03811161033d57611e4c84913690600401610711565b92611e556149df565b611e5d6158c2565b60018060a01b03938460008051602061602a83398151915254169581604095865197602093637777e6d760e01b858b01528160848b01931660248b01521660448901528460648901525260a486019360a48360051b8801019581956000925b858410611edb576104918a8c61048c828d03601f19810184528361141c565b909192939495969760a3198a82030183528835607e198336030181121561033d5786611f396001938b611f28878596018035845285810135868501528a8101358b85015282810190614dab565b919092608080928201520191614ddf565b9a019301940192919695949390611ebc565b3461033d57602036600319011261033d57600435611f688161032c565b611f7061369b565b611f7981615ac0565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d576040516362cd1f1560e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612012575b507653504143455f4f50455241544f525f524547495354525960481b60008051602061600a833981519152600080a3005b8061059861201f9261132a565b38611fe1565b3461033d57604036600319011261033d576116246004356120458161032c565b6145da565b8015150361033d57565b3461033d57602036600319011261033d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b19260206004356120948161204a565b61209c61369b565b151560008051602061604a83398151915260ff1981541660ff8316179055604051908152a1005b3461033d57600036600319011261033d576033546040516001600160a01b039091168152602090f35b3461033d57600036600319011261033d57600080516020615f8a833981519152546040516001600160a01b039091168152602090f35b3461033d57602036600319011261033d5760043561213f8161032c565b61214761369b565b61215081615bd4565b61215981613721565b6001600160a01b03167554524144455f455845435554494f4e5f4d4f44554c4560501b60008051602061600a833981519152600080a3005b3461033d57600036600319011261033d57602060405160328152f35b3461033d57602036600319011261033d576004356121ca8161032c565b6121d261369b565b6121db81615b02565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051631d1d389760e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612265575b50675041594d454e545360c01b60008051602061600a833981519152600080a3005b806105986122729261132a565b38612243565b3461033d57600036600319011261033d57602060ff60008051602061604a83398151915254166040519015158152f35b60c036600319011261033d57600480356122c18161032c565b602435604435926122d18461032c565b606435916084359160a435956122e56149df565b6122ed6158c2565b6122f686615c0a565b73__$11854c5905aa23948096e0e4d7059bb9de$__92833b1561033d57604094855198635e157ccf60e11b8a526000998a8180612335888a8301614313565b03818a5af480156105a457612737575b508715612727578115612717578015158061270d575b6126eb57906123b29161236e828a61464c565b9960208b612393611716600080516020615fca8339815191525460018060a01b031690565b8b516361fe24a960e11b81528a81019283529687928391829160200190565b03915afa9384156105a4578c946126ca575b5060008051602061606a83398151915254895163470d6ed960e11b81528881018d8152909c916001600160a01b0316908d90819003602001815a93602094fa9b8c156105a4578d9c6126a9575b50848c11612687578461242391614b91565b998c893b15611a91578a516338fa83e760e01b8152600080516020615faa8339815191528a82019081526001600160a01b038a166020820152604081019d909d529b8c90819060600103818c5af49a8b156105a4578d9b612674575b50868661248b84614613565b60009182526020908152604080832033845282528083206001600160a01b03949094168352929052206124bd90614b9e565b9b6124c6611457565b6001600160a01b038916815290826020830152858c8301528560608301528660808301528660a08301528060c083015260e08201528361010082015287338861250e86614613565b6000918252602090815260408083206001600160a01b03948516845282528083209490931682529290925290206125b19190815181546001600160a01b0319166001600160a01b0390911617815590600890610100906020810151600185015560408101516002850155606081015160038501556080810151600485015560a0810151600585015560c0810151600685015560e081015160078501550151910155565b89516001600160a01b03888116825260208201929092526040810194909452606084019490945260808301919091529091169033907ec827db726736dd1c3f5c4643456d97cc22d1613afeae6f8576124e65e8e1bc9060a090a4602086015193808701519660800151843b1561267057612640915197889687958695634c4c261960e01b875233918701614c10565b03915af480156105a45761265d575b5061265a6001606555565b80f35b8061059861266a9261132a565b3861264f565b8680fd5b806105986126819261132a565b3861247f565b8951639bdfbb5160e01b8152808901868152602081018e905281906040010390fd5b6126c3919c5060203d602011610fce57610fbf818361141c565b9a38612411565b6126e491945060203d602011610fce57610fbf818361141c565b92386123c4565b8651633312a4fd60e21b81528086019182524260208301529081906040010390fd5b504281111561235b565b865163c6b949a960e01b81528590fd5b865163473ae14d60e01b81528590fd5b806105986127449261132a565b38612345565b3461033d5761010036600319011261033d576004356127688161032c565b604435906127758261032c565b6064356127818161032c565b6001600160401b039260c43584811161033d576127a2903690600401610711565b9160e43595861161033d576127be61049c963690600401610711565b95909460a435926084359260243590614e03565b9060a060031983011261033d576004356127eb8161032c565b916024356127f88161032c565b91604435916001600160401b039081841161033d578060238501121561033d5783600401359382851161033d578160248660071b8301011161033d57602401939260643583811161033d578261285091600401610711565b9390939260843591821161033d57610c0f91600401610711565b3461033d57612878366127d2565b969492939091956128876149df565b61288f6158c2565b61289886615c0a565b6128a56111db3388615dde565b612aae576128b382856158ed565b73__$11854c5905aa23948096e0e4d7059bb9de$__97883b1561033d57604093845199635e157ccf60e11b8b5260009a8b81806128f38860048301614313565b0381855af480156105a457612a9b575b508a813b15611a91578284928c8b6129308b51968795869485946376fb859760e01b865260048601614345565b03915af480156105a457612a88575b50895b848110612954578a61265a6001606555565b8888888888888f888a916129698a868961441a565b3597612975898b615d53565b8a602087898b848461298882868561441a565b0135936129949261441a565b0135898c60609586926129a69261441a565b0135906129b1611464565b338152926001600160a01b038b1684860152838d01528483015260808201526129db368686614446565b60a08201528b8d6129ed368a8a61449e565b60c08401526129fb906145a1565b60009182526020526040902090612a119161483d565b612a1c8d898c61441a565b0135988c89612a2c828b8561441a565b013598612a389261441a565b01359651968796339b600160a01b600190031699612a569789614999565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a4612a83906143f0565b612942565b80610598612a959261132a565b3861293f565b80610598612aa89261132a565b38612903565b604051600162bed83560e01b0319815280610f8e3389600484016142f9565b3461033d5760408060031936011261033d57612b07600435612aee8161032c565b600060208451612afd81611342565b828152015261452f565b602435600052602052806000208151612b1f81611342565b60206001835493848452015491019081528251918252516020820152f35b3461033d57600036600319011261033d5760008051602061608a833981519152546040516001600160a01b039091168152602090f35b3461033d57612b8136611b06565b612b8c9291926149df565b612b946158c2565b612ba16111db3384615dde565b611c3557612baf8184615988565b60005b818110612bc35761049c6001606555565b80612bd2612c45928487614a8d565b35612bdd8186615d53565b602080612beb84878a614a8d565b0135612bfa83610c95896145da565b55612c06838689614a8d565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e619080602081016112bf565b612bb2565b3461033d57600036600319011261033d576020604051604b8152f35b3461033d57602036600319011261033d57600435612c838161032c565b612c8b61369b565b612c9481615bb2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d576040516328b80cf560e21b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612d2c575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b60008051602061600a833981519152600080a3005b80610598612d399261132a565b38612cfc565b3461033d57602036600319011261033d57600435612d5c8161032c565b612d6461369b565b612d6d81615bb2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051631f1afd0d60e01b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612e06575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b60008051602061600a833981519152600080a3005b80610598612e139261132a565b38612dd5565b3461033d57608036600319011261033d57610a1a600435612e398161032c565b612ec5604435612e488161032c565b610ca460643591612e588361032c565b6040805195612e66876113ca565b612ea56000918289528260208a015282848a01528260608a01528260808a01528260a08a01528260c08a01528260e08a015282610100809a0152614613565b6024358252602052209060018060a01b0316600052602052604060002090565b906008612ed0611457565b8354909390612ef0906001600160a01b03165b6001600160a01b03168552565b60018101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460e08501520154908201526040519182918291909161012081019260018060a01b0381511682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b3461033d57602036600319011261033d57600435612fc78161032c565b612fcf61369b565b612fd881615b35565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051632867932b60e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457613071575b5076415050524f5645445f544f4b454e5f524547495354525960481b60008051602061600a833981519152600080a3005b8061059861307e9261132a565b38613040565b3461033d576130a36130953661067a565b9161309e6149df565b614c56565b6001606555005b3461033d57600036600319011261033d5760008051602061602a833981519152546040516001600160a01b039091168152602090f35b3461033d57602036600319011261033d576004356130fd8161032c565b61310561369b565b61310e81615b77565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051632d8b49e160e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a4576131a0575b506f5354414b494e475f53455454494e475360801b60008051602061600a833981519152600080a3005b806105986131ad9261132a565b38613176565b3461033d57602036600319011261033d576004356131d08161032c565b6131d861369b565b6001600160a01b038116156131f05761049c9061377d565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461033d57613252366127d2565b90613262979296939594976149df565b61326a6158c2565b61327488866158ed565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561033d57604051635e157ccf60e11b8152600081806132ad8860048301614313565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105a457613617575b5073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561033d576040516376fb859760e01b81526000818061330e86868d8d60048601614345565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105a457613604575b5061333c83615c0a565b60008051602061608a8339815191525461338090602090613365906001600160a01b0316611716565b6040518093819263e985e9c560e01b835233600484016142f9565b03816001600160a01b0388165afa9081156105a4576000916135d5575b50156135b95760005b8881106133b75761049c6001606555565b6133c2818a8861441a565b35868a60606133f08560406133e7828660206133df83838c61441a565b01359861441a565b0135938c61441a565b013582156135a7578115613595578015158061358b575b61356b57604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa9081156105a45760009161354c575b5082811061350f57507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d8392896135028f8f8c918f97918d926134eb8a61350a9f9e9d8e6134e6916134a7613498611471565b6001600160a01b039095168552565b60208401528b60408401528460608401526134c3368888614446565b60808401526134d3368a8a61449e565b60a0840152610ca43391610c958d6144f6565b614abd565b60405197889760018060a01b03169b339b89614999565b0390a46143f0565b6133a6565b604051636906ef1760e11b81523360048201526001600160a01b038a1660248201526044810186905260648101849052608481019190915260a490fd5b613565915060203d602011610fce57610fbf818361141c565b38613445565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b5042811115613407565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b815280610f8e8533600484016142f9565b6135f7915060203d6020116135fd575b6135ef818361141c565b810190614aa8565b3861339d565b503d6135e5565b806105986136119261132a565b38613332565b806105986136249261132a565b386132d1565b3461033d57602036600319011261033d576004356136478161032c565b61364f61369b565b61365881615bb2565b6001600160a01b031661366a8161374f565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b60008051602061600a833981519152600080a3005b6033546001600160a01b031633036136af57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020615f8a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061602a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061608a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b156137cd57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561382e57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261033d575190565b6040513d6000823e3d90fd5b156138aa57565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561398557600080516020615fea83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b906139ea82613950565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613a94575b613a2c575050565b613a919160008060405193613a4085611401565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613a8b613bfa565b91613c2a565b50565b506000613a24565b90613aa682613950565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613ae757613a2c575050565b506001613a24565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169290613b28308514156137c6565b613b45600080516020615fea833981519152948286541614613827565b613b4d61369b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613b835750506103509150613950565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613bda575b50613bc75760405162461bcd60e51b815280610f8e60048201613901565b61035093613bd591146138a3565b613a9c565b613bf391925060203d8111610fce57610fbf818361141c565b9038613ba9565b3d15613c25573d90613c0b8261149e565b91613c19604051938461141c565b82523d6000602084013e565b606090565b91929015613c8c5750815115613c3e575090565b3b15613c475790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015613c9f5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610f8e906024830190610787565b9a98969492909160ff9c9a989694926000549d8e60081c1615809e819f613dec575b8115613dcc575b5015613d7057613d129c8e613d09600160ff196000541617600055565b613d57576140b0565b613d1857565b613d2861ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b613d6b61010061ff00196000541617600055565b6140b0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081613dde575b5038613cec565b6001915060ff161438613dd7565b600160ff8216109150613ce5565b51906103508261032c565b908161014091031261033d57613e1961144a565b90613e2381613dfa565b8252613e3160208201613dfa565b6020830152613e4260408201613dfa565b6040830152613e5360608201613dfa565b6060830152613e6460808201613dfa565b6080830152613e7560a08201613dfa565b60a0830152613e8660c08201613dfa565b60c0830152613e9760e08201613dfa565b60e0830152610100613eaa818301613dfa565b90830152613ebc610120809201613dfa565b9082015290565b8051600080516020615faa83398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020615fca8339815191528054831691841691909117905560408301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5028054831691841691909117905560608301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5038054831691841691909117905560808301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5048054831691841691909117905560a08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5058054831691841691909117905560c083015160008051602061606a8339815191528054831691841691909117905560e08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507805483169184169190911790556101008301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50880549092169083161790556101209091015161035091167f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50980546001600160a01b0319166001600160a01b03909216919091179055565b95909691999b9a9893946141ac9561014099946141398f8f908f8f90614134928f8f926140eb6140f0926140e661413496615a82565b6159cf565b615ac0565b6140f987615a0e565b61410288615b02565b61410b89615b35565b6141148a615b77565b61411d8b615a47565b6141268c615bb2565b61412f8d615bb2565b615bb2565b615bd4565b60405163ef8c824960e01b81526001600160a01b03998a16600482015299891660248b01529b881660448a01529a87166064890152998616608488015298851660a487015297841660c486015296831660e485015295821661010484015294166101248201529283908190610144820190565b038173__$c98ca6a62396e5a7a1471db151198a1f31$__5af480156105a457614200946141e86141f6926141fb95600091614218575b50613ec3565b6001600160a01b031661374f565b613721565b6136f3565b6142086142a9565b6142106142dd565b6103506142cc565b61423c91506101403d61014011614242575b614234818361141c565b810190613e05565b386141e2565b503d61422a565b1561425057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b6142c360ff60005460081c166142be81614249565b614249565b6103503361377d565b61035060ff60005460081c16614249565b6142f260ff60005460081c166142be81614249565b6001606555565b6001600160a01b0391821681529116602082015260400190565b600080516020615faa83398151915281526001600160a01b03909116602082015260400190565b60ff81160361033d57565b909293918060408301604084525260608201939060005b8181106143ad57505050808303602091820152818352918201929160005b828110614388575050505090565b90919293828060019260ff883561439e8161433a565b1681520195019392910161437a565b9091939460019085356143bf8161032c565b60a083901b839003168152602090810196950192910161435c565b634e487b7160e01b600052601160045260246000fd5b60001981146143ff5760010190565b6143da565b634e487b7160e01b600052603260045260246000fd5b919081101561442a5760071b0190565b614404565b6001600160401b03811161133d5760051b60200190565b92916144518261442f565b9161445f604051938461141c565b829481845260208094019160051b810192831161033d57905b8282106144855750505050565b83809183356144938161032c565b815201910190614478565b92916144a98261442f565b916144b7604051938461141c565b829481845260208094019160051b810192831161033d57905b8282106144dd5750505050565b83809183356144eb8161433a565b8152019101906144d0565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5146020526040902090565b818102929181159184041417156143ff57565b81811061466a575050565b6000815560010161465f565b80546000825580614685575050565b6103509160005260206000209081019061465f565b90600160401b811161133d578154908083558181106146b857505050565b610350926000526020600020918201910161465f565b805460008255806146dd575050565b61035091600052601f6020600020910160051c81019061465f565b90600160401b811161133d57815481835580821061471557505050565b61035092600052601f6020600020918180850160051c8401941680614741575b500160051c019061465f565b600019908186019182549160200360031b1c16905538614735565b9080516001600160401b03811161133d5761477781846146f8565b61478b602080930193600052602060002090565b908060051c9260005b8481106148075750601f19821690910390816147b2575b5050505050565b9390600094855b8281106147d05750505050015538808080806147ab565b90919295826147fc600192846147e78b5160ff1690565b919060ff809160031b9316831b921b19161790565b9701939291016147b9565b6000805b83811061481f575084820155600101614794565b9690836148346001928a6147e7865160ff1690565b9201970161480b565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161133d5781906148cf868661469a565b0192600052806000209160005b8581106148fc575050505050505090600660c0610350930151910161475c565b84518216848201559382019386016148dc565b91908082526020809201929160005b82811061492c575050505090565b90919293828060019287356149408161032c565b848060a01b0316815201950191019291909261491e565b91908082526020809201929160005b828110614974575050505090565b90919293828060019260ff883561498a8161433a565b16815201950193929101614966565b9694926106a39896926149d1959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161490f565b9260a0818503910152614957565b6002606554146149f0576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b919081101561442a5760051b0190565b6006610350916000815560006001820155600060028201556000600382015560006004820155614a7760058201614676565b016146ce565b919081101561442a576060020190565b919081101561442a5760061b0190565b51906103508261204a565b9081602091031261033d57516106a38161204a565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b03851161133d578190614b26868661469a565b0192600052806000209160005b858110614b53575050505050505090600560a0610350930151910161475c565b8451821684820155938201938601614b33565b60056103509160008155600060018201556000600282015560006003820155614a7760048201614676565b919082018092116143ff57565b906008614ba9611457565b8354909390614bc0906001600160a01b0316612ee3565b60018101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460e08501520154610100830152565b600080516020615faa83398151915281526001600160a01b039182166020820152911660408201526060810191909152608081019190915260a081019190915260c00190565b919091614c88614c8383610ca4614c7087610c9587614613565b3360009081526020919091526040902090565b614b9e565b60408101938451156147ab57614ce2614cac85610ca433610ca486610c958a614613565b60086000918281558260018201558260028201558260038201558260048201558260058201558260068201558260078201550155565b60208281018051875160809586018051604080516001600160a01b038c81168252978101959095528401929092526060830191909152959194919092169133917fb00a321de530b83262da5c2b572508a21b98c8d189dba9939e0359e8c9fbfeac91a473__$11854c5905aa23948096e0e4d7059bb9de$__90519351915193813b1561033d57600093614d8d60405196879586948594634c4c261960e01b8652339060048701614c10565b03915af480156105a457614d9e5750565b806105986103509261132a565b9035601e198236030181121561033d5701602081359101916001600160401b03821161033d578160051b3603831361033d57565b81835290916001600160fb1b03831161033d5760209260051b809284830137010190565b969297959390989491614e146149df565b614e1c6158c2565b60008051602061602a8339815191525460405163b8e6b50f60e01b60208201526001600160a01b03998a166024820152604481019b909b5290881660648b015297871660848a015260a489015260c488015261010060e48801529490931694938493614e8d9161012486019161490f565b9060231984830301610104850152614ea492614957565b03601f1981018252614eb6908261141c565b614ebf9161586f565b506103506001606555565b51906103508261433a565b5190600682101561033d57565b51906001600160e01b03198216820361033d57565b81601f8201121561033d578051614f0d8161149e565b92614f1b604051948561141c565b8184526020828401011161033d576106a39160208085019101610764565b81601f8201121561033d57805190614f508261442f565b92604092614f608451958661141c565b808552602093848087019260051b8501019383851161033d57858101925b858410614f8f575050505050505090565b83516001600160401b039081811161033d578301916101a09283601f19828a03011261033d57614fbd61147e565b908a8101518252614fcf878201614eca565b8b830152606094614fe1868301613dfa565b88840152608095868301519084015260a095614ffe878401613dfa565b9084015260c095615010878401613dfa565b9084015260e09586830151908401526101009586830151908401526101209561503a878401614a9d565b908401526101409561504d878401614ed5565b9084015261016095615060878401614ee2565b90840152610180918281015195861161033d578c966150848c898099850101614ef7565b90850152015190820152815201930192614f7e565b9060208282031261033d5781516001600160401b039283821161033d5701908181039260a0841261033d576080604051946150d386611342565b1261033d576040516150e48161135d565b835181526020840151602082015260408401516040820152606084015160608201528452608083015190811161033d5761511e9201614f39565b602082015290565b9060405191828154918282526020928383019160005283600020936000905b82821061515b575050506103509250038361141c565b85546001600160a01b031684526001958601958895509381019390910190615145565b906040805180938054926151a5615199858560209181520190565b92600052602060002090565b9360005b81601f8201106155c1576103509554928282106155ab575b828210615591575b828210615577575b82821061555d575b828210615543575b828210615529575b82821061550f575b8282106154f5575b8282106154de575b508181106154c6575b8181106154ae575b818110615496575b81811061547e575b818110615466575b81811061544e575b818110615436575b81811061541e575b818110615406575b8181106153ee575b8181106153d6575b8181106153be575b8181106153a6575b81811061538e575b818110615376575b81811061535e575b818110615346575b81811061532e575b818110615316575b8181106152fe575b8181106152e6575b8181106152ce575b106152c0575b50038361141c565b60f81c8152602001386152b8565b60f083901c60ff1684529260019060200193016152b2565b60e883901c60ff1684529260019060200193016152aa565b60e083901c60ff1684529260019060200193016152a2565b60d883901c60ff16845292600190602001930161529a565b60d083901c60ff168452926001906020019301615292565b60c883901c60ff16845292600190602001930161528a565b60c083901c60ff168452926001906020019301615282565b60b883901c60ff16845292600190602001930161527a565b60b083901c60ff168452926001906020019301615272565b60a883901c60ff16845292600190602001930161526a565b60a083901c60ff168452926001906020019301615262565b609883901c60ff16845292600190602001930161525a565b609083901c60ff168452926001906020019301615252565b608883901c60ff16845292600190602001930161524a565b608083901c60ff168452926001906020019301615242565b607883901c60ff16845292600190602001930161523a565b607083901c60ff168452926001906020019301615232565b606883901c60ff16845292600190602001930161522a565b606083901c60ff168452926001906020019301615222565b605883901c60ff16845292600190602001930161521a565b605083901c60ff168452926001906020019301615212565b604883901c60ff16845292600190602001930161520a565b83901c60ff16845292600190602001930138615201565b603884901c60ff16855290936001906020019401906151f9565b603084901c60ff16855290936001906020019401906151f1565b602884901c60ff16855290936001906020019401906151e9565b602084811c60ff16865291949091600191019401906151e1565b601884901c60ff16855290936001906020019401906151d9565b601084901c60ff16855290936001906020019401906151d1565b600884901c60ff16855290936001906020019401906151c9565b60ff8416855290936001906020019401906151c1565b91935091600161040060209261585f885461585460ff6155e58582851660ff169052565b61582d6156926157dd8d61578d8961573d8e61560a8184018a8d60081c1660ff169052565b61561d8584018a8d60101c1660ff169052565b888b610200606095615638878201858560181c1660ff169052565b61564d6080958585888501921c1660ff169052565b6156f360a097615666898401878760281c1660ff169052565b6156a360c09b61567f8d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6156b86101208401878760481c1660ff169052565b6156cd6101408401878760501c1660ff169052565b6156e26101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6157086101a08201858560681c1660ff169052565b61571d6101c08201858560701c1660ff169052565b6157326101e08201858560781c1660ff169052565b01921c1660ff169052565b6157526102208c01888b60881c1660ff169052565b6157676102408c01888b60901c1660ff169052565b61577c6102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b6157a26102a08a01868960a81c1660ff169052565b6157b76102c08a01868960b01c1660ff169052565b6157cc6102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6157f26103208801848760c81c1660ff169052565b6158076103408801848760d01c1660ff169052565b61581c6103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b6158426103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926151a9565b6000918291602082519201905af4615885613bfa565b901561588e5790565b80511561589d57602081519101fd5b60405163d4c4c23d60e01b815260206004820152908190610f8e906024830190610787565b60ff60008051602061604a83398151915254166158db57565b60405163ab35696f60e01b8152600490fd5b6158f682615f0e565b60015b82811061590557505050565b6000198101908082116143ff5761593761592361593c93868661441a565b3561592f83878761441a565b359083615f50565b6143f0565b6158f9565b61594a82615f0e565b60015b82811061595957505050565b6000198101908082116143ff57615937615977615983938686614a7d565b3561592f838787614a7d565b61594d565b61599182615f0e565b60015b8281106159a057505050565b6000198101908082116143ff576159376159be6159ca938686614a8d565b3561592f838787614a8d565b615994565b6001600160a01b0316156159df57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b031615615a1e57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b031615615a5757565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b031615615a9257565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b031615615ad057565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b031615615b1257565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b031615615b4557565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b031615615b8757565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b031615615bc257565b60405163c49074af60e01b8152600490fd5b6001600160a01b03811615908115615c00575b50615bee57565b60405163d94b7f7760e01b8152600490fd5b90503b1538615be7565b803b158015615c3d575b615c1b5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152615c6681611401565b519084617530fa6000513d82615cba575b5081615cb0575b5080615ca0575b80615c91575b15615c14565b50615c9b81615d23565b615c8b565b50615caa81615cc6565b15615c85565b9050151538615c7e565b60201115915038615c77565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152615cf681611401565b5191617530fa6000513d82615d17575b5081615d10575090565b9050151590565b60201115915038615d06565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152615cf681611401565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156105a457600091615dc0575b5015615d95575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b615dd8915060203d8111610fce57610fbf818361141c565b38615d8b565b6000806040516020810190638da5cb5b60e01b825260048152615e0081611342565b5190845afa90615e0e613bfa565b91158015615e6a575b615e48575060208180518101031261033d576020015190615e378261032c565b6001600160a01b0391821691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b506020825110615e17565b90615e7f81615f0e565b60015b818110615e8e57505050565b615e99818385614a35565b600019820190358282116143ff57615eb2828587614a35565b351015615ec85750615ec3906143f0565b615e82565b8183615edc615ee393610f8e959688614a35565b3595614a35565b3560405193849363f48f718f60e01b8552600485016040919493926060820195825260208201520152565b8015615f3e57604b8111615f1f5750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b909182811115615f5f57505050565b60405163f48f718f60e01b8152600481019290925260248201929092526044810191909152606490fdfe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5155e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5065e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa2646970667358221220a652df5bd491578dc76ab50c5f6a70f8bd2669050474e0cd6903fad7bb0f4ee064736f6c63430008120033","sourceMap":"1418:25080:75:-:0;;;;;;;1332:4:24;1324:13;;6007::23;1418:25080:75;;;;;;;;;;;;;;6078:31:23;6074:139;;-1:-1:-1;1418:25080:75;;;;;;;;1324:13:24;1418:25080:75;;;;;;;;;;;;;;;;6074:139:23;1418:25080:75;;;;;;6007:13:23;1418:25080:75;6174:28:23;1418:25080:75;;;;;;6174:28:23;6074:139;;;1418:25080:75;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":9183,"length":20},{"start":10652,"length":20},{"start":13149,"length":20},{"start":13208,"length":20},{"start":13243,"length":20},{"start":13305,"length":20},{"start":20014,"length":20}]},"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":1502,"length":20},{"start":1728,"length":20},{"start":3099,"length":20},{"start":3785,"length":20},{"start":8290,"length":20},{"start":8900,"length":20},{"start":11645,"length":20},{"start":11862,"length":20},{"start":12481,"length":20},{"start":12791,"length":20},{"start":17047,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b60003560e01c80630a6ce31314610327578063176ab4401461032257806321ede0321461031d57806328fbba03146103185780632c0c49ee146103135780632c7408441461030e5780632f79f335146103095780632fdd983d146103045780633492e5a8146102ff5780633659cfe6146102fa578063369679a4146102f5578063373a9412146102f05780634f1ef286146102eb57806352d1902d146102e6578063552f791d146102e15780635a501f8f146102dc5780635e50c42e146102d7578063614bd944146102d257806363cf9cef146102cd5780636442950e146102c85780636e2f4d8b146102c3578063715018a6146102be5780637777e6d7146102b95780637f358230146102b45780638760251a146102af578063882796f1146102aa5780638da5cb5b146102a55780639400d601146102a0578063a0f597dd1461029b578063a3eaf4d914610296578063af231a5814610291578063b187bd261461028c578063b38df71f14610287578063b8e6b50f14610282578063be5421411461027d578063bf3d90f814610278578063c7c83d1714610273578063c7ec1b981461026e578063cfdbf25414610269578063d7a9fb7c14610264578063d80b23e31461025f578063e3409ce31461025a578063e4e87e3b14610255578063e92f94d114610250578063ed5b25b51461024b578063f103574414610246578063f2fde38b14610241578063ff3a52d41461023c5763ff5c83a41461023757600080fd5b61362a565b613244565b6131b3565b6130e0565b6130aa565b613084565b612faa565b612e19565b612d3f565b612c66565b612c4a565b612b73565b612b3d565b612acd565b61286a565b61274a565b6122a8565b612278565b6121ad565b612191565b612122565b6120ec565b6120c3565b612054565b612025565b611f4b565b611e05565b611da7565b611cc6565b611b5e565b611a94565b61185e565b61169f565b61163d565b6115ff565b61153f565b6114b9565b61117f565b6110ae565b610e88565b610db2565b610d00565b610c13565b610b04565b610912565b6106a6565b6105a9565b6104c7565b6103a9565b6001600160a01b0381160361033d57565b600080fd5b61014435906103508261032c565b565b61016435906103508261032c565b61018435906103508261032c565b35906103508261032c565b9181601f8401121561033d578235916001600160401b03831161033d576020808501946060850201011161033d57565b608036600319011261033d576004356103c18161032c565b6024356103cd8161032c565b604435906103da8261032c565b6064356001600160401b03811161033d576103f9903690600401610379565b6104049291926149df565b61040c6158c2565b60008051602061602a8339815191525460408051630a6ce31360e01b6020808301919091526001600160a01b039889166024830152948816604482015295871660648701526080608487015260a4860183905295169460c485019392600091905b83831061049e57610491878961048c828a03601f19810184528361141c565b61586f565b5061049c6001606555565b005b84358652848101358682015284820135868301526060958601959094019360019092019161046d565b3461033d57602036600319011261033d576004356104e48161032c565b6104ec61369b565b6104f5816159cf565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163ed56be5b60e01b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a45761058b575b50734d41524b4554504c4143455f53455454494e475360601b60008051602061600a833981519152600080a3005b8061059861059e9261132a565b80611534565b3861055d565b613897565b3461033d57602036600319011261033d576004356105c68161032c565b6105ce61369b565b6105d781615a0e565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163143df10960e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610667575b506d524f59414c54595f454e47494e4560901b60008051602061600a833981519152600080a3005b806105986106749261132a565b3861063f565b606090600319011261033d576004356106928161032c565b90602435906044356106a38161032c565b90565b3461033d5760206107086106b93661067a565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51086526040808220938252928652828120919093168352602052902090565b54604051908152f35b9181601f8401121561033d578235916001600160401b03831161033d576020808501948460051b01011161033d57565b90600682101561074e5752565b634e487b7160e01b600052602160045260246000fd5b60005b8381106107775750506000910152565b8181015183820152602001610767565b906020916107a081518092818552858086019101610764565b601f01601f1916010190565b9060209182815260c09283820191835193845183830152828501516040908184015283818701516060978891828701520151926080938486015201519660a0908180860152885180975260e0918286019487848a60051b8901019b01996000975b8a89106108235750505050505050505050505090565b909192939495969798999a9b8a806001928f60df19868303018d52519081518152610856838301518483019060ff169052565b818c01516001600160a01b0316818d01528187015181880152878201516001600160a01b031688820152818901516001600160a01b0316818a0152818a0151818b01528a8201518b820152610100808301511515908201526108c16101208084015190830190610741565b610140828101516001600160e01b031916908201526108f161016080840151906101a08091850152830190610787565b91610180809101519101529e0199019901979a99989695949392919061080d565b60208060031936011261033d576004356001600160401b03811161033d5761093e903690600401610711565b9091604091825161094e81611342565b83519461095a8661135d565b600095868152868582015286868201528460609382898680950152815201526109816149df565b6109896158c2565b60018060a01b03600080516020615f8a83398151915254169585519363160624f760e11b86860152806044860187602488015252606485019160648260051b8701019484825b848410610a1e575050610a1a89610a058a6109f88b8f61048c828e03601f19810184528361141c565b8051810182019101615099565b90610a106001606555565b51918291826107ac565b0390f35b90919293949596606319898203018752873560fe1984360301811215610b00578a610af16001938e610a95888596019160ff8335610a5b8161433a565b168452610a7b610a6c87850161036e565b6001600160a01b031685880152565b610a8681840161036e565b6001600160a01b031690840152565b610ab2610aa38a830161036e565b6001600160a01b0316838b0152565b6080808201359083015260a0808201359083015260c08082013590830152610adf60e09182810190614dab565b91909261010080928201520191614ddf565b990197019594019291906109cf565b8280fd5b3461033d57602036600319011261033d57600435610b218161032c565b610b2961369b565b610b3281615a47565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163632c2a3160e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610bc4575b506f5354414b494e475f524547495354525960801b60008051602061600a833981519152600080a3005b80610598610bd19261132a565b38610b9a565b90604060031983011261033d57600435610bf08161032c565b91602435906001600160401b03821161033d57610c0f91600401610711565b9091565b3461033d57610c2136610bd7565b9091610c2b6149df565b610c358284615e75565b60005b828110610c495761049c6001606555565b80610c58610cf5928587614a35565b35610c62846144f6565b600082815260209182526040808220338352909252206002015415610cfa57610cc0610cbb33610ca484610c95896144f6565b90600052602052604060002090565b9060018060a01b0316600052602052604060002090565b614b66565b6001600160a01b038416337f46227bd805037a939224e05cd991a64cb464f4b5c5317858af210838e59ce390600080a46143f0565b610c38565b506143f0565b3461033d576101a036600319011261033d5761049c600435610d218161032c565b602435610d2d8161032c565b604435610d398161032c565b606435610d458161032c565b608435610d518161032c565b60a435610d5d8161032c565b60c435610d698161032c565b60e43591610d768361032c565b6101043593610d848561032c565b6101243595610d928761032c565b610d9a610342565b97610da3610352565b99610dac610360565b9b613cc3565b3461033d57602036600319011261033d57600435610dcf8161032c565b610dd761369b565b610de081615a82565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d5760405163148282a760e21b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457610e75575b50724e4554574f524b5f42454e454649434941525960681b60008051602061600a833981519152600080a3005b80610598610e829261132a565b38610e48565b3461033d57602036600319011261033d57600435610ea58161032c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190610ede308414156137c6565b610efb600080516020615fea833981519152938285541614613827565b610f0361369b565b60405190610f10826113e6565b600082527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f4a57505061049c9150613950565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181610fa5575b50610f925760405162461bcd60e51b815280610f8e60048201613901565b0390fd5b61049c93610fa091146138a3565b6139e0565b610fc791925060203d8111610fce575b610fbf818361141c565b810190613888565b9038610f70565b503d610fb5565b90815180825260208080930193019160005b828110610ff5575050505090565b83516001600160a01b031685529381019392810192600101610fe7565b90815180825260208080930193019160005b828110611032575050505090565b835160ff1685529381019392810192600101611024565b906106a3916020815260018060a01b03825116602082015260208201516040820152604082015160608201526060820151608082015260a0611099608084015160c08385015260e0840190610fd5565b9201519060c0601f1982850301910152611012565b3461033d57610a1a61111d6110c23661067a565b906040939284916110ff8351926110d884611378565b606060a06000958681528660208201528688820152868382015282608082015201526144f6565b908252602052209060018060a01b0316600052602052604060002090565b90611170600582519361112f85611378565b80546001600160a01b03168552600181015460208601526002810154848601526003810154606086015261116560048201615126565b60808601520161517e565b60a08301525191829182611049565b3461033d5760408060031936011261033d57600490813561119f8161032c565b6024356001600160401b03811161033d576111bd9036908501610379565b906111c66149df565b6111ce6158c2565b6111df6111db3385615dde565b1590565b6112f7576111f08282959395615941565b6001600160a01b0383169160005b85811061120f5761049c6001606555565b61121a818785614a7d565b35602080611229848a88614a7d565b013584611237858b89614a7d565b013591611244848a615d53565b811515806112ed575b6112cc578288926112ac7fa3f36b03a37e1948b5a4d52ddc1d9f62ab7d4e887e3a0a03e0c68d40f6075f3f9361129b88610c958f6112c79c9b9a61128f61143d565b9588875286015261452f565b906020600191805184550151910155565b8751908152602081019190915280604081015b0390a36143f0565b6111fe565b8551639359452360e01b8152808c0184815242602082015281906040010390fd5b504283111561124d565b8351600162bed83560e01b0319815280610f8e3386838a016142f9565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161133d57604052565b611314565b604081019081106001600160401b0382111761133d57604052565b608081019081106001600160401b0382111761133d57604052565b60c081019081106001600160401b0382111761133d57604052565b61014081019081106001600160401b0382111761133d57604052565b60e081019081106001600160401b0382111761133d57604052565b61012081019081106001600160401b0382111761133d57604052565b602081019081106001600160401b0382111761133d57604052565b606081019081106001600160401b0382111761133d57604052565b90601f801991011681019081106001600160401b0382111761133d57604052565b6040519061035082611342565b6040519061035082611393565b60405190610350826113ca565b60405190610350826113af565b6040519061035082611378565b604051906101a082018281106001600160401b0382111761133d57604052565b6001600160401b03811161133d57601f01601f191660200190565b604036600319011261033d576004356114d18161032c565b602435906001600160401b03821161033d573660238301121561033d578160040135906114fd8261149e565b9161150b604051938461141c565b808352366024828601011161033d57602081600092602461049c97018387013784010152613aef565b600091031261033d57565b3461033d57600036600319011261033d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361159957604051600080516020615fea8339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b3461033d57604036600319011261033d5761162460043561161f8161032c565b614568565b6024356000526020526020604060002054604051908152f35b3461033d5760206107086116503661067a565b6001600160a01b0392831660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d51286526040808220938252928652828120919093168352602052902090565b3461033d576116ad36610bd7565b90916116b76149df565b6116c46111db3383615dde565b611775576116d28284615e75565b60005b8281106116e65761049c6001606555565b806116f5611770928587614a35565b3561172261171661170983610c95886145a1565b546001600160a01b031690565b6001600160a01b031690565b15610cfa5761173c61173782610c95876145a1565b614a45565b6001600160a01b0384167fda6836b3af7ccd9683b9c04bdbe253e29f59637fae61c508b62142e0c45b6dea600080a36143f0565b6116d5565b604051600162bed83560e01b03198152908190610f8e903390600484016142f9565b81516001600160a01b031681526101408101929161035091906020818101516001600160a01b0316908301526040818101516001600160a01b0316908301526060818101516001600160a01b0316908301526080818101516001600160a01b03169083015260a0818101516001600160a01b03169083015260c0818101516001600160a01b03169083015260e0818101516001600160a01b031690830152610100818101516001600160a01b031690830152610120908101516001600160a01b0316910152565b3461033d57600080600319360112611a9157610a1a90611a8560405161188381611393565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015261010092808483015261012080920152611a546118cb61144a565b600080516020615faa833981519152546001600160a01b0316815293600080516020615fca83398151915254611915906001600160a01b03165b6001600160a01b03166020870152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d502546001600160a01b031660408601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d503546001600160a01b031660608601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d504546001600160a01b031660808601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d505546001600160a01b031660a086015260008051602061606a833981519152546001600160a01b031660c08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507546001600160a01b031660e08601527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d508546001600160a01b031690850152565b7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d509546001600160a01b031690830152565b60405191829182611797565b80fd5b3461033d57602036600319011261033d57600435611ab18161032c565b611ab961369b565b611ac281615bd4565b611acb816136f3565b6001600160a01b031678434845434b4f55545f455845435554494f4e5f4d4f44554c4560381b60008051602061600a833981519152600080a3005b604060031982011261033d57600435611b1e8161032c565b916024356001600160401b039283821161033d578060238301121561033d57816004013593841161033d5760248460061b8301011161033d576024019190565b3461033d57611b6c36611b06565b611b779291926149df565b611b7f6158c2565b611b8c6111db3384615dde565b611c3557611b9a8184615988565b60005b818110611bae5761049c6001606555565b80611bbd611c30928487614a8d565b35611bc88186615d53565b602080611bd684878a614a8d565b0135611be583610c9589614568565b55611bf1838689614a8d565b60405191013581526001600160a01b038616907f2f2a73977f9734e3b74f4efe888b44cdcca6903d8ab2b5be49c3969cc6cb1b629080602081016112bf565b611b9d565b604051600162bed83560e01b0319815280610f8e3385600484016142f9565b906106a3916020815260018060a01b0380835116602083015260208301511660408201526040820151606082015260608201516080820152608082015160a082015260c0611cb160a084015160e083850152610100840190610fd5565b9201519060e0601f1982850301910152611012565b3461033d5760408060031936011261033d5780610a1a91600435611ce98161032c565b611d25825191611cf8836113af565b606060c0600094858152856020820152858782015285838201528560808201528260a082015201526145a1565b60243582526020522090611d986006825193611d40856113af565b80546001600160a01b031685526001810154611d64906001600160a01b0316611905565b6002810154848601526003810154606086015260048101546080860152611d8d60058201615126565b60a08601520161517e565b60c08301525191829182611c54565b3461033d57600080600319360112611a9157611dc161369b565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b60608060031936011261033d5760043590611e1f8261032c565b60243590611e2c8261032c565b6044356001600160401b03811161033d57611e4c84913690600401610711565b92611e556149df565b611e5d6158c2565b60018060a01b03938460008051602061602a83398151915254169581604095865197602093637777e6d760e01b858b01528160848b01931660248b01521660448901528460648901525260a486019360a48360051b8801019581956000925b858410611edb576104918a8c61048c828d03601f19810184528361141c565b909192939495969760a3198a82030183528835607e198336030181121561033d5786611f396001938b611f28878596018035845285810135868501528a8101358b85015282810190614dab565b919092608080928201520191614ddf565b9a019301940192919695949390611ebc565b3461033d57602036600319011261033d57600435611f688161032c565b611f7061369b565b611f7981615ac0565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d576040516362cd1f1560e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612012575b507653504143455f4f50455241544f525f524547495354525960481b60008051602061600a833981519152600080a3005b8061059861201f9261132a565b38611fe1565b3461033d57604036600319011261033d576116246004356120458161032c565b6145da565b8015150361033d57565b3461033d57602036600319011261033d577fae6fb668d2dacbb6cc6e620b898a7166d67d7838c94ddeff2dbdf55995e9b19260206004356120948161204a565b61209c61369b565b151560008051602061604a83398151915260ff1981541660ff8316179055604051908152a1005b3461033d57600036600319011261033d576033546040516001600160a01b039091168152602090f35b3461033d57600036600319011261033d57600080516020615f8a833981519152546040516001600160a01b039091168152602090f35b3461033d57602036600319011261033d5760043561213f8161032c565b61214761369b565b61215081615bd4565b61215981613721565b6001600160a01b03167554524144455f455845435554494f4e5f4d4f44554c4560501b60008051602061600a833981519152600080a3005b3461033d57600036600319011261033d57602060405160328152f35b3461033d57602036600319011261033d576004356121ca8161032c565b6121d261369b565b6121db81615b02565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051631d1d389760e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612265575b50675041594d454e545360c01b60008051602061600a833981519152600080a3005b806105986122729261132a565b38612243565b3461033d57600036600319011261033d57602060ff60008051602061604a83398151915254166040519015158152f35b60c036600319011261033d57600480356122c18161032c565b602435604435926122d18461032c565b606435916084359160a435956122e56149df565b6122ed6158c2565b6122f686615c0a565b73__$11854c5905aa23948096e0e4d7059bb9de$__92833b1561033d57604094855198635e157ccf60e11b8a526000998a8180612335888a8301614313565b03818a5af480156105a457612737575b508715612727578115612717578015158061270d575b6126eb57906123b29161236e828a61464c565b9960208b612393611716600080516020615fca8339815191525460018060a01b031690565b8b516361fe24a960e11b81528a81019283529687928391829160200190565b03915afa9384156105a4578c946126ca575b5060008051602061606a83398151915254895163470d6ed960e11b81528881018d8152909c916001600160a01b0316908d90819003602001815a93602094fa9b8c156105a4578d9c6126a9575b50848c11612687578461242391614b91565b998c893b15611a91578a516338fa83e760e01b8152600080516020615faa8339815191528a82019081526001600160a01b038a166020820152604081019d909d529b8c90819060600103818c5af49a8b156105a4578d9b612674575b50868661248b84614613565b60009182526020908152604080832033845282528083206001600160a01b03949094168352929052206124bd90614b9e565b9b6124c6611457565b6001600160a01b038916815290826020830152858c8301528560608301528660808301528660a08301528060c083015260e08201528361010082015287338861250e86614613565b6000918252602090815260408083206001600160a01b03948516845282528083209490931682529290925290206125b19190815181546001600160a01b0319166001600160a01b0390911617815590600890610100906020810151600185015560408101516002850155606081015160038501556080810151600485015560a0810151600585015560c0810151600685015560e081015160078501550151910155565b89516001600160a01b03888116825260208201929092526040810194909452606084019490945260808301919091529091169033907ec827db726736dd1c3f5c4643456d97cc22d1613afeae6f8576124e65e8e1bc9060a090a4602086015193808701519660800151843b1561267057612640915197889687958695634c4c261960e01b875233918701614c10565b03915af480156105a45761265d575b5061265a6001606555565b80f35b8061059861266a9261132a565b3861264f565b8680fd5b806105986126819261132a565b3861247f565b8951639bdfbb5160e01b8152808901868152602081018e905281906040010390fd5b6126c3919c5060203d602011610fce57610fbf818361141c565b9a38612411565b6126e491945060203d602011610fce57610fbf818361141c565b92386123c4565b8651633312a4fd60e21b81528086019182524260208301529081906040010390fd5b504281111561235b565b865163c6b949a960e01b81528590fd5b865163473ae14d60e01b81528590fd5b806105986127449261132a565b38612345565b3461033d5761010036600319011261033d576004356127688161032c565b604435906127758261032c565b6064356127818161032c565b6001600160401b039260c43584811161033d576127a2903690600401610711565b9160e43595861161033d576127be61049c963690600401610711565b95909460a435926084359260243590614e03565b9060a060031983011261033d576004356127eb8161032c565b916024356127f88161032c565b91604435916001600160401b039081841161033d578060238501121561033d5783600401359382851161033d578160248660071b8301011161033d57602401939260643583811161033d578261285091600401610711565b9390939260843591821161033d57610c0f91600401610711565b3461033d57612878366127d2565b969492939091956128876149df565b61288f6158c2565b61289886615c0a565b6128a56111db3388615dde565b612aae576128b382856158ed565b73__$11854c5905aa23948096e0e4d7059bb9de$__97883b1561033d57604093845199635e157ccf60e11b8b5260009a8b81806128f38860048301614313565b0381855af480156105a457612a9b575b508a813b15611a91578284928c8b6129308b51968795869485946376fb859760e01b865260048601614345565b03915af480156105a457612a88575b50895b848110612954578a61265a6001606555565b8888888888888f888a916129698a868961441a565b3597612975898b615d53565b8a602087898b848461298882868561441a565b0135936129949261441a565b0135898c60609586926129a69261441a565b0135906129b1611464565b338152926001600160a01b038b1684860152838d01528483015260808201526129db368686614446565b60a08201528b8d6129ed368a8a61449e565b60c08401526129fb906145a1565b60009182526020526040902090612a119161483d565b612a1c8d898c61441a565b0135988c89612a2c828b8561441a565b013598612a389261441a565b01359651968796339b600160a01b600190031699612a569789614999565b037f4c048dfd080dcfa2cccc41ef603e5f0ed6602ca215a41581d653aadf841a560b91a4612a83906143f0565b612942565b80610598612a959261132a565b3861293f565b80610598612aa89261132a565b38612903565b604051600162bed83560e01b0319815280610f8e3389600484016142f9565b3461033d5760408060031936011261033d57612b07600435612aee8161032c565b600060208451612afd81611342565b828152015261452f565b602435600052602052806000208151612b1f81611342565b60206001835493848452015491019081528251918252516020820152f35b3461033d57600036600319011261033d5760008051602061608a833981519152546040516001600160a01b039091168152602090f35b3461033d57612b8136611b06565b612b8c9291926149df565b612b946158c2565b612ba16111db3384615dde565b611c3557612baf8184615988565b60005b818110612bc35761049c6001606555565b80612bd2612c45928487614a8d565b35612bdd8186615d53565b602080612beb84878a614a8d565b0135612bfa83610c95896145da565b55612c06838689614a8d565b60405191013581526001600160a01b038616907feead0384c6f48c02c0099b2433359d43617492f06d8e3a59cbe786b9970f7e619080602081016112bf565b612bb2565b3461033d57600036600319011261033d576020604051604b8152f35b3461033d57602036600319011261033d57600435612c838161032c565b612c8b61369b565b612c9481615bb2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d576040516328b80cf560e21b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612d2c575b507522a92199182fa0a8282927ab20a62fa6a0a720a3a2a960511b60008051602061600a833981519152600080a3005b80610598612d399261132a565b38612cfc565b3461033d57602036600319011261033d57600435612d5c8161032c565b612d6461369b565b612d6d81615bb2565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051631f1afd0d60e01b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457612e06575b507622a9219b9918afa0a8282927ab20a62fa6a0a720a3a2a960491b60008051602061600a833981519152600080a3005b80610598612e139261132a565b38612dd5565b3461033d57608036600319011261033d57610a1a600435612e398161032c565b612ec5604435612e488161032c565b610ca460643591612e588361032c565b6040805195612e66876113ca565b612ea56000918289528260208a015282848a01528260608a01528260808a01528260a08a01528260c08a01528260e08a015282610100809a0152614613565b6024358252602052209060018060a01b0316600052602052604060002090565b906008612ed0611457565b8354909390612ef0906001600160a01b03165b6001600160a01b03168552565b60018101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460e08501520154908201526040519182918291909161012081019260018060a01b0381511682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b3461033d57602036600319011261033d57600435612fc78161032c565b612fcf61369b565b612fd881615b35565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051632867932b60e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a457613071575b5076415050524f5645445f544f4b454e5f524547495354525960481b60008051602061600a833981519152600080a3005b8061059861307e9261132a565b38613040565b3461033d576130a36130953661067a565b9161309e6149df565b614c56565b6001606555005b3461033d57600036600319011261033d5760008051602061602a833981519152546040516001600160a01b039091168152602090f35b3461033d57602036600319011261033d576004356130fd8161032c565b61310561369b565b61310e81615b77565b73__$c98ca6a62396e5a7a1471db151198a1f31$__90813b1561033d57604051632d8b49e160e11b8152600080516020615faa83398151915260048201526001600160a01b039091166024820181905291600090829060449082905af480156105a4576131a0575b506f5354414b494e475f53455454494e475360801b60008051602061600a833981519152600080a3005b806105986131ad9261132a565b38613176565b3461033d57602036600319011261033d576004356131d08161032c565b6131d861369b565b6001600160a01b038116156131f05761049c9061377d565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b3461033d57613252366127d2565b90613262979296939594976149df565b61326a6158c2565b61327488866158ed565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b1561033d57604051635e157ccf60e11b8152600081806132ad8860048301614313565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105a457613617575b5073__$11854c5905aa23948096e0e4d7059bb9de$__3b1561033d576040516376fb859760e01b81526000818061330e86868d8d60048601614345565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af480156105a457613604575b5061333c83615c0a565b60008051602061608a8339815191525461338090602090613365906001600160a01b0316611716565b6040518093819263e985e9c560e01b835233600484016142f9565b03816001600160a01b0388165afa9081156105a4576000916135d5575b50156135b95760005b8881106133b75761049c6001606555565b6133c2818a8861441a565b35868a60606133f08560406133e7828660206133df83838c61441a565b01359861441a565b0135938c61441a565b013582156135a7578115613595578015158061358b575b61356b57604051627eeac760e11b8152336004820152602481018590526020816044816001600160a01b038d165afa9081156105a45760009161354c575b5082811061350f57507fe4cf997ce4def583f8220b51e6c89b5dbf6eeded5de4d1d78884a25d2bf46d5d8392896135028f8f8c918f97918d926134eb8a61350a9f9e9d8e6134e6916134a7613498611471565b6001600160a01b039095168552565b60208401528b60408401528460608401526134c3368888614446565b60808401526134d3368a8a61449e565b60a0840152610ca43391610c958d6144f6565b614abd565b60405197889760018060a01b03169b339b89614999565b0390a46143f0565b6133a6565b604051636906ef1760e11b81523360048201526001600160a01b038a1660248201526044810186905260648101849052608481019190915260a490fd5b613565915060203d602011610fce57610fbf818361141c565b38613445565b6040516346a836ff60e11b81526004810191909152426024820152604490fd5b5042811115613407565b60405163c6b949a960e01b8152600490fd5b6040516331cc996d60e11b8152600490fd5b60405163d65b0d6960e01b815280610f8e8533600484016142f9565b6135f7915060203d6020116135fd575b6135ef818361141c565b810190614aa8565b3861339d565b503d6135e5565b806105986136119261132a565b38613332565b806105986136249261132a565b386132d1565b3461033d57602036600319011261033d576004356136478161032c565b61364f61369b565b61365881615bb2565b6001600160a01b031661366a8161374f565b7722a92198989a9aafa0a8282927ab20a62fa6a0a720a3a2a960411b60008051602061600a833981519152600080a3005b6033546001600160a01b031633036136af57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600080516020615f8a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061602a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061608a83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b156137cd57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561382e57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b9081602091031261033d575190565b6040513d6000823e3d90fd5b156138aa57565b60405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b60809060208152602e60208201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960408201526d6f6e206973206e6f74205555505360901b60608201520190565b803b1561398557600080516020615fea83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b906139ea82613950565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613a94575b613a2c575050565b613a919160008060405193613a4085611401565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020860152660819985a5b195960ca1b6040860152602081519101845af4613a8b613bfa565b91613c2a565b50565b506000613a24565b90613aa682613950565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2805115801590613ae757613a2c575050565b506001613a24565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169290613b28308514156137c6565b613b45600080516020615fea833981519152948286541614613827565b613b4d61369b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615613b835750506103509150613950565b6020600491604094939451928380926352d1902d60e01b825286165afa60009181613bda575b50613bc75760405162461bcd60e51b815280610f8e60048201613901565b61035093613bd591146138a3565b613a9c565b613bf391925060203d8111610fce57610fbf818361141c565b9038613ba9565b3d15613c25573d90613c0b8261149e565b91613c19604051938461141c565b82523d6000602084013e565b606090565b91929015613c8c5750815115613c3e575090565b3b15613c475790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015613c9f5750805190602001fd5b60405162461bcd60e51b815260206004820152908190610f8e906024830190610787565b9a98969492909160ff9c9a989694926000549d8e60081c1615809e819f613dec575b8115613dcc575b5015613d7057613d129c8e613d09600160ff196000541617600055565b613d57576140b0565b613d1857565b613d2861ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1565b613d6b61010061ff00196000541617600055565b6140b0565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081613dde575b5038613cec565b6001915060ff161438613dd7565b600160ff8216109150613ce5565b51906103508261032c565b908161014091031261033d57613e1961144a565b90613e2381613dfa565b8252613e3160208201613dfa565b6020830152613e4260408201613dfa565b6040830152613e5360608201613dfa565b6060830152613e6460808201613dfa565b6080830152613e7560a08201613dfa565b60a0830152613e8660c08201613dfa565b60c0830152613e9760e08201613dfa565b60e0830152610100613eaa818301613dfa565b90830152613ebc610120809201613dfa565b9082015290565b8051600080516020615faa83398151915280546001600160a01b03199081166001600160a01b03938416179091556020830151600080516020615fca8339815191528054831691841691909117905560408301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5028054831691841691909117905560608301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5038054831691841691909117905560808301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5048054831691841691909117905560a08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5058054831691841691909117905560c083015160008051602061606a8339815191528054831691841691909117905560e08301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d507805483169184169190911790556101008301517f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50880549092169083161790556101209091015161035091167f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50980546001600160a01b0319166001600160a01b03909216919091179055565b95909691999b9a9893946141ac9561014099946141398f8f908f8f90614134928f8f926140eb6140f0926140e661413496615a82565b6159cf565b615ac0565b6140f987615a0e565b61410288615b02565b61410b89615b35565b6141148a615b77565b61411d8b615a47565b6141268c615bb2565b61412f8d615bb2565b615bb2565b615bd4565b60405163ef8c824960e01b81526001600160a01b03998a16600482015299891660248b01529b881660448a01529a87166064890152998616608488015298851660a487015297841660c486015296831660e485015295821661010484015294166101248201529283908190610144820190565b038173__$c98ca6a62396e5a7a1471db151198a1f31$__5af480156105a457614200946141e86141f6926141fb95600091614218575b50613ec3565b6001600160a01b031661374f565b613721565b6136f3565b6142086142a9565b6142106142dd565b6103506142cc565b61423c91506101403d61014011614242575b614234818361141c565b810190613e05565b386141e2565b503d61422a565b1561425057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b6142c360ff60005460081c166142be81614249565b614249565b6103503361377d565b61035060ff60005460081c16614249565b6142f260ff60005460081c166142be81614249565b6001606555565b6001600160a01b0391821681529116602082015260400190565b600080516020615faa83398151915281526001600160a01b03909116602082015260400190565b60ff81160361033d57565b909293918060408301604084525260608201939060005b8181106143ad57505050808303602091820152818352918201929160005b828110614388575050505090565b90919293828060019260ff883561439e8161433a565b1681520195019392910161437a565b9091939460019085356143bf8161032c565b60a083901b839003168152602090810196950192910161435c565b634e487b7160e01b600052601160045260246000fd5b60001981146143ff5760010190565b6143da565b634e487b7160e01b600052603260045260246000fd5b919081101561442a5760071b0190565b614404565b6001600160401b03811161133d5760051b60200190565b92916144518261442f565b9161445f604051938461141c565b829481845260208094019160051b810192831161033d57905b8282106144855750505050565b83809183356144938161032c565b815201910190614478565b92916144a98261442f565b916144b7604051938461141c565b829481845260208094019160051b810192831161033d57905b8282106144dd5750505050565b83809183356144eb8161433a565b8152019101906144d0565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5146020526040902090565b818102929181159184041417156143ff57565b81811061466a575050565b6000815560010161465f565b80546000825580614685575050565b6103509160005260206000209081019061465f565b90600160401b811161133d578154908083558181106146b857505050565b610350926000526020600020918201910161465f565b805460008255806146dd575050565b61035091600052601f6020600020910160051c81019061465f565b90600160401b811161133d57815481835580821061471557505050565b61035092600052601f6020600020918180850160051c8401941680614741575b500160051c019061465f565b600019908186019182549160200360031b1c16905538614735565b9080516001600160401b03811161133d5761477781846146f8565b61478b602080930193600052602060002090565b908060051c9260005b8481106148075750601f19821690910390816147b2575b5050505050565b9390600094855b8281106147d05750505050015538808080806147ab565b90919295826147fc600192846147e78b5160ff1690565b919060ff809160031b9316831b921b19161790565b9701939291016147b9565b6000805b83811061481f575084820155600101614794565b9690836148346001928a6147e7865160ff1690565b9201970161480b565b815181546001600160a01b0319166001600160a01b03918216178255909190602082810151600185810180549285166001600160a01b03166001600160a01b03199093169290921790915591604084015160028601556060840151600386015560808401516004860155600585019060a0850151928351936001600160401b03851161133d5781906148cf868661469a565b0192600052806000209160005b8581106148fc575050505050505090600660c0610350930151910161475c565b84518216848201559382019386016148dc565b91908082526020809201929160005b82811061492c575050505090565b90919293828060019287356149408161032c565b848060a01b0316815201950191019291909261491e565b91908082526020809201929160005b828110614974575050505090565b90919293828060019260ff883561498a8161433a565b16815201950193929101614966565b9694926106a39896926149d1959260018060a01b0316895260208901526040880152606087015260c0608087015260c086019161490f565b9260a0818503910152614957565b6002606554146149f0576002606555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b919081101561442a5760051b0190565b6006610350916000815560006001820155600060028201556000600382015560006004820155614a7760058201614676565b016146ce565b919081101561442a576060020190565b919081101561442a5760061b0190565b51906103508261204a565b9081602091031261033d57516106a38161204a565b815181546001600160a01b0319166001600160a01b039182161782559091906020808301519160019283860155604084015160028601556060840151600386015560048501906080850151928351936001600160401b03851161133d578190614b26868661469a565b0192600052806000209160005b858110614b53575050505050505090600560a0610350930151910161475c565b8451821684820155938201938601614b33565b60056103509160008155600060018201556000600282015560006003820155614a7760048201614676565b919082018092116143ff57565b906008614ba9611457565b8354909390614bc0906001600160a01b0316612ee3565b60018101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460e08501520154610100830152565b600080516020615faa83398151915281526001600160a01b039182166020820152911660408201526060810191909152608081019190915260a081019190915260c00190565b919091614c88614c8383610ca4614c7087610c9587614613565b3360009081526020919091526040902090565b614b9e565b60408101938451156147ab57614ce2614cac85610ca433610ca486610c958a614613565b60086000918281558260018201558260028201558260038201558260048201558260058201558260068201558260078201550155565b60208281018051875160809586018051604080516001600160a01b038c81168252978101959095528401929092526060830191909152959194919092169133917fb00a321de530b83262da5c2b572508a21b98c8d189dba9939e0359e8c9fbfeac91a473__$11854c5905aa23948096e0e4d7059bb9de$__90519351915193813b1561033d57600093614d8d60405196879586948594634c4c261960e01b8652339060048701614c10565b03915af480156105a457614d9e5750565b806105986103509261132a565b9035601e198236030181121561033d5701602081359101916001600160401b03821161033d578160051b3603831361033d57565b81835290916001600160fb1b03831161033d5760209260051b809284830137010190565b969297959390989491614e146149df565b614e1c6158c2565b60008051602061602a8339815191525460405163b8e6b50f60e01b60208201526001600160a01b03998a166024820152604481019b909b5290881660648b015297871660848a015260a489015260c488015261010060e48801529490931694938493614e8d9161012486019161490f565b9060231984830301610104850152614ea492614957565b03601f1981018252614eb6908261141c565b614ebf9161586f565b506103506001606555565b51906103508261433a565b5190600682101561033d57565b51906001600160e01b03198216820361033d57565b81601f8201121561033d578051614f0d8161149e565b92614f1b604051948561141c565b8184526020828401011161033d576106a39160208085019101610764565b81601f8201121561033d57805190614f508261442f565b92604092614f608451958661141c565b808552602093848087019260051b8501019383851161033d57858101925b858410614f8f575050505050505090565b83516001600160401b039081811161033d578301916101a09283601f19828a03011261033d57614fbd61147e565b908a8101518252614fcf878201614eca565b8b830152606094614fe1868301613dfa565b88840152608095868301519084015260a095614ffe878401613dfa565b9084015260c095615010878401613dfa565b9084015260e09586830151908401526101009586830151908401526101209561503a878401614a9d565b908401526101409561504d878401614ed5565b9084015261016095615060878401614ee2565b90840152610180918281015195861161033d578c966150848c898099850101614ef7565b90850152015190820152815201930192614f7e565b9060208282031261033d5781516001600160401b039283821161033d5701908181039260a0841261033d576080604051946150d386611342565b1261033d576040516150e48161135d565b835181526020840151602082015260408401516040820152606084015160608201528452608083015190811161033d5761511e9201614f39565b602082015290565b9060405191828154918282526020928383019160005283600020936000905b82821061515b575050506103509250038361141c565b85546001600160a01b031684526001958601958895509381019390910190615145565b906040805180938054926151a5615199858560209181520190565b92600052602060002090565b9360005b81601f8201106155c1576103509554928282106155ab575b828210615591575b828210615577575b82821061555d575b828210615543575b828210615529575b82821061550f575b8282106154f5575b8282106154de575b508181106154c6575b8181106154ae575b818110615496575b81811061547e575b818110615466575b81811061544e575b818110615436575b81811061541e575b818110615406575b8181106153ee575b8181106153d6575b8181106153be575b8181106153a6575b81811061538e575b818110615376575b81811061535e575b818110615346575b81811061532e575b818110615316575b8181106152fe575b8181106152e6575b8181106152ce575b106152c0575b50038361141c565b60f81c8152602001386152b8565b60f083901c60ff1684529260019060200193016152b2565b60e883901c60ff1684529260019060200193016152aa565b60e083901c60ff1684529260019060200193016152a2565b60d883901c60ff16845292600190602001930161529a565b60d083901c60ff168452926001906020019301615292565b60c883901c60ff16845292600190602001930161528a565b60c083901c60ff168452926001906020019301615282565b60b883901c60ff16845292600190602001930161527a565b60b083901c60ff168452926001906020019301615272565b60a883901c60ff16845292600190602001930161526a565b60a083901c60ff168452926001906020019301615262565b609883901c60ff16845292600190602001930161525a565b609083901c60ff168452926001906020019301615252565b608883901c60ff16845292600190602001930161524a565b608083901c60ff168452926001906020019301615242565b607883901c60ff16845292600190602001930161523a565b607083901c60ff168452926001906020019301615232565b606883901c60ff16845292600190602001930161522a565b606083901c60ff168452926001906020019301615222565b605883901c60ff16845292600190602001930161521a565b605083901c60ff168452926001906020019301615212565b604883901c60ff16845292600190602001930161520a565b83901c60ff16845292600190602001930138615201565b603884901c60ff16855290936001906020019401906151f9565b603084901c60ff16855290936001906020019401906151f1565b602884901c60ff16855290936001906020019401906151e9565b602084811c60ff16865291949091600191019401906151e1565b601884901c60ff16855290936001906020019401906151d9565b601084901c60ff16855290936001906020019401906151d1565b600884901c60ff16855290936001906020019401906151c9565b60ff8416855290936001906020019401906151c1565b91935091600161040060209261585f885461585460ff6155e58582851660ff169052565b61582d6156926157dd8d61578d8961573d8e61560a8184018a8d60081c1660ff169052565b61561d8584018a8d60101c1660ff169052565b888b610200606095615638878201858560181c1660ff169052565b61564d6080958585888501921c1660ff169052565b6156f360a097615666898401878760281c1660ff169052565b6156a360c09b61567f8d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6156b86101208401878760481c1660ff169052565b6156cd6101408401878760501c1660ff169052565b6156e26101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6157086101a08201858560681c1660ff169052565b61571d6101c08201858560701c1660ff169052565b6157326101e08201858560781c1660ff169052565b01921c1660ff169052565b6157526102208c01888b60881c1660ff169052565b6157676102408c01888b60901c1660ff169052565b61577c6102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b6157a26102a08a01868960a81c1660ff169052565b6157b76102c08a01868960b01c1660ff169052565b6157cc6102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6157f26103208801848760c81c1660ff169052565b6158076103408801848760d01c1660ff169052565b61581c6103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b6158426103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b01950191019186939194926151a9565b6000918291602082519201905af4615885613bfa565b901561588e5790565b80511561589d57602081519101fd5b60405163d4c4c23d60e01b815260206004820152908190610f8e906024830190610787565b60ff60008051602061604a83398151915254166158db57565b60405163ab35696f60e01b8152600490fd5b6158f682615f0e565b60015b82811061590557505050565b6000198101908082116143ff5761593761592361593c93868661441a565b3561592f83878761441a565b359083615f50565b6143f0565b6158f9565b61594a82615f0e565b60015b82811061595957505050565b6000198101908082116143ff57615937615977615983938686614a7d565b3561592f838787614a7d565b61594d565b61599182615f0e565b60015b8281106159a057505050565b6000198101908082116143ff576159376159be6159ca938686614a8d565b3561592f838787614a8d565b615994565b6001600160a01b0316156159df57565b60405163602d6df560e01b8152734d41524b4554504c4143455f53455454494e475360601b6004820152602490fd5b6001600160a01b031615615a1e57565b60405163602d6df560e01b81526d524f59414c54595f454e47494e4560901b6004820152602490fd5b6001600160a01b031615615a5757565b60405163602d6df560e01b81526f5354414b494e475f524547495354525960801b6004820152602490fd5b6001600160a01b031615615a9257565b60405163602d6df560e01b8152724e4554574f524b5f42454e454649434941525960681b6004820152602490fd5b6001600160a01b031615615ad057565b60405163602d6df560e01b81527653504143455f4f50455241544f525f524547495354525960481b6004820152602490fd5b6001600160a01b031615615b1257565b60405163602d6df560e01b8152675041594d454e545360c01b6004820152602490fd5b6001600160a01b031615615b4557565b60405163602d6df560e01b815276415050524f5645445f544f4b454e5f524547495354525960481b6004820152602490fd5b6001600160a01b031615615b8757565b60405163602d6df560e01b81526f5354414b494e475f53455454494e475360801b6004820152602490fd5b6001600160a01b031615615bc257565b60405163c49074af60e01b8152600490fd5b6001600160a01b03811615908115615c00575b50615bee57565b60405163d94b7f7760e01b8152600490fd5b90503b1538615be7565b803b158015615c3d575b615c1b5750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152615c6681611401565b519084617530fa6000513d82615cba575b5081615cb0575b5080615ca0575b80615c91575b15615c14565b50615c9b81615d23565b615c8b565b50615caa81615cc6565b15615c85565b9050151538615c7e565b60201115915038615c77565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152615cf681611401565b5191617530fa6000513d82615d17575b5081615d10575090565b9050151590565b60201115915038615d06565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152615cf681611401565b6040516001620b695760e21b03198152600481018390526020816024816001600160a01b0386165afa9081156105a457600091615dc0575b5015615d95575050565b604051632be7c7f360e01b81526001600160a01b039190911660048201526024810191909152604490fd5b615dd8915060203d8111610fce57610fbf818361141c565b38615d8b565b6000806040516020810190638da5cb5b60e01b825260048152615e0081611342565b5190845afa90615e0e613bfa565b91158015615e6a575b615e48575060208180518101031261033d576020015190615e378261032c565b6001600160a01b0391821691161490565b60405163915b8f1d60e01b81526001600160a01b039091166004820152602490fd5b506020825110615e17565b90615e7f81615f0e565b60015b818110615e8e57505050565b615e99818385614a35565b600019820190358282116143ff57615eb2828587614a35565b351015615ec85750615ec3906143f0565b615e82565b8183615edc615ee393610f8e959688614a35565b3595614a35565b3560405193849363f48f718f60e01b8552600485016040919493926060820195825260208201520152565b8015615f3e57604b8111615f1f5750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b909182811115615f5f57505050565b60405163f48f718f60e01b8152600481019290925260248201929092526044810191909152606490fdfe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50c5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d501360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc376c367a1420063e9671cc85404673694901b9db2c20dc84b5acbf060f7ee37a5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50b5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5155e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5065e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa2646970667358221220a652df5bd491578dc76ab50c5f6a70f8bd2669050474e0cd6903fad7bb0f4ee064736f6c63430008120033","sourceMap":"1418:25080:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1720:61:75;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;-1:-1:-1;;;1418:25080:75;15956:224;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;15956:224;;1418:25080;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;15869:321;15956:224;;;;;;;;;;;;;;:::i;:::-;15869:321;:::i;:::-;;2536:1:25;1787;2065:22;1787:1;1985:109;2536:1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20579:26:75;;;:::i;:::-;20616:60;:82;;;;;;1418:25080;;-1:-1:-1;;;20616:82:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;20616:82;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;20616:82;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;20713:78:75;1418:25080;20616:82;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;1418:25080::-;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;21313:20:75;;;:::i;:::-;21344:54;:70;;;;;;1418:25080;;-1:-1:-1;;;21344:70:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;21344:70;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;21344:70;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;21429:66:75;1418:25080;21344:70;;;;;;:::i;:::-;;;;1418:25080;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;18312:80;1418:25080;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;-1:-1:-1;1418:25080:75;;;18312:42;1418:25080;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;18312:80;1418:25080;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1418:25080:75;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15956:224;1418:25080;-1:-1:-1;;1418:25080:75;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:103:25;;:::i;:::-;1720:61:75;;:::i;:::-;1418:25080;;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;17314:53;;;;17291:85;;;;1418:25080;;;;17291:85;;;;1418:25080;;;;;;;;;;;;;;;;;;;;;;17291:85;;1418:25080;17291:85;17169:264;17291:85;17193:197;17291:85;;;;;;15956:224;;17291:85;;;;;;:::i;17193:197::-;1418:25080;;17169:264;;;;;;;:::i;:::-;2536:1:25;;1787;2065:22;1787:1;1985:109;2536:1;1418:25080:75;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;22635:22:75;;;:::i;:::-;22668:56;:74;;;;;;1418:25080;;-1:-1:-1;;;22668:74:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;22668:74;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;22668:74;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;22757:70:75;1418:25080;22668:74;;;;;;:::i;:::-;;;;1418:25080;;;-1:-1:-1;;1418:25080:75;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;:::i;:::-;11659:9:75;;;;:::i;:::-;11697:1;11700:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;11722:3:75;11759:12;;11722:3;11759:12;;;;:::i;:::-;1418:25080;11789:50;;;:::i;:::-;11697:1;1418:25080;;;;;;;;;;;11849:10;1418:25080;;;;;;11789:80;;1418:25080;11789:85;11785:132;;11931:78;11938:71;11849:10;11938:59;:50;;;;:::i;:::-;1418:25080;;;;;;;;;;11938:59;1418:25080;;;;;;;;;;;;;;;;11938:71;11931:78;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;11849:10;12028:57;11697:1;;12028:57;11722:3;:::i;:::-;11685:13;;11785:132;11894:8;11722:3;:::i;1418:25080::-;;;;;;-1:-1:-1;;1418:25080:75;;;;1899:2243;1418:25080;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;1899:2243;;:::i;1418:25080::-;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20217:25:75;;;:::i;:::-;20253:59;:80;;;;;;1418:25080;;-1:-1:-1;;;20253:80:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;20253:80;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;20253:80;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;20348:76:75;1418:25080;20253:80;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1898:6:24;1418:25080:75;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;1418:25080:75;;;;;;:::i;:::-;-1:-1:-1;1418:25080:75;;971:66:21;;1418:25080:75;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;1418:25080:75;;;;;;;;971:66:21;;;;;;;3383:63;;1418:25080:75;;3383:63:21;;-1:-1:-1;;3383:63:21;;;3232:526;-1:-1:-1;3379:302:21;;1418:25080:75;;-1:-1:-1;;;3610:56:21;;1418:25080:75;3610:56:21;1418:25080:75;3610:56:21;;;:::i;:::-;;;;3379:302;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;1418:25080:75;3383:63:21;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1418:25080:75;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15956:224;1418:25080;15956:224;;1418:25080;;;;;;;;:::i;:::-;;;;;19028:69;1418:25080;;;:::i;:::-;;;;;;;19028:50;1418:25080;;;;;;:::i;:::-;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;19028:50;:::i;:::-;1418:25080;;;;;;;;;;;;;;;;;;;;;;19028:69;1418:25080;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;:::i;:::-;2471:103:25;;;:::i;:::-;1720:61:75;;:::i;:::-;6875:47;6876:46;6911:10;6876:46;;:::i;:::-;6875:47;;1418:25080;6875:47;6871:131;;7044:9;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;-1:-1:-1;7085:20:75;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;7107:3:75;7144:12;;;;;:::i;:::-;1418:25080;;7193:12;;;;;;:::i;:::-;:17;1418:25080;7247:12;;;;;;:::i;:::-;:25;1418:25080;7328:7;;;;;:::i;:::-;7354:18;;;:53;;;7107:3;7350:158;;1418:25080;;;;7685:70;1418:25080;7522:68;1418:25080;7522:59;1418:25080;7107:3;1418:25080;;;;;:::i;:::-;;;;;7609:57;;1418:25080;7522:59;:::i;:68::-;1418:25080;;;;;;1787:1:25;;1418:25080:75;;;;1787:1:25;1418:25080:75;;;;;;;;;;;;;;;;;;7685:70;;;;7107:3;:::i;:::-;7070:13;;7350:158;1418:25080;;-1:-1:-1;;;7434:59:75;;;;;1418:25080;;;7477:15;1418:25080;;;;;;;;3610:56:21;;;7354:53:75;7392:15;;7376:31;;;7354:53;;6871:131;1418:25080;;-1:-1:-1;;;;;;6945:46:75;;1418:25080;6945:46;6911:10;1418:25080;6945:46;;;;:::i;1418:25080::-;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;15956:224;;;1418:25080;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;15956:224;1418:25080;-1:-1:-1;;1418:25080:75;;;;:::o;:::-;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;3901:220:24;1418:25080:75;;;;;;;;;;3901:220:24;:::i;1418:25080:75:-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1418:25080:75;;;;2333:6:24;-1:-1:-1;;;;;1418:25080:75;2324:4:24;2316:23;1418:25080:75;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;18523:52;1418:25080;;;;;:::i;:::-;18523:52;:::i;:::-;1418:25080;;-1:-1:-1;1418:25080:75;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;18768:78;1418:25080;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;-1:-1:-1;1418:25080:75;;;18768:40;1418:25080;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;:::i;:::-;6081:47:75;6082:46;6117:10;6082:46;;:::i;6081:47::-;6077:131;;6235:9;;;;:::i;:::-;6335:1;6338:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;6360:3:75;6397:12;;6360:3;6397:12;;;;:::i;:::-;1418:25080;6427:67;:53;:46;:37;;;;:::i;:46::-;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;6427:53;-1:-1:-1;;;;;1418:25080:75;;;6427:67;;6423:114;;6551:53;6558:46;:37;;;;:::i;:46::-;6551:53;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;6623:50;6335:1;;6623:50;6360:3;:::i;:::-;6323:13;;6077:131;1418:25080;;-1:-1:-1;;;;;;6151:46:75;;1418:25080;;;6151:46;;6117:10;;1418:25080;6151:46;;;:::i;1418:25080::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;24346:24:75;;;:::i;:::-;24381:72;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;-1:-1:-1;;;;;;;;;;;;;;;;24468:87:75;1418:25080;;;-1:-1:-1;;1418:25080:75;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1720:61:75;;:::i;:::-;8663:47;8664:46;8699:10;8664:46;;:::i;8663:47::-;8659:131;;8827:9;;;;:::i;:::-;8865:1;8868:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;8890:3:75;8927:12;;8890:3;8927:12;;;;:::i;:::-;1418:25080;9002:7;;;;:::i;:::-;9088:18;:12;;;;;;:::i;:::-;:18;1418:25080;9024:61;:52;;;;:::i;:61::-;1787:1:25;9168:12:75;;;;;:::i;:::-;1418:25080;;9168:18;;1418:25080;;;-1:-1:-1;;;;;1418:25080:75;;;9125:62;;1418:25080;;;;9125:62;1418:25080;8890:3;8853:13;;8659:131;1418:25080;;-1:-1:-1;;;;;;8733:46:75;;1418:25080;8733:46;8699:10;1418:25080;;8733:46;;;:::i;1418:25080::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15956:224;1418:25080;15956:224;;1418:25080;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17612:57;1418:25080;;;;;;:::i;:::-;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17612:57;:::i;:::-;1418:25080;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1303:62:17;;:::i;:::-;2758:6;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;;;;;;;-1:-1:-1;;;;;1418:25080:75;2806:40:17;1418:25080:75;;2806:40:17;1418:25080:75;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;:::i;:::-;2471:103:25;;;:::i;:::-;1720:61:75;;:::i;:::-;1418:25080;;;;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;;;15468:61;;;;15428:210;;;;1418:25080;;;;;;;15428:210;;1418:25080;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;15341:307;15428:210;;;;;;15956:224;;15428:210;;;;;;:::i;1418:25080::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;20952:29:75;;;:::i;:::-;20992:62;:86;;;;;;1418:25080;;-1:-1:-1;;;20992:86:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;20992:86;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;20992:86;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;21093:83:75;1418:25080;20992:86;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;18063:54;1418:25080;;;;;:::i;:::-;18063:54;:::i;1418:25080::-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;1418:25080:75;;;;24695:32;1418:25080;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;1418:25080:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;;;;;;;;;24695:32;1418:25080;;;;;;;-1:-1:-1;;1418:25080:75;;;;1513:6:17;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;24015:21:75;;;:::i;:::-;24047:66;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;-1:-1:-1;;;;;;;;;;;;;;;;24128:81:75;1418:25080;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;1084:2:77;1418:25080:75;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;21617:14:75;;;:::i;:::-;21642:49;:60;;;;;;1418:25080;;-1:-1:-1;;;21642:60:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;21642:60;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;21642:60;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;21717:55:75;1418:25080;21642:60;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;-1:-1:-1;;;;;;;;;;;971:66:21;1418:25080:75;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;2471:103:25;;;:::i;:::-;1720:61:75;;:::i;:::-;12386:16;;;:::i;:::-;12475:40;:58;;;;;;1418:25080;;;;971:66:21;;;;12475:58:75;;-1:-1:-1;12475:58:75;;;;;;;;;;:::i;:::-;;;;;;;;;;;;1418:25080;12547:11;;;12543:48;;12605:14;;12601:49;;12664:20;;;:58;;;1418:25080;12660:152;;12844:18;12897:71;12844:18;;;;;:::i;:::-;1418:25080;;;12897:58;1418:25080;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;;12897:58;1418:25080;;-1:-1:-1;;;12897:71:75;;;;;1418:25080;;;;;;;;;;;;;;12897:71;;;;;;;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;12999:63:75;;;;;1418:25080;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;12999:63;;;1418:25080;12999:63;1418:25080;12999:63;;1418:25080;12999:63;;;;;;;;;;;1418:25080;13076:27;;;;13072:124;;13261:28;;;;:::i;:::-;13205:85;;;;;;;1418:25080;;-1:-1:-1;;;13205:85:75;;-1:-1:-1;;;;;;;;;;;13205:85:75;;;1418:25080;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;13205:85;;;;;;;;;;;;;;1418:25080;13330:26;;;;;;:::i;:::-;1418:25080;;;;;;;;;;;;13367:10;1418:25080;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;13475:397;;1418:25080;13475:397;;1418:25080;13475:397;;;;1418:25080;13475:397;1418:25080;13475:397;;1418:25080;13475:397;1418:25080;13475:397;;1418:25080;13475:397;1418:25080;13475:397;;1418:25080;13475:397;1418:25080;13475:397;;1418:25080;971:66:21;13475:397:75;;1418:25080;13475:397;;;;1418:25080;13367:10;;13406:26;;;;:::i;:::-;1418:25080;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;1691:18:77;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;1787:1:25;1418:25080:75;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13367:10;;13888:141;;1418:25080;;13888:141;1418:25080;14168:19;;1418:25080;14205:22;;;;1418:25080;14245:37;1418:25080;14245:37;1418:25080;14040:256;;;;;;1418:25080;;971:66:21;;;;;;;;;;14040:256:75;;13367:10;14040:256;;;;:::i;:::-;;;;;;;;;;;1418:25080;2536:1:25;;1787;2065:22;1787:1;1985:109;2536:1;1418:25080:75;;14040:256;;;;;;:::i;:::-;;;;;1418:25080;;;13205:85;;;;;;:::i;:::-;;;;13072:124;1418:25080;;-1:-1:-1;;;13126:59:75;;;;;1418:25080;;;;;;;;;;;;;3610:56:21;;;12999:63:75;;;;;1418:25080;12999:63;1418:25080;12999:63;;;;;;;:::i;:::-;;;;;12897:71;;;;;1418:25080;12897:71;1418:25080;12897:71;;;;;;;:::i;:::-;;;;;12660:152;1418:25080;;-1:-1:-1;;;12745:56:75;;;;;1418:25080;;;12785:15;1418:25080;;;;;;;;;3610:56:21;;;12664:58:75;12707:15;;12688:34;;;12664:58;;12601:49;1418:25080;;-1:-1:-1;;;12628:22:75;;1418:25080;;12628:22;12543:48;1418:25080;;-1:-1:-1;;;12567:24:75;;1418:25080;;12567:24;12475:58;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;16203:774;1418:25080;;;;;;:::i;:::-;;;;;;;;;;;;16203:774;;:::i;1418:25080::-;;;-1:-1:-1;;1418:25080:75;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;:::i;:::-;1720:61:75;;:::i;:::-;4590:16;;;:::i;:::-;4621:47;4622:46;4657:10;4622:46;;:::i;4621:47::-;4617:131;;4785:9;;;;:::i;:::-;4805:60;:78;;;;;;1418:25080;;;;971:66:21;;;;4805:78:75;;:34;:78;;;;;;1418:25080;4805:78;;;:::i;:::-;;;;;;;;;;;;1418:25080;4893:74;;;;;;;1418:25080;;;;;4893:74;1418:25080;;971:66:21;;;;;;;;;;4893:74:75;;1418:25080;4893:74;;;:::i;:::-;;;;;;;;;;;1418:25080;4983:13;;4998:20;;;;;;2536:1:25;;1787;2065:22;1787:1;1985:109;5020:3:75;5057:12;;;;;;;;;;;;;;;:::i;:::-;1418:25080;5132:7;;;;;:::i;:::-;5353:18;;:12;;;;;;;;;;:::i;:::-;:18;1418:25080;5400:12;;;;:::i;:::-;:22;1418:25080;5450:21;;;:12;;;;;;:::i;:::-;:21;1418:25080;;;;:::i;:::-;4657:10;1418:25080;;4657:10;-1:-1:-1;;;;;1418:25080:75;;5224:356;;;1418:25080;5224:356;;;1418:25080;5224:356;;;1418:25080;5224:356;;;1418:25080;;;;;;:::i;:::-;5224:356;;;1418:25080;;;;;;;;:::i;:::-;5224:356;;;1418:25080;5155:57;;;:::i;:::-;1418:25080;;;;;;;;;;;;;:::i;:::-;5760:12;;;;;:::i;:::-;:18;1418:25080;5796:12;;;;;;;;:::i;:::-;:22;1418:25080;5836:12;;;;:::i;:::-;:21;1418:25080;;;4657:10;;;;1418:25080;;;;;;;;5600:335;;;;;:::i;:::-;;;;;5020:3;;;:::i;:::-;4983:13;;4893:74;;;;;;:::i;:::-;;;;4805:78;;;;;;:::i;:::-;;;;4617:131;1418:25080;;-1:-1:-1;;;;;;4691:46:75;;1418:25080;4691:46;4657:10;1418:25080;;4691:46;;;:::i;1418:25080::-;;;;;;;;;;;;;17861:59;1418:25080;;;;;:::i;:::-;-1:-1:-1;1418:25080:75;;;;;;:::i;:::-;;;;;;17861:59;:::i;:::-;1418:25080;;-1:-1:-1;1418:25080:75;;;;-1:-1:-1;1418:25080:75;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;:::i;:::-;1720:61:75;;:::i;:::-;7946:47;7947:46;7982:10;7947:46;;:::i;7946:47::-;7942:131;;8110:9;;;;:::i;:::-;8148:1;8151:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;8173:3:75;8210:12;;8173:3;8210:12;;;;:::i;:::-;1418:25080;8285:7;;;;:::i;:::-;8373:18;:12;;;;;;:::i;:::-;:18;1418:25080;8307:63;:54;;;;:::i;:63::-;1787:1:25;8455:12:75;;;;;:::i;:::-;1418:25080;;8455:18;;1418:25080;;;-1:-1:-1;;;;;1418:25080:75;;;8410:64;;1418:25080;;;;8410:64;1418:25080;8173:3;8136:13;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;1032:2:77;1418:25080:75;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;22958:21:75;;;:::i;:::-;22990:61;:84;;;;;;1418:25080;;-1:-1:-1;;;22990:84:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;22990:84;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;22990:84;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;23089:81:75;1418:25080;22990:84;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;23303:22:75;;;:::i;:::-;23336:62;:86;;;;;;1418:25080;;-1:-1:-1;;;23336:86:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;23336:86;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;23336:86;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;23437:83:75;1418:25080;23336:86;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;;:::i;:::-;19296:82;1418:25080;;;;;:::i;:::-;19296:64;1418:25080;;;;;;:::i;:::-;;;;;;;;:::i;:::-;19296:46;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19296:46;:::i;:::-;1418:25080;;;;;;;;;;;;;;;;;;;;;;;19296:82;1418:25080;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;21933:29:75;;;:::i;:::-;21973:62;:86;;;;;;1418:25080;;-1:-1:-1;;;21973:86:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;21973:86;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;21973:86;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;22074:83:75;1418:25080;21973:86;;;;;;:::i;:::-;;;;1418:25080;;;;2536:1:25;1418:25080:75;;;:::i;:::-;2471:103:25;;;:::i;:::-;2536:1;:::i;:::-;1787;2065:22;1787:1;1418:25080:75;;;;;;;-1:-1:-1;;1418:25080:75;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;22300:22:75;;;:::i;:::-;22333:56;:74;;;;;;1418:25080;;-1:-1:-1;;;22333:74:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;22333:74;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;22333:74;;;;;;;;1418:25080;-1:-1:-1;;;;;;;;;;;;;;;;;22422:70:75;1418:25080;22333:74;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;2402:22:17;1418:25080:75;;2496:8:17;;;:::i;1418:25080:75:-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;:::i;:::-;2471:103:25;;;;;;;;;;:::i;:::-;1720:61:75;;:::i;:::-;9515:9;;;;:::i;:::-;9535:60;:78;;;;1418:25080;;-1:-1:-1;;;9535:78:75;;:34;1418:25080;;9535:78;;1418:25080;9535:78;;;:::i;:::-;;:60;;:78;;;;;;;;1418:25080;9535:60;;9623:74;;;;1418:25080;;-1:-1:-1;;;9623:74:75;;9535:34;1418:25080;;9623:74;;;;;1418:25080;9623:74;;;:::i;:::-;;9535:60;;9623:74;;;;;;;;1418:25080;9732:16;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;9820:91;;;;9857:53;;-1:-1:-1;;;;;1418:25080:75;;;9857:53;1418:25080;;971:66:21;;;;;;;9820:91:75;;9845:10;1418:25080;9820:91;;;:::i;:::-;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;9820:91;;;;;;;9535:34;9820:91;;;1418:25080;9819:92;;9815:182;;9535:34;10027:20;;;;;;2536:1:25;1787;2065:22;1787:1;1985:109;10049:3:75;10086:12;;;;;:::i;:::-;1418:25080;10136:12;;10247:27;:12;10136;1418:25080;10187:12;10136;;9820:91;10136:12;;;;;:::i;:::-;:18;1418:25080;10187:12;;:::i;:::-;:21;1418:25080;10247:12;;;:::i;:::-;:27;1418:25080;10293:10;;10289:46;;10353:13;;10349:48;;10415:19;;;:56;;;10049:3;10411:161;;1418:25080;;-1:-1:-1;;;10610:38:75;;9845:10;1418:25080;10610:38;;1418:25080;;;;;;;9820:91;1418:25080;;;-1:-1:-1;;;;;1418:25080:75;;10610:38;;;;;;;9535:34;10610:38;;;10049:3;10666:24;;;;10662:158;;1418:25080;11212:292;1418:25080;;;11212:292;1418:25080;;;;;;;;;;;10049:3;1418:25080;;;;10834:71;1418:25080;10908:284;1418:25080;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;10908:284;9820:91;10908:284;;1418:25080;10908:284;1418:25080;10908:284;;1418:25080;10908:284;10247:27;10908:284;;1418:25080;;;;;;:::i;:::-;10908:284;;;1418:25080;;;;;;:::i;:::-;;10908:284;;1418:25080;10834:59;9845:10;10834:50;;;;:::i;:71::-;1418:25080;:::i;:::-;;;;;;;;;;;;9845:10;;11212:292;;;:::i;:::-;;;;10049:3;:::i;:::-;10012:13;;10662:158;1418:25080;;-1:-1:-1;;;10717:88:75;;9845:10;1418:25080;10717:88;;1418:25080;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;3610:56:21;10610:38:75;;;;9820:91;10610:38;9820:91;10610:38;;;;;;;:::i;:::-;;;;10411:161;1418:25080;;-1:-1:-1;;;10498:59:75;;1418:25080;10498:59;;1418:25080;;;;10541:15;1418:25080;;;;;;3610:56:21;10415::75;10456:15;;10438:33;;;10415:56;;10349:48;1418:25080;;-1:-1:-1;;;10375:22:75;;1418:25080;;10375:22;10289:46;1418:25080;;-1:-1:-1;;;10312:23:75;;1418:25080;;10312:23;9815:182;1418:25080;;-1:-1:-1;;;9934:52:75;;1418:25080;9934:52;1418:25080;9845:10;1418:25080;9934:52;;;:::i;9820:91::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;9623:74;;;;;;:::i;:::-;;;;9535:78;;;;;;:::i;:::-;;;;1418:25080;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;;;:::i;:::-;1303:62:17;;:::i;:::-;23655:23:75;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;23689:95;1418:25080;23689:95;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;23799:85:75;1418:25080;1599:130:17;1513:6;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;929:10:34;1662:23:17;1418:25080:75;;1599:130:17:o;1418:25080:75:-;;;;3610:56:21;;;1418:25080:75;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;:::o;2666:187:17:-;2758:6;1418:25080:75;;-1:-1:-1;;;;;1418:25080:75;;;-1:-1:-1;;;;;;1418:25080:75;;;;;;;;;;2806:40:17;-1:-1:-1;;2806:40:17;2666:187::o;1418:25080:75:-;;;;:::o;:::-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;971:66:21;;;;;;;;;;;:::o;:::-;1418:25080:75;;971:66:21;;;;;;;;;;;:::o;:::-;1418:25080:75;;-1:-1:-1;;;971:66:21;;;;;;;;;;;1418:25080:75;971:66:21;1418:25080:75;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;;;;;;;;;;;;1418:25080:75;971:66:21;1418:25080:75;;;971:66:21;-1:-1:-1;;;971:66:21;;;;;;:::o;1699:281::-;1713:19:33;;:23;1418:25080:75;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;1699:281:21:o;1418:25080:75:-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;2372:276:21;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;2204:27:21;-1:-1:-1;;2204:27:21;1418:25080:75;;2523:15:21;;;:28;;;2372:276;2519:123;;2372:276;;:::o;2519:123::-;7318:69:33;1418:25080:75;-1:-1:-1;1418:25080:75;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;7276:25:33;;;;;;;;;:::i;:::-;7318:69;;:::i;:::-;;2372:276:21:o;2523:28::-;;-1:-1:-1;2523:28:21;;2372:276;;2171:17;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;2204:27:21;;;;1418:25080:75;;2523:15:21;;;:28;;;2519:123;;2372:276;;:::o;2523:28::-;;1418:25080:75;2523:28:21;;1842:226:24;-1:-1:-1;;;;;1898:6:24;1418:25080:75;;;;1873:80:24;1889:4;1881:23;;;1873:80;:::i;:::-;1963:87;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;1971:30:24;1963:87;:::i;:::-;1303:62:17;;:::i;:::-;971:66:21;;1418:25080:75;;971:66:21;;;3330:17;;;;;;:::i;3232:526::-;3383:63;;1418:25080:75;;;;;;971:66:21;;;;;;;3383:63;;1418:25080:75;;3383:63:21;;;;;;;3232:526;-1:-1:-1;3379:302:21;;1418:25080:75;;-1:-1:-1;;;3610:56:21;;1418:25080:75;3610:56:21;3383:63;3610:56;;;:::i;3379:302::-;3737:9;3496:28;3488:82;3496:28;;3488:82;:::i;:::-;3737:9;:::i;3383:63::-;;;;;;;;;;;;;;;:::i;:::-;;;;;1418:25080:75;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;1418:25080:75;;;;:::o;:::-;;;:::o;7682:628:33:-;;;;7886:418;;;1418:25080:75;;;7917:22:33;7913:286;;8212:17;;:::o;7913:286::-;1713:19;:23;1418:25080:75;;8212:17:33;:::o;1418:25080:75:-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;7886:418:33;1418:25080:75;;;;-1:-1:-1;8991:21:33;:17;;9163:142;;;;;;;8987:379;1418:25080:75;;-1:-1:-1;;;9335:20:33;;1418:25080:75;9335:20:33;;;1418:25080:75;;;;;;;;;;;:::i;3246:506:23:-;;;;;;;;1418:25080:75;3246:506:23;;;;;;3302:13;1418:25080:75;;;;;;3301:14:23;3347:34;;;;;;3246:506;3346:108;;;;3246:506;1418:25080:75;;;;3636:1:23;3536:16;;;1418:25080:75;;;3302:13:23;1418:25080:75;;;3302:13:23;1418:25080:75;;3536:16:23;3562:65;;3636:1;:::i;:::-;3647:99;;3246:506::o;3647:99::-;3681:21;1418:25080:75;;3302:13:23;1418:25080:75;;3302:13:23;1418:25080:75;;3681:21:23;1418:25080:75;;3551:1:23;1418:25080:75;;3721:14:23;;1418:25080:75;;3721:14:23;3246:506::o;3562:65::-;3596:20;1418:25080:75;;;3302:13:23;1418:25080:75;;;3302:13:23;1418:25080:75;;3596:20:23;3636:1;:::i;1418:25080:75:-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;3346:108:23;3426:4;1713:19:33;:23;;-1:-1:-1;1713:23:33;3387:66:23;;3346:108;;;;;3387:66;3452:1;1418:25080:75;;;;3436:17:23;3387:66;;;3347:34;3380:1;1418:25080:75;;;3365:16:23;;-1:-1:-1;3347:34:23;;1691:18:77;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;1691:18:77;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;;;;;1418:25080:75;;;;;;;;;;;1691:18:77;;;;;;;1418:25080:75;1691:18:77;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;1899:2243;;;;;;;;;;;3471:366;1899:2243;3471:366;1899:2243;;3356:24;1899:2243;;;;;;3299:21;1899:2243;;;;2576:26;2666:29;1899:2243;2489:25;3240:23;1899:2243;2489:25;:::i;:::-;2576:26;:::i;:::-;2666:29;:::i;:::-;2751:20;;;:::i;:::-;2822:14;;;:::i;:::-;2900:29;;;:::i;:::-;2987:22;;;:::i;:::-;3067;;;:::i;:::-;3125:21;;;:::i;:::-;3182:22;;;:::i;:::-;3240:23;:::i;:::-;3299:21;:::i;3356:24::-;1418:25080;;-1:-1:-1;;;3471:366:75;;-1:-1:-1;;;;;1418:25080:75;;;3471:366;;;1418:25080;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;;1691:18:77;;;1418:25080:75;;;1691:18:77;;;1418:25080:75;;;;;;1691:18:77;;;;;3471:366:75;;:14;;:366;;;;;;3988:52;3471:366;1691:18:77;3847:75:75;3471:366;3932:46;3471:366;-1:-1:-1;3471:366:75;;;1899:2243;1691:18:77;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;3847:75;:::i;:::-;3932:46;:::i;:::-;3988:52;:::i;:::-;1003:95:17;;:::i;:::-;1868:111:25;;:::i;:::-;1042:67:24;;:::i;3471:366:75:-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1418:25080;;;;:::o;:::-;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;5328:125:23;5366:69;1418:25080:75;5374:13:23;1418:25080:75;;;;5366:69:23;;;:::i;:::-;;:::i;:::-;1195:12:17;929:10:34;1195:12:17;:::i;5328:125:23:-;5366:69;1418:25080:75;5374:13:23;1418:25080:75;;;;5366:69:23;:::i;5328:125::-;5366:69;1418:25080:75;5374:13:23;1418:25080:75;;;;5366:69:23;;;:::i;:::-;1787:1:25;2065:22;1787:1;5328:125:23:o;1418:25080:75:-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1418:25080:75;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;11789:32;1418:25080;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;7522:41;1418:25080;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;18523:34;1418:25080;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;6427:19;1418:25080;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;18063:36;1418:25080;;;;;;:::o;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;13330:8;1418:25080;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;1418:25080:75;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1418:25080:75;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1691:18:77;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;1691:18:77;1418:25080:75;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;-1:-1:-1;;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;2580:287:25:-;1830:1;2712:7;1418:25080:75;2712:19:25;1830:1;;;2712:7;1787:1;2580:287::o;1830:1::-;1418:25080:75;;-1:-1:-1;;;1830:1:25;;;;;;;;;;;1418:25080:75;1830:1:25;1418:25080:75;;;1830:1:25;;;;1418:25080:75;;;;;;;;;;;;:::o;:::-;;;;6335:1;1418:25080;;6335:1;1418:25080;;;;6335:1;1418:25080;;;;6335:1;1418:25080;;;;6335:1;1418:25080;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;1691:18:77;;1418:25080:75;;-1:-1:-1;;;;;;1418:25080:75;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;1787:1:25;1418:25080:75;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;:::i;:::-;;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11697:1;1418:25080;;11697:1;1418:25080;;;;11697:1;1418:25080;;;;11697:1;1418:25080;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14309:825::-;;;;1418:25080;14515:66;:26;:48;:36;:26;;;;:::i;:36::-;14552:10;1418:25080;;;;;;;;;;;;;;14515:66;1418:25080;:::i;:::-;14595:14;;;1418:25080;;;14595:19;14591:32;;14633:73;14640:66;14552:10;14640:48;14552:10;14640:36;:26;;;;:::i;:66::-;1418:25080;14613:1;1418:25080;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14633:73;14856:11;;;;1418:25080;;;;14909:29;;;;1418:25080;;14595:14;1418:25080;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;14909:29;14856:11;;1418:25080;;;;;14552:10;;14722:226;;;14959:48;1418:25080;;;;;;14959:168;;;;;;-1:-1:-1;1418:25080:75;14959:168;14595:14;1418:25080;971:66:21;;;;;;;;;;14959:168:75;;14552:10;14959:168;;;;;:::i;:::-;;;;;;;;;;;14309:825;:::o;14959:168::-;;;;;;:::i;1418:25080::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;:::o;2471:103:25:-;;;;;;;;;;;;:::i;:::-;1720:61:75;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1418:25080:75;;;-1:-1:-1;;;16620:340:75;;;;-1:-1:-1;;;;;1418:25080:75;;;16620:340;;;1418:25080;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16620:340;15956:224;;16620:340;;;;;;;;:::i;:::-;16533:437;;;:::i;:::-;;2536:1:25;1787;2065:22;1787:1;1985:109;1418:25080:75;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;;1418:25080:75;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;15956:224;;;;1418:25080;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;1691:18:77;1418:25080:75;;;1691:18:77;:::i;:::-;1418:25080:75;;;;;;;;;;;;;;;;1691:18:77;1418:25080:75;;;1691:18:77;:::i;:::-;1418:25080:75;;;;;;1691:18:77;1418:25080:75;;;1691:18:77;:::i;:::-;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1418:25080:75;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1418:25080:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24740:408;24885:31;24740:408;;;24885:31;;;;;;;;;;:::i;:::-;24930:8;;24926:195;;24740:408;:::o;24926:195::-;1418:25080;;24958:16;24954:68;;24885:31;25036:75;;;;;24954:68;1418:25080;;-1:-1:-1;;;24983:39:75;;24885:31;24983:39;;;1418:25080;;;;;;;;;;;:::i;25154:110::-;1418:25080;-1:-1:-1;;;;;;;;;;;971:66:21;1418:25080:75;25200:57;;25154:110::o;25200:57::-;1418:25080;;-1:-1:-1;;;25241:16:75;;;;;25270:300;25390:16;;;:::i;:::-;25434:1;25437:20;;;;;;25270:300;;;:::o;25459:3::-;-1:-1:-1;;1418:25080:75;;;;;;;;25532:20;25506:16;25459:3;25506:16;;;;:::i;:::-;1418:25080;25532:12;;;;;:::i;:::-;1418:25080;25532:20;;;:::i;:::-;25459:3;:::i;:::-;25422:13;;25576:310;25706:16;;;:::i;:::-;25750:1;25753:20;;;;;;25576:310;;;:::o;25775:3::-;-1:-1:-1;;1418:25080:75;;;;;;;;25848:20;25822:16;25775:3;25822:16;;;;:::i;:::-;1418:25080;25848:12;;;;;:::i;25775:3::-;25738:13;;25892:300;26012:16;;;:::i;:::-;26056:1;26059:20;;;;;;25892:300;;;:::o;26081:3::-;-1:-1:-1;;1418:25080:75;;;;;;;;26154:20;26128:16;26081:3;26128:16;;;;:::i;:::-;1418:25080;26154:12;;;;;:::i;26081:3::-;26044:13;;4861:177:77;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;4861:177;-1:-1:-1;;;;;1418:25080:75;4961:22:77;4957:74;;4861:177::o;4957:74::-;1418:25080:75;;-1:-1:-1;;;4992:39:77;;-1:-1:-1;;;4992:39:77;;;1418:25080:75;;;4992:39:77;5044:163;-1:-1:-1;;;;;1418:25080:75;5132:30:77;5128:72;;5044:163::o;5128:72::-;1418:25080:75;;-1:-1:-1;;;5171:29:77;;;;;5213:168;-1:-1:-1;;;;;1418:25080:75;;5292:21:77;;:49;;;;5213:168;5288:86;;;5213:168::o;5288:86::-;1418:25080:75;;-1:-1:-1;;;5350:24:77;;;;;5292:49;5317:19;;;:24;5292:49;;;5387:321;5488:28;;:33;:131;;;;5387:321;5471:231;;5387:321;:::o;5471:231::-;1418:25080:75;;-1:-1:-1;;;5651:40:77;;-1:-1:-1;;;;;1418:25080:75;;;5651:40:77;;;1418:25080:75;;;5651:40:77;5488:131;1418:25080:75;4592:71:62;-1:-1:-1;1418:25080:75;;4592:71:62;;;1017:25;;;;4592:71;;;;;;1418:25080:75;4592:71:62;;;;;;:::i;:::-;4784:212;;;;;-1:-1:-1;4784:212:62;;5013:29;;;5488:131:77;5013:48:62;;;;5488:131:77;975:149:62;;;;5488:131:77;1543:81:62;;;5488:131:77;5541:78;5488:131;;1543:81:62;1570:54;;;;:::i;:::-;1543:81;;975:149;1060:64;;;;:::i;:::-;1059:65;975:149;;5013:48;5046:15;;;;5013:48;;;:29;4592:71;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;4421:647;-1:-1:-1;4592:71:62;4421:647;1418:25080:75;;4592:71:62;;;1017:25;;;;4592:71;;1418:25080:75;;;4592:71:62;;;1418:25080:75;4592:71:62;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:62;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:62;;-1:-1:-1;5013:29:62;;;4421:647;-1:-1:-1;4592:71:62;4421:647;1418:25080:75;;4592:71:62;;;1017:25;;;;4592:71;;5592:26:77;;;4592:71:62;;;1418:25080:75;4592:71:62;;;;;;:::i;5714:248:77:-;1418:25080:75;;-1:-1:-1;;;;;;5818:58:77;;;;;1418:25080:75;;;5818:58:77;1418:25080:75;;;-1:-1:-1;;;;;1418:25080:75;;5818:58:77;;;;;;;-1:-1:-1;5818:58:77;;;5714:248;5818:63;;5814:142;;5714:248;;:::o;5814:142::-;1418:25080:75;;-1:-1:-1;;;5904:41:77;;-1:-1:-1;;;;;1418:25080:75;;;;5818:58:77;5904:41;;1418:25080:75;;;;;;;;;;3610:56:21;5818:58:77;;;;;;;;;;;;;;:::i;:::-;;;;5968:358;6141:34;1418:25080:75;;;6141:34:77;;;;;;;;;;;;;;;:::i;:::-;6113:63;;;;;;;;:::i;:::-;6190:8;;1418:25080:75;;6190:28:77;;5968:358;6186:77;;1418:25080:75;6141:34:77;1418:25080:75;;;6280:27:77;;1418:25080:75;;;;6141:34:77;6280:27;1418:25080:75;;;;;:::i;:::-;-1:-1:-1;;;;;1418:25080:75;;;;;6280:39:77;;5968:358::o;6186:77::-;1418:25080:75;;-1:-1:-1;;;6227:36:77;;-1:-1:-1;;;;;1418:25080:75;;;6141:34:77;6227:36;;1418:25080:75;6141:34:77;;6227:36;6190:28;1418:25080:75;6141:34:77;1418:25080:75;;6202:16:77;6190:28;;6332:345;;6432:16;;;:::i;:::-;6476:1;6479:20;;;;;;6332:345;;;:::o;6501:3::-;6524:12;;;;;:::i;:::-;-1:-1:-1;;1418:25080:75;;;;;;;;;6540:16:77;;;;;:::i;:::-;1418:25080:75;-1:-1:-1;6524:32:77;6520:141;;6501:3;;;;:::i;:::-;6464:13;;6520:141;6615:16;;;6633:12;6615:16;6583:63;6615:16;;;;:::i;:::-;1418:25080:75;6633:12:77;;:::i;:::-;1418:25080:75;;;6583:63:77;;;;;;;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;6683:202:77;6756:12;;6752:37;;1032:2;6803:24;;6799:79;;6683:202;:::o;6799:79::-;1418:25080:75;;;;6836:42:77;;;;;;;;;1418:25080:75;1032:2:77;1418:25080:75;;;;6836:42:77;6752:37;1418:25080:75;;-1:-1:-1;;;6777:12:77;;;;;7108:254;;;7230:28;;;;7226:130;;7108:254;;;:::o;7226:130::-;1418:25080:75;;-1:-1:-1;;;7281:64:77;;;;;1418:25080:75;;;;;;;;;;;;;;;;;;;;3610:56:21","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":8952,"length":20},{"start":10421,"length":20},{"start":12918,"length":20},{"start":12977,"length":20},{"start":13012,"length":20},{"start":13074,"length":20},{"start":19783,"length":20}]},"src/v2/utils/MarketConfigV2.sol":{"MarketConfigV2":[{"start":1271,"length":20},{"start":1497,"length":20},{"start":2868,"length":20},{"start":3554,"length":20},{"start":8059,"length":20},{"start":8669,"length":20},{"start":11414,"length":20},{"start":11631,"length":20},{"start":12250,"length":20},{"start":12560,"length":20},{"start":16816,"length":20}]}},"immutableReferences":{"30045":[{"start":3759,"length":32},{"start":5458,"length":32},{"start":15097,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9","acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","cancelMintDirectSales(address,uint256[])":"5e50c42e","cancelOffer(address,uint256,address)":"e92f94d1","cancelSalePrices(address,uint256[])":"2f79f335","checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":"2c0c49ee","getCheckoutExecutionModule()":"9400d601","getDirectSaleConfig(address,uint256)":"6e2f4d8b","getERC1155ApprovalManager()":"c7c83d17","getMarketConfig()":"614bd944","getOffer(address,uint256,address,address)":"e3409ce3","getSalePrice(address,uint256,address)":"369679a4","getTokenAllowListConfig(address,uint256)":"bf3d90f8","getTokenMintLimit(address,uint256)":"8760251a","getTokenMintsPerAddress(address,uint256,address)":"28fbba03","getTokenTxLimit(address,uint256)":"552f791d","getTokenTxsPerAddress(address,uint256,address)":"5a501f8f","getTradeExecutionModule()":"ed5b25b5","initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)":"2fdd983d","isPaused()":"b187bd26","makeOffer(address,uint256,address,uint256,uint256,uint256)":"b38df71f","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7","owner()":"8da5cb5b","prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"be542141","proxiableUUID()":"52d1902d","renounceOwnership()":"715018a6","setApprovedTokenRegistry(address)":"e4e87e3b","setCheckoutExecutionModule(address)":"63cf9cef","setContractPaused(bool)":"882796f1","setERC1155ApprovalManager(address)":"ff5c83a4","setERC20ApprovalManager(address)":"d7a9fb7c","setERC721ApprovalManager(address)":"d80b23e3","setMarketplaceSettings(address)":"176ab440","setNetworkBeneficiary(address)":"3492e5a8","setPayments(address)":"af231a58","setRoyaltyEngine(address)":"21ede032","setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":"ff3a52d4","setSpaceOperatorRegistry(address)":"7f358230","setStakingRegistry(address)":"2c740844","setStakingSettings(address)":"f1035744","setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":"373a9412","setTokenMintLimits(address,(uint256,uint256)[])":"c7ec1b98","setTokenTxLimits(address,(uint256,uint256)[])":"6442950e","setTradeExecutionModule(address)":"a0f597dd","transferOwnership(address)":"f2fde38b","upgradeTo(address)":"3659cfe6","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"cancelOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"cancelSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItem[]\",\"name\":\"_items\",\"type\":\"tuple[]\"}],\"name\":\"checkout\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutSummary\",\"name\":\"summary\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]\",\"name\":\"items\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.CheckoutExecution\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCheckoutExecutionModule\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getDirectSaleConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getERC1155ApprovalManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IMarketplaceSettings\",\"name\":\"marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"contract ISpaceOperatorRegistry\",\"name\":\"spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IRoyaltyEngineV1\",\"name\":\"royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"contract IPayments\",\"name\":\"payments\",\"type\":\"address\"},{\"internalType\":\"contract IApprovedTokenRegistry\",\"name\":\"approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IStakingSettings\",\"name\":\"stakingSettings\",\"type\":\"address\"},{\"internalType\":\"contract IRareStakingRegistry\",\"name\":\"stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IERC20ApprovalManager\",\"name\":\"erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC721ApprovalManager\",\"name\":\"erc721ApprovalManager\",\"type\":\"address\"}],\"internalType\":\"struct MarketConfigV2.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"getOffer\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"marketplaceFeeTotal\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakingFeeRemaining\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stakingFeeTotal\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.Offer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"getSalePrice\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePrice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenAllowListConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenMintLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenMintsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenTxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"getTokenTxsPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTradeExecutionModule\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tradeExecutionModule\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_checkoutExecutionModule\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"makeOffer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"prepareMintDirectSales\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_approvedTokenRegistry\",\"type\":\"address\"}],\"name\":\"setApprovedTokenRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_checkoutExecutionModule\",\"type\":\"address\"}],\"name\":\"setCheckoutExecutionModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isPaused\",\"type\":\"bool\"}],\"name\":\"setContractPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc1155ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC1155ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc20ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC20ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_erc721ApprovalManager\",\"type\":\"address\"}],\"name\":\"setERC721ApprovalManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_marketplaceSettings\",\"type\":\"address\"}],\"name\":\"setMarketplaceSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_networkBeneficiary\",\"type\":\"address\"}],\"name\":\"setNetworkBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_payments\",\"type\":\"address\"}],\"name\":\"setPayments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_royaltyEngine\",\"type\":\"address\"}],\"name\":\"setRoyaltyEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"setSalePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spaceOperatorRegistry\",\"type\":\"address\"}],\"name\":\"setSpaceOperatorRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingRegistry\",\"type\":\"address\"}],\"name\":\"setStakingRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingSettings\",\"type\":\"address\"}],\"name\":\"setStakingSettings\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenAllowListConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenMintLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"setTokenTxLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tradeExecutionModule\",\"type\":\"address\"}],\"name\":\"setTradeExecutionModule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"The marketplace is the UUPS proxy-facing contract and owns all marketplace storage. Trade and checkout execution are routed through delegatecall so modules read and write the marketplace proxy's ERC-7201 namespace.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"cancelMintDirectSales(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"cancelSalePrices(address,uint256[])\":{\"details\":\"Token ids must be strictly ascending.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Best-effort execution returns one result per item. All-skipped checkouts complete successfully.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"details\":\"Request token ids must be strictly ascending.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"RareERC1155Marketplace\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer through the trade execution module.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings through the trade execution module.\"},\"cancelMintDirectSales(address,uint256[])\":{\"notice\":\"Cancels configured primary mint sales for token ids.\"},\"cancelOffer(address,uint256,address)\":{\"notice\":\"Cancels the caller's offer for one token id and currency.\"},\"cancelSalePrices(address,uint256[])\":{\"notice\":\"Cancels the caller's secondary listings for token ids.\"},\"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases.\"},\"initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)\":{\"notice\":\"Initializes the UUPS marketplace proxy.\"},\"makeOffer(address,uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Creates or replaces a token-level ERC1155 offer.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales through the trade execution module.\"},\"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Configures or replaces primary mint sales for token ids.\"},\"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])\":{\"notice\":\"Creates or replaces secondary fixed-price listings.\"},\"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])\":{\"notice\":\"Sets token id allowlist configurations.\"},\"setTokenMintLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max quantity each address may mint for token ids while a limit is enabled.\"},\"setTokenTxLimits(address,(uint256,uint256)[])\":{\"notice\":\"Sets max mint transactions each address may submit for token ids while a limit is enabled.\"}},\"notice\":\"ERC1155 marketplace state, escrow, configuration, and execution module router.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155Marketplace.sol\":\"RareERC1155Marketplace\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8\",\"dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol\":{\"keccak256\":\"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0\",\"dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol\":{\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053\",\"dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"keccak256\":\"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159\",\"dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol\":{\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1\",\"dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d\",\"dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025\",\"dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol\":{\"keccak256\":\"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685\",\"dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155CheckoutExecutionModule.sol\":{\"keccak256\":\"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a\",\"dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV\"]},\"src/marketplace/IRareERC1155Marketplace.sol\":{\"keccak256\":\"0xe1d12e07644cf56ed2dcb98e690ca93775b13a03189b4a802d6134c2c2e921b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1099e8215c451fa6dad6f8be5c196c3915dc3b911d4507d46cd9f7f20e29335e\",\"dweb:/ipfs/QmUiW9oVP6Ft4C57zGE6ZWnkMKzJ8DzJoaBemKzBdWbLUK\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70\",\"dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM\"]},\"src/marketplace/IRareERC1155TradeExecutionModule.sol\":{\"keccak256\":\"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89\",\"dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155Marketplace.sol\":{\"keccak256\":\"0x40741677ac142ba9120d9127af62c6b4ba4d806bc1e26c15b5f0a4764df5dd43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb496d7bf89ec9fabe7a31eabf0c522e72cf63bf93d65d2458469f07a1523c1\",\"dweb:/ipfs/QmW1WN1nYr4rd2t7QRsTEqawKRWAVSQX6tYvxjmFs5JgRW\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0xafebd89e5951bfc64c9bd315ae8f3961120d5006f7424cf4127c8ca11e0bb6c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69892edf0cca19978fcbc2b486ce6d4e5bf482777279d6c3e116109e9bfb0836\",\"dweb:/ipfs/QmUXniFfx21Arz81G3tZAAGakozcb3L2GjqaZv2CdXiBS6\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a\",\"dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelMintDirectSales"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"cancelOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"cancelSalePrices"},{"inputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItem[]","name":"_items","type":"tuple[]","components":[{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"checkout","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutExecution","name":"","type":"tuple","components":[{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutSummary","name":"summary","type":"tuple","components":[{"internalType":"uint256","name":"filledCount","type":"uint256"},{"internalType":"uint256","name":"skippedCount","type":"uint256"},{"internalType":"uint256","name":"ethSpent","type":"uint256"},{"internalType":"uint256","name":"ethRefunded","type":"uint256"}]},{"internalType":"struct IRareERC1155MarketplaceTypes.CheckoutItemResult[]","name":"items","type":"tuple[]","components":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint8","name":"itemKind","type":"uint8"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bool","name":"filled","type":"bool"},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8"},{"internalType":"bytes4","name":"reason","type":"bytes4"},{"internalType":"bytes","name":"failureData","type":"bytes"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCheckoutExecutionModule","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getDirectSaleConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleConfig","name":"","type":"tuple","components":[{"internalType":"address","name":"seller","type":"address"},{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getERC1155ApprovalManager","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMarketConfig","outputs":[{"internalType":"struct MarketConfigV2.Config","name":"","type":"tuple","components":[{"internalType":"address","name":"networkBeneficiary","type":"address"},{"internalType":"contract IMarketplaceSettings","name":"marketplaceSettings","type":"address"},{"internalType":"contract ISpaceOperatorRegistry","name":"spaceOperatorRegistry","type":"address"},{"internalType":"contract IRoyaltyEngineV1","name":"royaltyEngine","type":"address"},{"internalType":"contract IPayments","name":"payments","type":"address"},{"internalType":"contract IApprovedTokenRegistry","name":"approvedTokenRegistry","type":"address"},{"internalType":"contract IStakingSettings","name":"stakingSettings","type":"address"},{"internalType":"contract IRareStakingRegistry","name":"stakingRegistry","type":"address"},{"internalType":"contract IERC20ApprovalManager","name":"erc20ApprovalManager","type":"address"},{"internalType":"contract IERC721ApprovalManager","name":"erc721ApprovalManager","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"stateMutability":"view","type":"function","name":"getOffer","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.Offer","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"initialQuantity","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"marketplaceFeeTotal","type":"uint256"},{"internalType":"uint256","name":"stakingFeeRemaining","type":"uint256"},{"internalType":"uint256","name":"stakingFeeTotal","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"stateMutability":"view","type":"function","name":"getSalePrice","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.SalePrice","name":"","type":"tuple","components":[{"internalType":"address","name":"currencyAddress","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenAllowListConfig","outputs":[{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfig","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenMintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenMintsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function","name":"getTokenTxsPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTradeExecutionModule","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"},{"internalType":"address","name":"_marketplaceSettings","type":"address"},{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"},{"internalType":"address","name":"_royaltyEngine","type":"address"},{"internalType":"address","name":"_payments","type":"address"},{"internalType":"address","name":"_approvedTokenRegistry","type":"address"},{"internalType":"address","name":"_stakingSettings","type":"address"},{"internalType":"address","name":"_stakingRegistry","type":"address"},{"internalType":"address","name":"_erc20ApprovalManager","type":"address"},{"internalType":"address","name":"_erc721ApprovalManager","type":"address"},{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"},{"internalType":"address","name":"_tradeExecutionModule","type":"address"},{"internalType":"address","name":"_checkoutExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"stateMutability":"payable","type":"function","name":"makeOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.DirectSaleRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"maxMints","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"prepareMintDirectSales"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"_approvedTokenRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setApprovedTokenRegistry"},{"inputs":[{"internalType":"address","name":"_checkoutExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setCheckoutExecutionModule"},{"inputs":[{"internalType":"bool","name":"_isPaused","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setContractPaused"},{"inputs":[{"internalType":"address","name":"_erc1155ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC1155ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc20ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC20ApprovalManager"},{"inputs":[{"internalType":"address","name":"_erc721ApprovalManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setERC721ApprovalManager"},{"inputs":[{"internalType":"address","name":"_marketplaceSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMarketplaceSettings"},{"inputs":[{"internalType":"address","name":"_networkBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNetworkBeneficiary"},{"inputs":[{"internalType":"address","name":"_payments","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPayments"},{"inputs":[{"internalType":"address","name":"_royaltyEngine","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRoyaltyEngine"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.SalePriceRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"expirationTime","type":"uint256"}]},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"setSalePrices"},{"inputs":[{"internalType":"address","name":"_spaceOperatorRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSpaceOperatorRegistry"},{"inputs":[{"internalType":"address","name":"_stakingRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingRegistry"},{"inputs":[{"internalType":"address","name":"_stakingSettings","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStakingSettings"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.AllowListConfigRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"endTimestamp","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenAllowListConfigs"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenMintLimits"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.TokenLimitRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"setTokenTxLimits"},{"inputs":[{"internalType":"address","name":"_tradeExecutionModule","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTradeExecutionModule"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"upgradeTo"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"cancelMintDirectSales(address,uint256[])":{"details":"Token ids must be strictly ascending."},"cancelSalePrices(address,uint256[])":{"details":"Token ids must be strictly ascending."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"details":"Best-effort execution returns one result per item. All-skipped checkouts complete successfully."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"details":"Request token ids must be strictly ascending."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenMintLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"setTokenTxLimits(address,(uint256,uint256)[])":{"details":"Request token ids must be strictly ascending."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeTo(address)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer through the trade execution module."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings through the trade execution module."},"cancelMintDirectSales(address,uint256[])":{"notice":"Cancels configured primary mint sales for token ids."},"cancelOffer(address,uint256,address)":{"notice":"Cancels the caller's offer for one token id and currency."},"cancelSalePrices(address,uint256[])":{"notice":"Cancels the caller's secondary listings for token ids."},"checkout((uint8,address,address,address,uint256,uint256,uint256,bytes32[])[])":{"notice":"Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases."},"initialize(address,address,address,address,address,address,address,address,address,address,address,address,address)":{"notice":"Initializes the UUPS marketplace proxy."},"makeOffer(address,uint256,address,uint256,uint256,uint256)":{"notice":"Creates or replaces a token-level ERC1155 offer."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales through the trade execution module."},"prepareMintDirectSales(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Configures or replaces primary mint sales for token ids."},"setSalePrices(address,address,(uint256,uint256,uint256,uint256)[],address[],uint8[])":{"notice":"Creates or replaces secondary fixed-price listings."},"setTokenAllowListConfigs(address,(uint256,bytes32,uint256)[])":{"notice":"Sets token id allowlist configurations."},"setTokenMintLimits(address,(uint256,uint256)[])":{"notice":"Sets max quantity each address may mint for token ids while a limit is enabled."},"setTokenTxLimits(address,(uint256,uint256)[])":{"notice":"Sets max mint transactions each address may submit for token ids while a limit is enabled."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155Marketplace.sol":"RareERC1155Marketplace"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x4075622496acc77fd6d4de4cc30a8577a744d5c75afad33fdeacf1704d6eda98","urls":["bzz-raw://99c8cb3cd19a44bbfb6612605affb7d8b06cee1f6aa9362a37a8672b4f7eeaf8","dweb:/ipfs/QmasyxFDBUp7k5KFgfDWEzM8PYSKEq7GVznzMJ1VxVRF4B"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1967Upgradeable.sol":{"keccak256":"0x47d6e06872b12e72c79d1b5eb55842f860b5fb1207b2317c2358d2766b950a7b","urls":["bzz-raw://ac55bf6f92fc7b90c6d79d346163a0a02bd5c648c7fede08b20e5da96d4ae2a0","dweb:/ipfs/QmQoSrHhka35iKDK5iyNt8cuXXS5ANXVPjLhfsJjktB8V9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/draft-IERC1822Upgradeable.sol":{"keccak256":"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f","urls":["bzz-raw://496bd9b3df2455d571018c09f0c6badd29713fdeb907c6aa09d8d28cb603f053","dweb:/ipfs/QmXdJDyYs6WMwMh21dez2BYPxhSUaUYFMDtVNcn2cgFR79"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol":{"keccak256":"0x584ebdf9c1118a7c773f98788e3f3ede01982bdf8932aa06f5acc7d54876e161","urls":["bzz-raw://9826c7edf276ff48b99ee217358393097c30448a71d345d287c2f6961bb1f159","dweb:/ipfs/QmYXBTY9wDvffGU47yMRFJ1NFyKwpbj94VHzRzhsm6R7Gz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/beacon/IBeaconUpgradeable.sol":{"keccak256":"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908","urls":["bzz-raw://4dbfe1a3b3b3fb64294ce41fd2ad362e7b7012208117864f42c1a67620a6d5c1","dweb:/ipfs/QmVMU5tWt7zBQMmf5cpMX8UMHV86T3kFeTxBTBjFqVWfoJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xb607cb94c27e89750f5ae2ccebcb94e654e926f6125f4fd4c6262c89875118ad","urls":["bzz-raw://33e8f8d863c6943ea046fcf4972b4e815c04ab06bad195dba1d93f8ebeb8420d","dweb:/ipfs/QmTQzxQTuuzPDk3eqVmYy7hv2RCXM1yt1NtubXpRbzYjaj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb82ef33f43b6b96109687d91b39c94573fdccaaa423fe28e8ba0977b31c023e0","urls":["bzz-raw://ec9c629f63e66379f9c868a74f971064701cc6e30583872aa653f8b932518025","dweb:/ipfs/QmY4MnZF2VMFwJkAwpdQwxEWA3KcGbNBKEmAVYePMVQWUR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/StorageSlotUpgradeable.sol":{"keccak256":"0x07ac95acad040f1fb1f6120dd0aa5f702db69446e95f82613721879d30de0908","urls":["bzz-raw://a9df9de7b5da1d1bd3d4b6c073d0174bc4211db60e794a321c8cb5d4eae34685","dweb:/ipfs/QmWe49zj65jayrCe9jZpoWhYUZ1RiwSxyU2s7SBZnMztVy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155CheckoutExecutionModule.sol":{"keccak256":"0x5e21c4d426f55a9c348d866505dcd62395f6c96c971c523c4ea9d1507aa49564","urls":["bzz-raw://36f027c0fb078527e853940bacded87cbbbd57d3d85c54a34ebcef3fd585d24a","dweb:/ipfs/QmeK38XavEKAmqGVd2tiXnc95qAZnVUM2wMEkXoQ5AtoAV"],"license":"MIT"},"src/marketplace/IRareERC1155Marketplace.sol":{"keccak256":"0xe1d12e07644cf56ed2dcb98e690ca93775b13a03189b4a802d6134c2c2e921b2","urls":["bzz-raw://1099e8215c451fa6dad6f8be5c196c3915dc3b911d4507d46cd9f7f20e29335e","dweb:/ipfs/QmUiW9oVP6Ft4C57zGE6ZWnkMKzJ8DzJoaBemKzBdWbLUK"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40","urls":["bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70","dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM"],"license":"MIT"},"src/marketplace/IRareERC1155TradeExecutionModule.sol":{"keccak256":"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1","urls":["bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89","dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155Marketplace.sol":{"keccak256":"0x40741677ac142ba9120d9127af62c6b4ba4d806bc1e26c15b5f0a4764df5dd43","urls":["bzz-raw://6eb496d7bf89ec9fabe7a31eabf0c522e72cf63bf93d65d2458469f07a1523c1","dweb:/ipfs/QmW1WN1nYr4rd2t7QRsTEqawKRWAVSQX6tYvxjmFs5JgRW"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0xafebd89e5951bfc64c9bd315ae8f3961120d5006f7424cf4127c8ca11e0bb6c1","urls":["bzz-raw://69892edf0cca19978fcbc2b486ce6d4e5bf482777279d6c3e116109e9bfb0836","dweb:/ipfs/QmUXniFfx21Arz81G3tZAAGakozcb3L2GjqaZv2CdXiBS6"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1","urls":["bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a","dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":75} \ No newline at end of file diff --git a/abis/RareERC1155MarketplacePayments.json b/abis/RareERC1155MarketplacePayments.json new file mode 100644 index 0000000..748798c --- /dev/null +++ b/abis/RareERC1155MarketplacePayments.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"checkSplits","inputs":[{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"pure"},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x6080806040523461001c5761199490816100228239308160080152f35b600080fdfe604060808152307f0000000000000000000000000000000000000000000000000000000000000000146004918236101561003857600080fd5b600091823560e01c806330863baf1461090d57806338fa83e7146108f55780634c4c2619146108bb5780635021b71b1461082f5780635ea509b51461081757806376fb8597146106975780637baf92a314610665578063981e8fc514610549578063bc2af99e14610498578063c392415814610211578063c69cbad0146101f3578063e6e1b2dc146101925763f0859688146100d357600080fd5b61018e5760a036600319011261018e576100eb610928565b6001600160401b039360643585811161018a5761010b9036908301610a75565b9160843595861161018a573660238701121561018a57858201359561013b61013288610a5e565b95519586610a3d565b86855260209660248887019160051b8301019136831161018657602401905b82821061017757505050610174949550604435913561177b565b80f35b8135815290880190880161015a565b8780fd5b8480fd5b5080fd5b83858361018e5760a036600319011261018e576101ad610928565b6001600160401b039160643583811161018a576101cd9036908301610a75565b9060843593841161018a576101e86101749436908301610ae3565b926044359135611678565b838261020e576101746102053661096f565b93929092611147565b80fd5b5061018e5761010036600319011261018e5782359061022e610928565b90610237610943565b60a4356001600160a01b0381811695919390606435878603610494576001600160401b039660c435888111610490576102739036908d01610a75565b9760e435908111610490579061028f8c94939236908601610ae3565b996102a08399608435858b8b6110a9565b836002880154169181875196635dc22eff60e01b88528701526020958681602481875afa908115610484578f91928f938489938b979692610455575b5050156103f857505060249088519485938492632260494f60e01b84528301525afa9081156103ee579060ff918c916103c1575b505b169a60648c116103a35750606461032d6101749b9c83610e40565b04908161033f575b5050505050611678565b6103999497508161034f91610bc2565b9680519261035c846109d6565b6001845284368186013786541661037284610e53565b52519261037e846109d6565b6001845236818501378061039184610e53565b52858561177b565b3880808080610335565b845163d6849ff160e01b81529081018c905260646024820152604490fd5b6103e19150853d87116103e7575b6103d98183610a3d565b810190610e27565b38610310565b503d6103cf565b85513d8d823e3d90fd5b60018b01548a5163b28a7bad60e01b81529183169382019390935294508492506024918391165afa9081156103ee579060ff918c91610438575b50610312565b61044f9150853d87116103e7576103d98183610a3d565b38610432565b610476919250873d891161047d575b61046e8183610a3d565b810190610b7b565b90386102dc565b503d610464565b8e8951903d90823e3d90fd5b8a80fd5b8880fd5b83858480600319360112610545576001600160a01b0390816104b8610928565b169182151590816104e2575b506104cd578380f35b5163cd5f748960e01b81529182015260249150fd5b6024915060209060058635015416835192838092632d5ad3d560e01b825287898301525afa90811561053b57859161051d575b5015856104c4565b610535915060203d811161047d5761046e8183610a3d565b85610515565b82513d87823e3d90fd5b8280fd5b509291926105455761012036600319011261054557813590610569610928565b610571610959565b6001600160a01b039360c435929160a435916084359190878616860361064c576001600160401b039660e435888111610661576105b19036908c01610a75565b9761010435908111610661576105ca9036908c01610ae3565b98856105e3575050610174985089945b60443591610e84565b6006830154825163470d6ed960e11b81529b8c018690526020918c916024918391165afa90811561065857508a90610621575b6101749950946105da565b506020893d8211610650575b8161063a60209383610a3d565b8101031261064c576101749851610616565b8980fd5b3d915061062d565b513d8c823e3d90fd5b8b80fd5b83858361018e57608036600319011261018e5761017490610684610928565b61068c610943565b90606435923561142c565b83858480600319360112610545576001600160401b0390823582811161018a576106c49036908501610b4b565b91906024938435908111610813576106df9036908701610b4b565b90841561080357600585116107e6578185036107cb57939190879488935b82851061072f57505050505060648203610715578480f35b516357623e5560e01b815292830152606490820152604490fd5b909192939561073f878387610de6565b356001600160a01b0381169081900361049057156107b55760ff8061076d6107688a8888610de6565b610e0c565b161561079f5761079691610790916107896107688b8989610de6565b1690610e1a565b96610dd7565b939291906106fd565b865163d4c1893560e01b8152808b018990528990fd5b85516306f5730d60e41b8152808a018890528890fd5b604487838888885193632db4fb2960e01b8552840152820152fd5b83516366a4d05560e01b8152808801869052600581880152604490fd5b835163d218e6a560e01b81528790fd5b8680fd5b838261020e57610174610829366109ac565b91610b93565b83858361018e5761014036600319011261018e5761084b610928565b610853610959565b9160e4356001600160a01b038116810361018a576001600160401b039361010435858111610813576108889036908501610a75565b9261012435958611610813576108a46101749636908301610ae3565b9460c4359260a43592608435926044359135610e84565b83858361018e5760c036600319011261018e57610174906108da610928565b6108e2610943565b9160a43592608435926064359235611374565b838261020e57610174610907366109ac565b91610be5565b838261020e5761017461091f3661096f565b939290926110a9565b602435906001600160a01b038216820361093e57565b600080fd5b604435906001600160a01b038216820361093e57565b606435906001600160a01b038216820361093e57565b60a090600319011261093e57600435906001600160a01b0390602435828116810361093e57916044359160643591608435908116810361093e5790565b606090600319011261093e57600435906024356001600160a01b038116810361093e579060443590565b604081019081106001600160401b038211176109f157604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176109f157604052565b608081019081106001600160401b038211176109f157604052565b90601f801991011681019081106001600160401b038211176109f157604052565b6001600160401b0381116109f15760051b60200190565b81601f8201121561093e57803591610a8c83610a5e565b92610a9a6040519485610a3d565b808452602092838086019260051b82010192831161093e578301905b828210610ac4575050505090565b81356001600160a01b038116810361093e578152908301908301610ab6565b81601f8201121561093e57803591610afa83610a5e565b92610b086040519485610a3d565b808452602092838086019260051b82010192831161093e578301905b828210610b32575050505090565b813560ff8116810361093e578152908301908301610b24565b9181601f8401121561093e578235916001600160401b03831161093e576020808501948460051b01011161093e57565b9081602091031261093e5751801515810361093e5790565b91908115610ba657610ba492610be5565b565b50505034610bb057565b60405163429465b160e01b8152600490fd5b91908203918211610bcf57565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281169060008215610daa5734610d98576040938451926370a0823160e01b9081855230600486015260209283866024818a5afa958615610d8e578596610d5e575b506008015416803b15610d5a5783809160848b8a519485938492630aed65f560e11b84528c600485015233602485015230604485015260648401525af18015610d5057610d22575b508190602487518097819382523060048301525afa918215610d175791610ce7575b50610ca49250610bc2565b90838203610cb25750505050565b51636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b0390fd5b905082813d8311610d10575b610cfd8183610a3d565b8101031261093e57610ca4915138610c99565b503d610cf3565b8551903d90823e3d90fd5b6001600160401b038194929411610d3c5786529181610c77565b634e487b7160e01b82526041600452602482fd5b87513d86823e3d90fd5b8380fd5b9095508381813d8311610d87575b610d768183610a3d565b8101031261018a5751946008610c2f565b503d610d6c565b88513d87823e3d90fd5b60405163d9efa38960e01b8152600490fd5b5050505050803403610db95750565b604490604051906305e4640960e21b82526004820152346024820152fd5b6000198114610bcf5760010190565b9190811015610df65760051b0190565b634e487b7160e01b600052603260045260246000fd5b3560ff8116810361093e5790565b91908201809211610bcf57565b9081602091031261093e575160ff8116810361093e5790565b81810292918115918404141715610bcf57565b805115610df65760200190565b805160011015610df65760400190565b8051821015610df65760209160051b010190565b90999584989497610e9d919a9694939a89958585611147565b6003810154604051637a99dc0160e11b81526001600160a01b039b8c166004820152602481019a909a5260448a019890985297989760009788908b90606490829084908e165af1998a1561109e578899899b610f8a575b5050875b8a51891015610f2557610f19610f1f91610f128b8e610e70565b5190610e1a565b98610dd7565b97610ef8565b9295989093969991949750898311610f6c57610ba4989983610f4b575b50505050611678565b83610f63949750610f5b91610bc2565b95858561177b565b38808080610f42565b6044838b604051916344783bd360e11b835260048301526024820152fd5b919a5098503d80898b3e610f9e818b610a3d565b8901986040818b0312610494578051906001600160401b0391828111610490578101928b601f85011215610490578b845191610fd983610a5e565b95610fe76040519788610a3d565b83875260208088019460051b82010192831161109a57602001925b82841061107d5750505050602081015191821161064c57019880601f8b01121561049457895161103181610a5e565b9a61103f6040519c8d610a3d565b818c526020808d019260051b82010192831161049057602001905b82821061106d5750505097983880610ef4565b815181526020918201910161105a565b8351828116810361109657815260209384019301611002565b8e80fd5b8d80fd5b6040513d8a823e3d90fd5b9194939290811561113f57600683015460405163470d6ed960e11b81526004810197909752602090879060249082906001600160a01b03165afa928315611133576000936110fd575b610ba4959650611147565b92956020813d821161112b575b8161111760209383610a3d565b8101031261081357519495508594926110f2565b3d915061110a565b6040513d6000823e3d90fd5b505050509050565b9190811561136d5781841161134f5760409283519361116585610a07565b6002855260209681368988013782546001600160a01b0391908216908161118b89610e53565b526007850154845163e286ef3360e01b815291841660048301528a908290602490829087165afa90811561134457908391600091611309575b50166111cf88610e60565b52816111da88610e60565b51166112f7575b816111eb88610e60565b911690528151966111fb88610a07565b6002885282368a8a013761120f8187610bc2565b61121889610e53565b5261122288610e60565b5261122c87610e53565b51156112aa5761123b87610e60565b511561124d575050610ba4955061177b565b9581610ba4989761127561129a9451986112668a6109d6565b60018a528a36818c0137610e53565b511661128088610e53565b52519661128c886109d6565b600188523681890137610e53565b516112a486610e53565b5261177b565b9581610ba498976112d261129a9451986112c38a6109d6565b60018a528a36818c0137610e60565b51166112dd88610e53565b5251966112e9886109d6565b600188523681890137610e60565b508061130287610e60565b51166111e1565b9091508a81813d831161133d575b6113218183610a3d565b8101031261018e575190838216820361020e57508290386111c4565b503d611317565b84513d6000823e3d90fd5b6044828560405191639bdfbb5160e01b835260048301526024820152fd5b5050505050565b92949390919381156113a55761139061139592610ba497610e40565b610e1a565b926001600160a01b03169161142c565b505050505050565b3d156113e7573d906001600160401b0382116109f157604051916113db601f8201601f191660200184610a3d565b82523d6000602084013e565b606090565b919082519283825260005b848110611418575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016113f7565b929182156114c7576001600160a01b039182169384156114535750610ba4939116906114cd565b600094509282600486950154169260405190602082019363410085df60e01b85521660248201528160448201526044815261148d81610a22565b51925af16114996113ad565b90156114a25750565b604051635519d77560e11b815260206004820152908190610ce39060248301906113ec565b50505050565b919061155791600080604051936020968786019463a9059cbb60e01b865260018060a01b03809316602488015260448701526044865261150c86610a22565b16926040519461151b866109d6565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16115516113ad565b916115df565b8051908282159283156115c7575b505050156115705750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6115d79350820181019101610b7b565b388281611565565b9192901561164157508151156115f3575090565b3b156115fc5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156116545750805190602001fd5b60405162461bcd60e51b815260206004820152908190610ce39060248301906113ec565b9491949390938351825180820361175d57505083519361169785610a5e565b946116a56040519687610a3d565b8086526116b4601f1991610a5e565b013660208701378693600091825b81518082101561174b5760001981019081116117375781036116f85780876116ed6116f3938b610e70565b52610dd7565b6116c2565b956107906116f391606461171a8d60ff6117128d8d610e70565b511690610e40565b046117258a8c610e70565b52611730898b610e70565b5190610bc2565b634e487b7160e01b85526011600452602485fd5b505094509692505093610ba49461177b565b6044925060405191632db4fb2960e01b835260048301526024820152fd5b949193929081518451808203611940575050600095865b85518810156117b8576117ac6117b291610f128a89610e70565b97610dd7565b96611792565b9093965094909391948181036119225750801561136d576001600160a01b0393841692831561182f57505060005b845181101561136d57806117fd61182a9284610e70565b511561182557611825856118118389610e70565b511661181d8386610e70565b5190866114cd565b610dd7565b6117e6565b849294919350600490969596015416916040516020948582019363c176e63960e01b85526064830160406024850152895180915287608485019a01916000905b828210611909575050505081880360231901604483015280518089529086019786019060005b8181106118f5575050600095969750906118bc81879695949303601f198101835282610a3d565b51925af1906118c96113ad565b91156118d3575050565b610ce3604051928392634c0fe4a160e11b8452600484015260248301906113ec565b895183529887019891870191600101611895565b835181168c529a89019a9289019260019091019061186f565b6044925060405191633bc6f52760e21b835260048301526024820152fd5b60449250604051916345e8c29760e11b835260048301526024820152fdfea2646970667358221220e88953e8903faad022a73a2130d17f1c614e87afa599b18665910d013996eb6964736f6c63430008120033","sourceMap":"538:12134:76:-:0;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x604060808152307f0000000000000000000000000000000000000000000000000000000000000000146004918236101561003857600080fd5b600091823560e01c806330863baf1461090d57806338fa83e7146108f55780634c4c2619146108bb5780635021b71b1461082f5780635ea509b51461081757806376fb8597146106975780637baf92a314610665578063981e8fc514610549578063bc2af99e14610498578063c392415814610211578063c69cbad0146101f3578063e6e1b2dc146101925763f0859688146100d357600080fd5b61018e5760a036600319011261018e576100eb610928565b6001600160401b039360643585811161018a5761010b9036908301610a75565b9160843595861161018a573660238701121561018a57858201359561013b61013288610a5e565b95519586610a3d565b86855260209660248887019160051b8301019136831161018657602401905b82821061017757505050610174949550604435913561177b565b80f35b8135815290880190880161015a565b8780fd5b8480fd5b5080fd5b83858361018e5760a036600319011261018e576101ad610928565b6001600160401b039160643583811161018a576101cd9036908301610a75565b9060843593841161018a576101e86101749436908301610ae3565b926044359135611678565b838261020e576101746102053661096f565b93929092611147565b80fd5b5061018e5761010036600319011261018e5782359061022e610928565b90610237610943565b60a4356001600160a01b0381811695919390606435878603610494576001600160401b039660c435888111610490576102739036908d01610a75565b9760e435908111610490579061028f8c94939236908601610ae3565b996102a08399608435858b8b6110a9565b836002880154169181875196635dc22eff60e01b88528701526020958681602481875afa908115610484578f91928f938489938b979692610455575b5050156103f857505060249088519485938492632260494f60e01b84528301525afa9081156103ee579060ff918c916103c1575b505b169a60648c116103a35750606461032d6101749b9c83610e40565b04908161033f575b5050505050611678565b6103999497508161034f91610bc2565b9680519261035c846109d6565b6001845284368186013786541661037284610e53565b52519261037e846109d6565b6001845236818501378061039184610e53565b52858561177b565b3880808080610335565b845163d6849ff160e01b81529081018c905260646024820152604490fd5b6103e19150853d87116103e7575b6103d98183610a3d565b810190610e27565b38610310565b503d6103cf565b85513d8d823e3d90fd5b60018b01548a5163b28a7bad60e01b81529183169382019390935294508492506024918391165afa9081156103ee579060ff918c91610438575b50610312565b61044f9150853d87116103e7576103d98183610a3d565b38610432565b610476919250873d891161047d575b61046e8183610a3d565b810190610b7b565b90386102dc565b503d610464565b8e8951903d90823e3d90fd5b8a80fd5b8880fd5b83858480600319360112610545576001600160a01b0390816104b8610928565b169182151590816104e2575b506104cd578380f35b5163cd5f748960e01b81529182015260249150fd5b6024915060209060058635015416835192838092632d5ad3d560e01b825287898301525afa90811561053b57859161051d575b5015856104c4565b610535915060203d811161047d5761046e8183610a3d565b85610515565b82513d87823e3d90fd5b8280fd5b509291926105455761012036600319011261054557813590610569610928565b610571610959565b6001600160a01b039360c435929160a435916084359190878616860361064c576001600160401b039660e435888111610661576105b19036908c01610a75565b9761010435908111610661576105ca9036908c01610ae3565b98856105e3575050610174985089945b60443591610e84565b6006830154825163470d6ed960e11b81529b8c018690526020918c916024918391165afa90811561065857508a90610621575b6101749950946105da565b506020893d8211610650575b8161063a60209383610a3d565b8101031261064c576101749851610616565b8980fd5b3d915061062d565b513d8c823e3d90fd5b8b80fd5b83858361018e57608036600319011261018e5761017490610684610928565b61068c610943565b90606435923561142c565b83858480600319360112610545576001600160401b0390823582811161018a576106c49036908501610b4b565b91906024938435908111610813576106df9036908701610b4b565b90841561080357600585116107e6578185036107cb57939190879488935b82851061072f57505050505060648203610715578480f35b516357623e5560e01b815292830152606490820152604490fd5b909192939561073f878387610de6565b356001600160a01b0381169081900361049057156107b55760ff8061076d6107688a8888610de6565b610e0c565b161561079f5761079691610790916107896107688b8989610de6565b1690610e1a565b96610dd7565b939291906106fd565b865163d4c1893560e01b8152808b018990528990fd5b85516306f5730d60e41b8152808a018890528890fd5b604487838888885193632db4fb2960e01b8552840152820152fd5b83516366a4d05560e01b8152808801869052600581880152604490fd5b835163d218e6a560e01b81528790fd5b8680fd5b838261020e57610174610829366109ac565b91610b93565b83858361018e5761014036600319011261018e5761084b610928565b610853610959565b9160e4356001600160a01b038116810361018a576001600160401b039361010435858111610813576108889036908501610a75565b9261012435958611610813576108a46101749636908301610ae3565b9460c4359260a43592608435926044359135610e84565b83858361018e5760c036600319011261018e57610174906108da610928565b6108e2610943565b9160a43592608435926064359235611374565b838261020e57610174610907366109ac565b91610be5565b838261020e5761017461091f3661096f565b939290926110a9565b602435906001600160a01b038216820361093e57565b600080fd5b604435906001600160a01b038216820361093e57565b606435906001600160a01b038216820361093e57565b60a090600319011261093e57600435906001600160a01b0390602435828116810361093e57916044359160643591608435908116810361093e5790565b606090600319011261093e57600435906024356001600160a01b038116810361093e579060443590565b604081019081106001600160401b038211176109f157604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176109f157604052565b608081019081106001600160401b038211176109f157604052565b90601f801991011681019081106001600160401b038211176109f157604052565b6001600160401b0381116109f15760051b60200190565b81601f8201121561093e57803591610a8c83610a5e565b92610a9a6040519485610a3d565b808452602092838086019260051b82010192831161093e578301905b828210610ac4575050505090565b81356001600160a01b038116810361093e578152908301908301610ab6565b81601f8201121561093e57803591610afa83610a5e565b92610b086040519485610a3d565b808452602092838086019260051b82010192831161093e578301905b828210610b32575050505090565b813560ff8116810361093e578152908301908301610b24565b9181601f8401121561093e578235916001600160401b03831161093e576020808501948460051b01011161093e57565b9081602091031261093e5751801515810361093e5790565b91908115610ba657610ba492610be5565b565b50505034610bb057565b60405163429465b160e01b8152600490fd5b91908203918211610bcf57565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038281169060008215610daa5734610d98576040938451926370a0823160e01b9081855230600486015260209283866024818a5afa958615610d8e578596610d5e575b506008015416803b15610d5a5783809160848b8a519485938492630aed65f560e11b84528c600485015233602485015230604485015260648401525af18015610d5057610d22575b508190602487518097819382523060048301525afa918215610d175791610ce7575b50610ca49250610bc2565b90838203610cb25750505050565b51636ff596f360e01b81526001600160a01b0392909216600483015260248201929092526044810191909152606490fd5b0390fd5b905082813d8311610d10575b610cfd8183610a3d565b8101031261093e57610ca4915138610c99565b503d610cf3565b8551903d90823e3d90fd5b6001600160401b038194929411610d3c5786529181610c77565b634e487b7160e01b82526041600452602482fd5b87513d86823e3d90fd5b8380fd5b9095508381813d8311610d87575b610d768183610a3d565b8101031261018a5751946008610c2f565b503d610d6c565b88513d87823e3d90fd5b60405163d9efa38960e01b8152600490fd5b5050505050803403610db95750565b604490604051906305e4640960e21b82526004820152346024820152fd5b6000198114610bcf5760010190565b9190811015610df65760051b0190565b634e487b7160e01b600052603260045260246000fd5b3560ff8116810361093e5790565b91908201809211610bcf57565b9081602091031261093e575160ff8116810361093e5790565b81810292918115918404141715610bcf57565b805115610df65760200190565b805160011015610df65760400190565b8051821015610df65760209160051b010190565b90999584989497610e9d919a9694939a89958585611147565b6003810154604051637a99dc0160e11b81526001600160a01b039b8c166004820152602481019a909a5260448a019890985297989760009788908b90606490829084908e165af1998a1561109e578899899b610f8a575b5050875b8a51891015610f2557610f19610f1f91610f128b8e610e70565b5190610e1a565b98610dd7565b97610ef8565b9295989093969991949750898311610f6c57610ba4989983610f4b575b50505050611678565b83610f63949750610f5b91610bc2565b95858561177b565b38808080610f42565b6044838b604051916344783bd360e11b835260048301526024820152fd5b919a5098503d80898b3e610f9e818b610a3d565b8901986040818b0312610494578051906001600160401b0391828111610490578101928b601f85011215610490578b845191610fd983610a5e565b95610fe76040519788610a3d565b83875260208088019460051b82010192831161109a57602001925b82841061107d5750505050602081015191821161064c57019880601f8b01121561049457895161103181610a5e565b9a61103f6040519c8d610a3d565b818c526020808d019260051b82010192831161049057602001905b82821061106d5750505097983880610ef4565b815181526020918201910161105a565b8351828116810361109657815260209384019301611002565b8e80fd5b8d80fd5b6040513d8a823e3d90fd5b9194939290811561113f57600683015460405163470d6ed960e11b81526004810197909752602090879060249082906001600160a01b03165afa928315611133576000936110fd575b610ba4959650611147565b92956020813d821161112b575b8161111760209383610a3d565b8101031261081357519495508594926110f2565b3d915061110a565b6040513d6000823e3d90fd5b505050509050565b9190811561136d5781841161134f5760409283519361116585610a07565b6002855260209681368988013782546001600160a01b0391908216908161118b89610e53565b526007850154845163e286ef3360e01b815291841660048301528a908290602490829087165afa90811561134457908391600091611309575b50166111cf88610e60565b52816111da88610e60565b51166112f7575b816111eb88610e60565b911690528151966111fb88610a07565b6002885282368a8a013761120f8187610bc2565b61121889610e53565b5261122288610e60565b5261122c87610e53565b51156112aa5761123b87610e60565b511561124d575050610ba4955061177b565b9581610ba4989761127561129a9451986112668a6109d6565b60018a528a36818c0137610e53565b511661128088610e53565b52519661128c886109d6565b600188523681890137610e53565b516112a486610e53565b5261177b565b9581610ba498976112d261129a9451986112c38a6109d6565b60018a528a36818c0137610e60565b51166112dd88610e53565b5251966112e9886109d6565b600188523681890137610e60565b508061130287610e60565b51166111e1565b9091508a81813d831161133d575b6113218183610a3d565b8101031261018e575190838216820361020e57508290386111c4565b503d611317565b84513d6000823e3d90fd5b6044828560405191639bdfbb5160e01b835260048301526024820152fd5b5050505050565b92949390919381156113a55761139061139592610ba497610e40565b610e1a565b926001600160a01b03169161142c565b505050505050565b3d156113e7573d906001600160401b0382116109f157604051916113db601f8201601f191660200184610a3d565b82523d6000602084013e565b606090565b919082519283825260005b848110611418575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016113f7565b929182156114c7576001600160a01b039182169384156114535750610ba4939116906114cd565b600094509282600486950154169260405190602082019363410085df60e01b85521660248201528160448201526044815261148d81610a22565b51925af16114996113ad565b90156114a25750565b604051635519d77560e11b815260206004820152908190610ce39060248301906113ec565b50505050565b919061155791600080604051936020968786019463a9059cbb60e01b865260018060a01b03809316602488015260448701526044865261150c86610a22565b16926040519461151b866109d6565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af16115516113ad565b916115df565b8051908282159283156115c7575b505050156115705750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b6115d79350820181019101610b7b565b388281611565565b9192901561164157508151156115f3575090565b3b156115fc5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156116545750805190602001fd5b60405162461bcd60e51b815260206004820152908190610ce39060248301906113ec565b9491949390938351825180820361175d57505083519361169785610a5e565b946116a56040519687610a3d565b8086526116b4601f1991610a5e565b013660208701378693600091825b81518082101561174b5760001981019081116117375781036116f85780876116ed6116f3938b610e70565b52610dd7565b6116c2565b956107906116f391606461171a8d60ff6117128d8d610e70565b511690610e40565b046117258a8c610e70565b52611730898b610e70565b5190610bc2565b634e487b7160e01b85526011600452602485fd5b505094509692505093610ba49461177b565b6044925060405191632db4fb2960e01b835260048301526024820152fd5b949193929081518451808203611940575050600095865b85518810156117b8576117ac6117b291610f128a89610e70565b97610dd7565b96611792565b9093965094909391948181036119225750801561136d576001600160a01b0393841692831561182f57505060005b845181101561136d57806117fd61182a9284610e70565b511561182557611825856118118389610e70565b511661181d8386610e70565b5190866114cd565b610dd7565b6117e6565b849294919350600490969596015416916040516020948582019363c176e63960e01b85526064830160406024850152895180915287608485019a01916000905b828210611909575050505081880360231901604483015280518089529086019786019060005b8181106118f5575050600095969750906118bc81879695949303601f198101835282610a3d565b51925af1906118c96113ad565b91156118d3575050565b610ce3604051928392634c0fe4a160e11b8452600484015260248301906113ec565b895183529887019891870191600101611895565b835181168c529a89019a9289019260019091019061186f565b6044925060405191633bc6f52760e21b835260048301526024820152fd5b60449250604051916345e8c29760e11b835260048301526024820152fdfea2646970667358221220e88953e8903faad022a73a2130d17f1c614e87afa599b18665910d013996eb6964736f6c63430008120033","sourceMap":"538:12134:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;:::i;:::-;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;:::i;:::-;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;3621:33;3739:7;3621:33;538:12134;;;3739:7;;;;:::i;:::-;3787:29;;;;538:12134;;;;;;;;;;3787:62;;;;538:12134;;3787:62;;;538:12134;3787:62;;;;;;;;;;;;;;;;;;;;;;;538:12134;-1:-1:-1;;3787:239:76;;;538:12134;;;;;;;;;;;;;;3864:60;;;;538:12134;3864:60;;;;;;;;538:12134;3864:60;;;;;3787:239;;;538:12134;4040:24;538:12134;4040:24;;4036:142;;4211:28;538:12134;4211:28;4792:12;4211:28;;;;:::i;:::-;538:12134;4260:15;;4256:451;;3787:239;4792:12;;;;;;:::i;4256:451::-;4680:15;4291:30;;;;;;;:::i;:::-;538:12134;;;;;;;:::i;:::-;;;;;;;;;;;;;4420:59;;;:::i;:::-;538:12134;;;;;;:::i;:::-;;;;;;;;;4558:32;;;;:::i;:::-;538:12134;4680:15;;;:::i;:::-;4256:451;;;;;;;4036:142;538:12134;;-1:-1:-1;;;4087:80:76;;;;;538:12134;;;;;;;;;;4087:80;3864:60;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;538:12134;;;;;;;;;3787:239;538:12134;3939:27;;538:12134;;;-1:-1:-1;;;3939:87:76;;538:12134;;;3939:87;;;538:12134;;;;;-1:-1:-1;538:12134:76;;-1:-1:-1;538:12134:76;;;;;3939:87;;;;;;;;538:12134;3939:87;;;;;3787:239;;;;3939:87;;;;;;;;;;;;;;:::i;:::-;;;;3787:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;538:12134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;:::i;:::-;;742:30;;;;:98;;;;538:12134;738:202;;;538:12134;;;738:202;538:12134;-1:-1:-1;;;863:66:76;;;;;538:12134;;;-1:-1:-1;863:66:76;742:98;538:12134;;;;;777:29;538:12134;;777:29;538:12134;;;;;;;;;;;777:63;;;;;;538:12134;777:63;;;;;;;;;;;742:98;776:64;;742:98;;;777:63;;;;538:12134;777:63;;;;;;;;;:::i;:::-;;;;;538:12134;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;5199:79;:20;;;:79;;5559:12;5199:79;;;;;538:12134;;5559:12;;:::i;5199:79::-;5226:23;;;538:12134;;;-1:-1:-1;;;5226:52:76;;;;;538:12134;;;;;;;;;;;;5226:52;;;;;;;;;;;;5199:79;5559:12;5199:79;;;;;5226:52;;538:12134;5226:52;;;;;;;;;538:12134;5226:52;;;:::i;:::-;;;538:12134;;;;5559:12;538:12134;;5226:52;;538:12134;;;;5226:52;;;-1:-1:-1;5226:52:76;;;538:12134;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;2340:28;;;2336:95;;2471:1;2445:27;;2441:148;;2602:46;;;2598:178;;2786:22;;;;2823:13;;2818:355;2838:23;;;;;;3187:17;;;;;3201:3;3187:17;;3183:93;;538:12134;;;3183:93;538:12134;-1:-1:-1;;;3213:63:76;;;;;538:12134;3201:3;538:12134;;;;;;3213:63;2863:3;2886:19;;;;;;;;;;:::i;:::-;538:12134;-1:-1:-1;;;;;538:12134:76;;;;;;;;2886:33;2882:137;;538:12134;3036:15;;;;;;;:::i;:::-;;:::i;:::-;538:12134;3036:20;3032:87;;2863:3;3147:15;3133:29;3147:15;;;;;;;:::i;:::-;538:12134;3133:29;;:::i;:::-;2863:3;;:::i;:::-;2823:13;;;;;;3032:87;538:12134;;-1:-1:-1;;;3065:54:76;;;;;538:12134;;;;;3065:54;2882:137;538:12134;;-1:-1:-1;;;2946:58:76;;;;;538:12134;;;;;2946:58;2598:178;538:12134;;;;;;;2671:94;;;;;;;;538:12134;;;;2671:94;2441:148;538:12134;;-1:-1:-1;;;2495:83:76;;;;;538:12134;;;2471:1;538:12134;;;;;;2495:83;2336:95;538:12134;;-1:-1:-1;;;2377:54:76;;538:12134;;2377:54;538:12134;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;:::i;:::-;;;:::i;:::-;;;;-1:-1:-1;;;;;538:12134:76;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;538:12134:76;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;538:12134:76;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;538:12134:76;;;;;;:::o;:::-;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;:::o;:::-;-1:-1:-1;;;;;538:12134:76;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;952:352::-;;;1094:12;;1090:139;;1289:7;;;:::i;:::-;952:352::o;1090:139::-;1126:9;;;;1122:76;;1212:7::o;1122:76::-;538:12134;;-1:-1:-1;;;1149:49:76;;;;;538:12134;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1310:901;-1:-1:-1;;;;;538:12134:76;;;;1485:1;1457:30;;1453:181;;1648:9;1644:85;;538:12134;;;;;;;;1813:30;;;;1837:4;1813:30;;;538:12134;1813:30;;;;538:12134;1813:30;;;;;;;;;;;;;1310:901;1854:28;;;538:12134;;1854:95;;;;;538:12134;;;;;;;;;;;;;;;1854:95;;;1813:30;1854:95;;538:12134;1914:10;538:12134;;;;1837:4;538:12134;;;;;;;;1854:95;;;;;;;;1310:901;538:12134;;;;;;1985:30;;;;;;1837:4;1813:30;1985;;538:12134;1985:30;;;;;;;;;;1310:901;1985:46;;;;;:::i;:::-;2045:25;;;;2041:164;;1310:901;;;;:::o;2041:164::-;538:12134;-1:-1:-1;;;2093:101:76;;-1:-1:-1;;;;;538:12134:76;;;;1813:30;2093:101;;538:12134;;;;;;;;;;;;;;;;;2093:101;;;;;1985:30;;;;;;;;;;;;;;;:::i;:::-;;;538:12134;;;;1985:46;538:12134;;1985:30;;;;;;;;;538:12134;;;;;;;;;;1854:95;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;1854:95;;538:12134;-1:-1:-1;;;538:12134:76;;;1813:30;538:12134;;;;1854:95;538:12134;;;;;;;;;1854:95;538:12134;;;1813:30;;;;;;;;;;;;;;;;;:::i;:::-;;;538:12134;;;;;;1854:28;1813:30;;;;;;;;538:12134;;;;;;;;;1644:85;538:12134;;-1:-1:-1;;;1671:58:76;;;;;1453:181;1507:9;;;;;;;:20;1503:100;;1617:7;:::o;1503:100::-;538:12134;;;;1536:67;;;;;;;;;538:12134;1507:9;538:12134;;;;1536:67;538:12134;-1:-1:-1;;538:12134:76;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;8004:1;538:12134;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;5594:1312::-;;;;;;;;6133:7;5594:1312;;;;;;5997:33;6133:7;;;;:::i;:::-;6231:21;;;538:12134;;;-1:-1:-1;;;6231:69:76;;-1:-1:-1;;;;;538:12134:76;;;6231:69;;;538:12134;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;538:12134:76;;;;;;-1:-1:-1;;538:12134:76;;6231:69;;;;;;;;-1:-1:-1;;6231:69:76;;;5594:1312;6311:26;;;6389:3;538:12134;;6367:20;;;;;6408:30;6389:3;6426:12;;;;;:::i;:::-;538:12134;6408:30;;:::i;:::-;6389:3;;:::i;:::-;6352:13;;;6367:20;;;;;;;;;;;;6463:32;;;6459:157;;6886:12;6630:18;;;6626:175;;6347:102;6886:12;;;;;:::i;6626:175::-;6664:33;6780:9;6664:33;;;;;;:::i;:::-;6780:9;;;;:::i;:::-;6626:175;;;;;;6459:157;538:12134;;;;;6518:87;;;;;;6231:69;6518:87;;538:12134;;;;;6518:87;6231:69;;;;;;;;;;;;;;;:::i;:::-;;;538:12134;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6231:69;;;;;;;;;538:12134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6231:69;538:12134;;;;;;;;;6912:473;;;;;;7133:20;;7129:57;;7217:23;;;538:12134;;;-1:-1:-1;;;7217:52:76;;;;;538:12134;;;;7217:52;;538:12134;;;;;;-1:-1:-1;;;;;538:12134:76;7217:52;;;;;;;7152:1;7217:52;;;6912:473;7370:7;;;;;:::i;7217:52::-;;;;;;;;;;;;;;;;;:::i;:::-;;;538:12134;;;;;;;-1:-1:-1;538:12134:76;;;7217:52;;;;;-1:-1:-1;7217:52:76;;;538:12134;;;7152:1;538:12134;;;;;7129:57;7169:7;;;;;;:::o;7391:1882::-;;;7630:20;;7626:57;;7697:29;;;7693:157;;538:12134;;;;;;;;:::i;:::-;7920:1;538:12134;;;;;;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;7932:51;;;:::i;:::-;538:12134;8017:23;;;538:12134;;;-1:-1:-1;;;8017:67:76;;538:12134;;;8017:67;;;538:12134;8017:23;;538:12134;;;;;;;;8017:67;;;;;;;;;;7649:1;8017:67;;;7391:1882;538:12134;;7993:92;;;:::i;:::-;538:12134;8111:13;;;;:::i;:::-;538:12134;;8111:81;;;8095:97;;;;:::i;:::-;538:12134;;;;;;;;;;:::i;:::-;7920:1;538:12134;;;;;;;;8269:29;;;;:::i;:::-;8256:42;;;:::i;:::-;538:12134;8308:24;;;:::i;:::-;538:12134;8347:10;;;:::i;:::-;538:12134;8347:15;8343:400;;8757:10;;;:::i;:::-;538:12134;8757:15;8753:424;;9258:7;;;;;;:::i;8753:424::-;538:12134;;9127:18;538:12134;;8902:13;9021:10;538:12134;;;;;;:::i;:::-;;;;;;;;;;8902:13;:::i;:::-;538:12134;;8875:40;;;:::i;:::-;538:12134;;;;;;:::i;:::-;;;;;;;;;9021:10;:::i;:::-;538:12134;8997:34;;;:::i;:::-;538:12134;9127:18;:::i;8343:400::-;538:12134;;8697:14;538:12134;;8484:13;8595:10;538:12134;;;;;;:::i;:::-;;;;;;;;;;8484:13;:::i;:::-;538:12134;;8461:36;;;:::i;:::-;538:12134;;;;;;:::i;:::-;;;;;;;;;8595:10;:::i;8111:81::-;8179:13;;;;;:::i;:::-;538:12134;;8111:81;;8017:67;;;;;;;;;;;;;;;;;:::i;:::-;;;538:12134;;;;;;;;;;;;;8017:67;;;;;;;;;;;;538:12134;;;7649:1;538:12134;;;;;7693:157;538:12134;;;;;7749:90;;;;;;;;;538:12134;;;;;7749:90;7626:57;7666:7;;;;;:::o;9279:418::-;;;;;;;9534:14;;9530:51;;9643:18;9642:47;9643:18;9642:47;9643:18;;:::i;:::-;9642:47;:::i;:::-;538:12134;-1:-1:-1;;;;;538:12134:76;;9642:47;:::i;9530:51::-;9564:7;;;;;;:::o;538:12134::-;;;;;;;-1:-1:-1;;;;;538:12134:76;;;;;;;;;;;-1:-1:-1;;538:12134:76;;;;;:::i;:::-;;;;-1:-1:-1;538:12134:76;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;9703:669;;;9888:12;;9884:49;;-1:-1:-1;;;;;538:12134:76;;;;9947:30;;9943:354;;-1:-1:-1;10307:58:76;;538:12134;;;10307:58;:::i;9943:354::-;9899:1;10037:16;;;;;;;;538:12134;;;;;10093:77;;;;538:12134;;;;10093:77;;538:12134;10093:77;;;538:12134;;;;;;;10093:77;;;;;:::i;:::-;10029:155;;;;;;:::i;:::-;10202:8;;10198:68;;10280:7;:::o;10198:68::-;538:12134;;-1:-1:-1;;;10219:47:76;;10093:77;10037:16;10219:47;;538:12134;;;;;;10093:77;538:12134;;;;:::i;9884:49::-;9916:7;;;;:::o;941:175:54:-;;;5535:69:56;941:175:54;-1:-1:-1;538:12134:76;;;1050:58:54;;;;;;538:12134:76;;;;1050:58:54;;538:12134:76;;;;;;;;1050:58:54;;;538:12134:76;;;;;;1050:58:54;;;;;:::i;:::-;538:12134:76;;;;;;;;:::i;:::-;;;;;;;;;5487:31:56;;;;;;;;:::i;:::-;5535:69;;:::i;:::-;538:12134:76;;5705:22:54;;;;:56;;;;;941:175;538:12134:76;;;;;;941:175:54;:::o;538:12134:76:-;;;;;;;;;;;;;;;;1050:58:54;538:12134:76;;;;;;;;-1:-1:-1;;;538:12134:76;;;;;5705:56:54;5731:30;;-1:-1:-1;5731:30:54;;;;;;;:::i;:::-;5705:56;;;;;7671:628:56;;;;7875:418;;;538:12134:76;;;7906:22:56;7902:286;;8201:17;;:::o;7902:286::-;1702:19;:23;538:12134:76;;8201:17:56;:::o;538:12134:76:-;;;-1:-1:-1;;;538:12134:76;;;;;;;;;;;;;;;;;;;;7875:418:56;538:12134:76;;;;-1:-1:-1;8980:21:56;:17;;9152:142;;;;;;;8976:379;538:12134:76;;-1:-1:-1;;;9324:20:56;;538:12134:76;9324:20:56;;;538:12134:76;;;;;;;;;;;:::i;10378:949::-;;;;;;;538:12134;;;;10621:46;;;10617:178;;538:12134;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;10880:33;10929:13;-1:-1:-1;10929:13:76;;10973:3;538:12134;;10944:27;;;;;;-1:-1:-1;;538:12134:76;;;;;;;10996:32;;;;11048:28;;;10973:3;11048:28;;;:::i;:::-;538:12134;10973:3;:::i;:::-;10929:13;;10992:231;11139:15;11179:29;10973:3;11139:15;11158:3;11129:25;11139:15;538:12134;11139:15;;;;:::i;:::-;538:12134;;11129:25;;:::i;:::-;538:12134;11115:46;;;;:::i;:::-;538:12134;11198:10;;;;:::i;:::-;538:12134;11179:29;;:::i;538:12134::-;-1:-1:-1;;;538:12134:76;;;;;;;;10944:27;;;;;;;;;;11312:7;10944:27;11312:7;:::i;10617:178::-;538:12134;;;;;2671:94;;;;10690;;;;;538:12134;;;;;10690:94;11333:1337;;;;;;538:12134;;;;11571:37;;;11567:161;;11738:23;;-1:-1:-1;11776:13:76;;11812:3;538:12134;;11791:19;;;;;11831:26;11812:3;11846:11;;;;;:::i;11831:26::-;11812:3;;:::i;:::-;11776:13;;;11791:19;;;;;;;;;;11881:22;;;11877:105;;11997:12;;;11993:49;;-1:-1:-1;;;;;538:12134:76;;;;12056:30;;12052:356;;12472:13;;-1:-1:-1;12511:3:76;538:12134;;12487:22;;;;;12534:11;;12511:3;12534:11;;;:::i;:::-;538:12134;12534:16;12530:63;;12606:47;12625:14;;;;;:::i;:::-;538:12134;;12641:11;;;;:::i;:::-;538:12134;12606:47;;;:::i;:::-;12511:3;:::i;:::-;12472:13;;12052:356;12146:16;;;;;;;;;;;;538:12134;;;;;12202:79;;;;;538:12134;;;;12202:79;;538:12134;;;;12202:79;;;538:12134;;;;;;;;;;;;;-1:-1:-1;538:12134:76;;;;;;;-1:-1:-1;;;;538:12134:76;;;-1:-1:-1;;538:12134:76;;;;;;;;;;;;;;;;;-1:-1:-1;538:12134:76;;;;;;12202:79;;-1:-1:-1;12202:79:76;;;;;;;;;;;;;538:12134;;12202:79;;;;;;:::i;:::-;12138:157;;;;;;;:::i;:::-;12313:8;;12309:68;;12391:7;;:::o;12309:68::-;538:12134;;;12330:47;;;;;;;;12146:16;12330:47;;538:12134;12202:79;538:12134;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11877:105;538:12134;;;;;11912:70;;;;;;;;;538:12134;;;;;11912:70;11567:161;538:12134;;;;;11631:86;;;;;;;;;538:12134;;;;;11631:86","linkReferences":{},"immutableReferences":{"library_deploy_address":[{"start":8,"length":32}]}},"methodIdentifiers":{"checkAmountAndTransfer(MarketConfigV2.Config storage,address,uint256)":"38fa83e7","checkBatchPayment(MarketConfigV2.Config storage,address,uint256)":"5ea509b5","checkIfCurrencyIsApproved(MarketConfigV2.Config storage,address)":"bc2af99e","checkSplits(address[],uint8[])":"76fb8597","payoutMarketplaceFee(MarketConfigV2.Config storage,address,uint256,uint256,address)":"30863baf","payoutMarketplaceFeeWithStakingFee(MarketConfigV2.Config storage,address,uint256,uint256,address)":"c69cbad0","payoutPrimary(MarketConfigV2.Config storage,address,address,uint256,uint256,address,address[],uint8[])":"c3924158","payoutSecondary(MarketConfigV2.Config storage,address,uint256,address,uint256,uint256,address,address[],uint8[])":"981e8fc5","payoutSecondaryWithStakingFee(MarketConfigV2.Config storage,address,uint256,address,uint256,uint256,uint256,address,address[],uint8[])":"5021b71b","payoutSplits(MarketConfigV2.Config storage,address,uint256,address[],uint8[])":"e6e1b2dc","performPayouts(MarketConfigV2.Config storage,address,uint256,address[],uint256[])":"f0859688","refund(MarketConfigV2.Config storage,address,address,uint256)":"7baf92a3","refundRemainingOffer(MarketConfigV2.Config storage,address,address,uint256,uint256,uint256)":"4c4c2619"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"checkSplits\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"RareERC1155MarketplacePayments\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Shared payment, refund, royalty, staking fee, and split payout helpers for ERC1155 marketplaces.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155MarketplacePayments.sol\":\"RareERC1155MarketplacePayments\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70\",\"dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0xafebd89e5951bfc64c9bd315ae8f3961120d5006f7424cf4127c8ca11e0bb6c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69892edf0cca19978fcbc2b486ce6d4e5bf482777279d6c3e116109e9bfb0836\",\"dweb:/ipfs/QmUXniFfx21Arz81G3tZAAGakozcb3L2GjqaZv2CdXiBS6\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"pure","type":"function","name":"checkSplits"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155MarketplacePayments.sol":"RareERC1155MarketplacePayments"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x8d34a6232df2f8000be37bf27bffc0ebcd32f6b7d6675e9e858a3b520d486d40","urls":["bzz-raw://5893c1f94047332f3b26ff0fe3a2410a339fc3fd6d5397b4ee6c2c8fd02a6c70","dweb:/ipfs/QmUwJwJ4XicMDJAzmsGUcYZfhKf4X9kDhmESKRhqindpAM"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0xafebd89e5951bfc64c9bd315ae8f3961120d5006f7424cf4127c8ca11e0bb6c1","urls":["bzz-raw://69892edf0cca19978fcbc2b486ce6d4e5bf482777279d6c3e116109e9bfb0836","dweb:/ipfs/QmUXniFfx21Arz81G3tZAAGakozcb3L2GjqaZv2CdXiBS6"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":76} \ No newline at end of file diff --git a/abis/RareERC1155MarketplaceStorage.json b/abis/RareERC1155MarketplaceStorage.json new file mode 100644 index 0000000..0db5925 --- /dev/null +++ b/abis/RareERC1155MarketplaceStorage.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"This is not a deployable marketplace. `RareERC1155Marketplace` owns this storage behind the proxy, and execution modules use the same namespace when executed through delegatecall from the marketplace.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MARKETPLACE_STORAGE_LOCATION\":{\"details\":\"cast index-erc7201 superrare.storage.RareERC1155Marketplace\"}},\"title\":\"RareERC1155MarketplaceStorage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ERC-7201 storage namespace and validation helpers for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155MarketplaceStorage.sol\":\"RareERC1155MarketplaceStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a\",\"dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155MarketplaceStorage.sol":"RareERC1155MarketplaceStorage"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1","urls":["bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a","dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":171} \ No newline at end of file diff --git a/abis/RareERC1155TradeExecutionModule.json b/abis/RareERC1155TradeExecutionModule.json new file mode 100644 index 0000000..825f53f --- /dev/null +++ b/abis/RareERC1155TradeExecutionModule.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"MAX_BATCH_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_CHECKOUT_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"acceptOffer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_price","type":"uint256","internalType":"uint256"},{"name":"_quantity","type":"uint256","internalType":"uint256"},{"name":"_splitRecipients","type":"address[]","internalType":"address payable[]"},{"name":"_splitRatios","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"buyBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"mintDirectSaleBatch","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requests","type":"tuple[]","internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","components":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}]}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"CheckoutCompleted","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"filledCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"skippedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethSpent","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ethRefunded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CheckoutItemProcessed","inputs":[{"name":"itemIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"itemKind","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"currencyAddress","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"filled","type":"bool","indexed":false,"internalType":"bool"},{"name":"failureStage","type":"uint8","indexed":false,"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"reason","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"failureData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"totalPaid","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ContractPausedUpdated","inputs":[{"name":"isPaused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketplaceDependencyUpdated","inputs":[{"name":"field","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"dependency","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"MintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"seller","type":"address","indexed":false,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MintDirectSaleCancelled","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferAccepted","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferCancelled","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFeeRemaining","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OfferMade","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"marketplaceFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PrepareMintDirectSale","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"startTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxMints","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SalePriceCancelled","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SalePriceSet","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"expirationTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"splitRecipients","type":"address[]","indexed":false,"internalType":"address payable[]"},{"name":"splitRatios","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetTokenAllowListConfig","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"root","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"endTimestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenMintLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TokenTxLimitSet","inputs":[{"name":"contractAddress","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"limit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressNotAllowlisted","inputs":[{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"AllowListEndTimestampInvalid","inputs":[{"name":"_endTimestamp","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ApprovalManagerCannotBeZero","inputs":[]},{"type":"error","name":"BatchSizeExceeded","inputs":[{"name":"supplied","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CheckoutItemExecutionFailed","inputs":[{"name":"_stage","type":"uint8","internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage"},{"name":"_failureData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractHasNoOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CurrencyMismatch","inputs":[{"name":"_suppliedCurrency","type":"address","internalType":"address"},{"name":"_configuredCurrency","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotApproved","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"DirectModuleCallUnsupported","inputs":[]},{"type":"error","name":"DirectSaleNotConfigured","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20FeeOnTransferUnsupported","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_receivedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyBatch","inputs":[]},{"type":"error","name":"ExecutionModuleDelegateCallFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"IncorrectETHAmount","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_suppliedAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Allowance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutERC20Balance","inputs":[{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientCheckoutETH","inputs":[{"name":"_requiredAmount","type":"uint256","internalType":"uint256"},{"name":"_availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientTokenBalance","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Contract","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidERC1155Mint","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidERC1155Transfer","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_quantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidExecutionModule","inputs":[]},{"type":"error","name":"MarketConfigAddressCannotBeZero","inputs":[{"name":"_field","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"MarketplaceNotApproved","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_contractAddress","type":"address","internalType":"address"}]},{"type":"error","name":"MaxMintExceeded","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_maxMints","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MintLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_mintedQuantity","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"MsgValueMustBeZero","inputs":[]},{"type":"error","name":"MsgValueUnsupportedForERC20","inputs":[]},{"type":"error","name":"NotContractOwner","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_account","type":"address","internalType":"address"}]},{"type":"error","name":"OfferDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"}]},{"type":"error","name":"OfferExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_buyer","type":"address","internalType":"address"},{"name":"_currencyAddress","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OfferPriceCannotBeZero","inputs":[]},{"type":"error","name":"PayoutFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"PayoutLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_amountsLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PayoutTotalMismatch","inputs":[{"name":"_expectedAmount","type":"uint256","internalType":"uint256"},{"name":"_actualAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PlatformCommissionExceeded","inputs":[{"name":"_platformCommission","type":"uint256","internalType":"uint256"},{"name":"_maxPlatformCommission","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"PriceMismatch","inputs":[{"name":"_suppliedPrice","type":"uint256","internalType":"uint256"},{"name":"_configuredPrice","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityCannotBeZero","inputs":[]},{"type":"error","name":"QuantityExceedsOfferQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QuantityExceedsSalePriceQuantity","inputs":[{"name":"_requestedQuantity","type":"uint256","internalType":"uint256"},{"name":"_availableQuantity","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[{"name":"_revertData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"RoyaltiesExceedSaleAmount","inputs":[{"name":"_royalties","type":"uint256","internalType":"uint256"},{"name":"_saleAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SaleNotStarted","inputs":[{"name":"_startTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceCannotBeZero","inputs":[]},{"type":"error","name":"SalePriceDoesNotExist","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SalePriceExpirationInvalid","inputs":[{"name":"_expirationTime","type":"uint256","internalType":"uint256"},{"name":"_currentTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SalePriceExpired","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_seller","type":"address","internalType":"address"},{"name":"_expirationTime","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SelfOfferAcceptanceUnsupported","inputs":[{"name":"_buyer","type":"address","internalType":"address"}]},{"type":"error","name":"SelfPurchaseUnsupported","inputs":[{"name":"_seller","type":"address","internalType":"address"}]},{"type":"error","name":"SplitLengthMismatch","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_ratiosLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRatioCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientCannotBeZero","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsExceededMax","inputs":[{"name":"_recipientsLength","type":"uint256","internalType":"uint256"},{"name":"_maxRecipients","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SplitRecipientsRequired","inputs":[]},{"type":"error","name":"SplitTotalInvalid","inputs":[{"name":"_totalRatio","type":"uint256","internalType":"uint256"},{"name":"_requiredTotal","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StakingFeeExceedsMarketplaceFee","inputs":[{"name":"_marketplaceFee","type":"uint256","internalType":"uint256"},{"name":"_stakingFee","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenIdsNotStrictlyAscending","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"previousTokenId","type":"uint256","internalType":"uint256"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TokenNotFound","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TransactionLimitExceeded","inputs":[{"name":"_contractAddress","type":"address","internalType":"address"},{"name":"_tokenId","type":"uint256","internalType":"uint256"},{"name":"_account","type":"address","internalType":"address"},{"name":"_usedTransactions","type":"uint256","internalType":"uint256"},{"name":"_limit","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnsupportedCheckoutItemKind","inputs":[{"name":"_itemKind","type":"uint8","internalType":"uint8"}]}],"bytecode":{"object":"0x60a080604052346100235730608052613cc99081610029823960805181610c390152f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c9081630a6ce3131461006a575080637777e6d714610065578063a3eaf4d914610060578063b8e6b50f1461005b5763cfdbf2541461005657600080fd5b610737565b6106ad565b610691565b610132565b60803660031901126100e957600435610082816100ec565b60243561008e816100ec565b6044359161009b836100ec565b606435926001600160401b03928385116100e557366023860112156100e55784600401359384116100e55736602460608602870101116100e55760246100e2950192611ea6565b80f35b8580fd5b80fd5b6001600160a01b038116036100fd57565b600080fd5b9181601f840112156100fd578235916001600160401b0383116100fd576020808501948460051b0101116100fd57565b60603660031901126100fd57600461014a81356100ec565b6101556024356100ec565b6044356001600160401b0381116100fd576101739036908301610102565b9161017c610c36565b6101868383613b44565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd57604051635e157ccf60e11b8152600081806101c060243586830161080e565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157610673575b506101ef8135611cc2565b6101f883610858565b61020184610858565b61020a856108c5565b916000805b8781106104f5575073__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5760006102549160405180938192635ea509b560e01b83526024358a84016109ab565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af48015610421576104e2575b5060005b86811061042657509061029191338535613976565b60005b84811061029d57005b60206102a98284610952565b510151610346575b806102be60019284610952565b51516102de60806102cf8487610952565b5101516001600160a01b031690565b9060406102ec848a8a61092b565b01357f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c61033d602061031f878d8d61092b565b013560405191829133978a8060a01b038d3516966024359185610c0b565b0390a401610294565b60206103528284610952565b5101519060406103628285610952565b5101519161037560806102cf8487610952565b9260a06103828487610952565b5101519160c06103928588610952565b5101519273__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd576000936103d8916040519788958695631872482b60e31b87526024358d8035908901610ba4565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561042157600192610408575b5090506102b1565b8061041561041b92610769565b80610686565b38610400565b610835565b80610434600192898961092b565b356104528161044389356109da565b90600052602052604060002090565b546104af575b610466816104438935610a4c565b54610473575b500161027c565b61049d9061048633916104438a35610a85565b9060018060a01b0316600052602052604060002090565b6104a7815461098b565b90553861046c565b60406104bc838b8b61092b565b01356104db6104d333610486856104438d35610a13565b91825461099e565b9055610458565b806104156104ef92610769565b38610278565b61050e610503828a8a61092b565b336024358935610c7a565b6105188287610952565b526105238186610952565b506020806105318388610952565b510151610574575b508061054760019287610952565b51516105538286610952565b526040610561828b8b61092b565b013561056d8287610952565b520161020f565b90916105e990826105ba6105ae7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5015460018060a01b031690565b6001600160a01b031690565b816105c5878b610952565b5101516040516361fe24a960e11b8152808c01918252948592918391829160200190565b03915afa9182156104215760019361063f9361063992600091610646575b506040610614888c610952565b510152610621868a610952565b5101516040610630878b610952565b5101519061099e565b9061099e565b9190610539565b6106669150823d841161066c575b61065e81836107ed565b810190610966565b38610607565b503d610654565b8061041561068092610769565b386101e4565b60009103126100fd57565b346100fd5760003660031901126100fd57602060405160328152f35b346100fd576101003660031901126100fd576004356106cb816100ec565b604435906106d8826100ec565b6064356106e4816100ec565b6001600160401b039260c4358481116100fd57610705903690600401610102565b9160e4359586116100fd57610721610735963690600401610102565b95909460a435926084359260243590612990565b005b346100fd5760003660031901126100fd576020604051604b8152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161077c57604052565b610753565b60e081019081106001600160401b0382111761077c57604052565b60c081019081106001600160401b0382111761077c57604052565b604081019081106001600160401b0382111761077c57604052565b606081019081106001600160401b0382111761077c57604052565b90601f801991011681019081106001600160401b0382111761077c57604052565b600080516020613c5483398151915281526001600160a01b03909116602082015260400190565b6040513d6000823e3d90fd5b6001600160401b03811161077c5760051b60200190565b9061086282610841565b61086f60405191826107ed565b8281528092610880601f1991610841565b0190602036910137565b6040519061089782610781565b606060c083600081526000602082015260006040820152600083820152600060808201528260a08201520152565b906108cf82610841565b6108dc60405191826107ed565b82815280926108ed601f1991610841565b019060005b8281106108fe57505050565b60209061090961088a565b828285010152016108f2565b634e487b7160e01b600052603260045260246000fd5b919081101561094d5760051b81013590607e19813603018212156100fd570190565b610915565b805182101561094d5760209160051b010190565b908160209103126100fd575190565b634e487b7160e01b600052601160045260246000fd5b906001820180921161099957565b610975565b9190820180921161099957565b600080516020613c5483398151915281526001600160a01b039091166020820152604081019190915260600190565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b90815180825260208080930193019160005b828110610b50575050505090565b83516001600160a01b031685529381019392810192600101610b42565b90815180825260208080930193019160005b828110610b8d575050505090565b835160ff1685529381019392810192600101610b7f565b959293610bfa94610c08989692600080516020613c54833981519152895260018060a01b03948580921660208b0152166040890152606088015260808701521660a08501526101008060c0860152840190610b30565b9160e0818403910152610b6d565b90565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c6857565b60405163197ba25b60e01b8152600490fd5b9291610c8461088a565b50823590602084013592604085013594606081013590601e19813603018212156100fd57018035906001600160401b0382116100fd57602001908060051b360382136100fd57610cd99187878787878d6114d8565b979115610cea575050505050505090565b610cf49750611977565b602081519101fd5b9060405191828154918282526020928383019160005283600020936000905b828210610d3357505050610d31925003836107ed565b565b85546001600160a01b031684526001958601958895509381019390910190610d1b565b90604080518093805492610d7d610d71858560209181520190565b92600052602060002090565b9360005b81601f82011061119957610d31955492828210611183575b828210611169575b82821061114f575b828210611135575b82821061111b575b828210611101575b8282106110e7575b8282106110cd575b8282106110b6575b5081811061109e575b818110611086575b81811061106e575b818110611056575b81811061103e575b818110611026575b81811061100e575b818110610ff6575b818110610fde575b818110610fc6575b818110610fae575b818110610f96575b818110610f7e575b818110610f66575b818110610f4e575b818110610f36575b818110610f1e575b818110610f06575b818110610eee575b818110610ed6575b818110610ebe575b818110610ea6575b10610e98575b5003836107ed565b60f81c815260200138610e90565b60f083901c60ff168452926001906020019301610e8a565b60e883901c60ff168452926001906020019301610e82565b60e083901c60ff168452926001906020019301610e7a565b60d883901c60ff168452926001906020019301610e72565b60d083901c60ff168452926001906020019301610e6a565b60c883901c60ff168452926001906020019301610e62565b60c083901c60ff168452926001906020019301610e5a565b60b883901c60ff168452926001906020019301610e52565b60b083901c60ff168452926001906020019301610e4a565b60a883901c60ff168452926001906020019301610e42565b60a083901c60ff168452926001906020019301610e3a565b609883901c60ff168452926001906020019301610e32565b609083901c60ff168452926001906020019301610e2a565b608883901c60ff168452926001906020019301610e22565b608083901c60ff168452926001906020019301610e1a565b607883901c60ff168452926001906020019301610e12565b607083901c60ff168452926001906020019301610e0a565b606883901c60ff168452926001906020019301610e02565b606083901c60ff168452926001906020019301610dfa565b605883901c60ff168452926001906020019301610df2565b605083901c60ff168452926001906020019301610dea565b604883901c60ff168452926001906020019301610de2565b83901c60ff16845292600190602001930138610dd9565b603884901c60ff1685529093600190602001940190610dd1565b603084901c60ff1685529093600190602001940190610dc9565b602884901c60ff1685529093600190602001940190610dc1565b602084811c60ff1686529194909160019101940190610db9565b601884901c60ff1685529093600190602001940190610db1565b601084901c60ff1685529093600190602001940190610da9565b600884901c60ff1685529093600190602001940190610da1565b60ff841685529093600190602001940190610d99565b919350916001610400602092611437885461142c60ff6111bd8582851660ff169052565b61140561126a6113b58d611365896113158e6111e28184018a8d60081c1660ff169052565b6111f58584018a8d60101c1660ff169052565b888b610200606095611210878201858560181c1660ff169052565b6112256080958585888501921c1660ff169052565b6112cb60a09761123e898401878760281c1660ff169052565b61127b60c09b6112578d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6112906101208401878760481c1660ff169052565b6112a56101408401878760501c1660ff169052565b6112ba6101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6112e06101a08201858560681c1660ff169052565b6112f56101c08201858560701c1660ff169052565b61130a6101e08201858560781c1660ff169052565b01921c1660ff169052565b61132a6102208c01888b60881c1660ff169052565b61133f6102408c01888b60901c1660ff169052565b6113546102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b61137a6102a08a01868960a81c1660ff169052565b61138f6102c08a01868960b01c1660ff169052565b6113a46102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6113ca6103208801848760c81c1660ff169052565b6113df6103408801848760d01c1660ff169052565b6113f46103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b61141a6103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492610d81565b9060405161145481610781565b60c06114aa6006839560018060a01b03808254168652600182015416602086015260028101546040860152600381015460608601526004810154608086015261149f60058201610cfc565b60a086015201610d56565b910152565b908160011b918083046002149015171561099957565b8181029291811591840414171561099957565b9690929695919493956114e961088a565b976114ff6114fa8261044385610af7565b611447565b818a5280516001600160a01b031660808b01529660808801805160608c015288516001600160a01b039691959190871680156117525761153f90866117c1565b901561173657156117185761155e9161155a91848688611867565b1590565b6116ff5786156116e65761157582610443856109da565b54611587826104868561044388610a13565b54908881151592836116d2575b5050506116b957610486826104436115b26115b99561044388610a4c565b5495610a85565b549080151591826116a6575b505061169057518015159081611686575b50611671576060840151421061165c576040840151850361164757602084015191811691166001600160a01b0316036116345760c092611615916114c5565b602084015260a081015160a0840152015160c082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b90508311386115d6565b5060009663ae3586c560e01b9695509350505050565b6116b191925061098b565b1138806115c5565b50600099636d03a2e560e01b9998509650505050505050565b6116dd92935061099e565b11388881611594565b5060009963c6b949a960e01b9998509650505050505050565b5060009963e2cf60cb60e01b9998509650505050505050565b5060009b600162bed83560e01b03199b9a5098505050505050505050565b5060009c63915b8f1d60e01b9c9b509950505050505050505050565b5060009c634ed1072f60e11b9c9b509950505050505050505050565b6001600160401b03811161077c57601f01601f191660200190565b60405190602082018281106001600160401b0382111761077c5760405260008252565b908160209103126100fd5751610c08816100ec565b604051638da5cb5b60e01b6020820190815260048252929392906117e4816107b7565b6000928392839251915afa903d1561185f573d916118018361176e565b9261180f60405194856107ed565b83523d82602085013e5b158015611854575b61184d575080602080611839935183010191016117ac565b6001926001600160a01b0391821691161490565b9250508190565b506020825110611821565b606091611819565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e602052604090209193929190600052602052604060002060405190604082018281106001600160401b0382111761077c57604052600181549182845201549081602084015215908115611937575b5061192e5760405160609490941b6bffffffffffffffffffffffff191660208501908152610c089461192381603481015b03601f1981018352826107ed565b519020905190611e1a565b50505050600190565b9050421015386118e4565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260400190565b94929395919561198a8161044384610af7565b956001600160e01b03191694634ed1072f60e11b808714611c9d575063915b8f1d60e01b868114611c685750600162bed83560e01b0319868114611c4a575063e2cf60cb60e01b868114611c16575063c6b949a960e01b868114611bf75750636d03a2e560e01b868114611b81575063ae3586c560e01b91868314611b125750635bdd08f560e01b92505050838114611ae1575063456afd0b60e01b9050828114611ab85750631d6bbb8d60e11b828114611a895750632e834cbf60e11b9182149050611a5c57505050610c08611789565b611915611a756001610c0894015460018060a01b031690565b60405194859360208501526024840161195d565b60029390930154604051602081019490945260248401919091526044830152509050610c088160648101611915565b935050506003610c08910154916119156040519384926020840152602483019190602083019252565b92509350506119156004610c0893015460405194859360208501526024840160209093929193604081019481520152565b92975092509350610c0894506119159250611b308161044388610a4c565b5491611b4381610486846104438b610a85565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b95509290919650610c0895506119159350611b9f82610443896109da565b5492611bb281610486856104438c610a13565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b97505050505050505060405190602082015260048152610c08816107b7565b60405160208101919091526001600160a01b0390911660248201529650610c08955086945050604484019250611915915050565b9550505094505050611915611a75610c08935460018060a01b031690565b60405160208101919091526001600160a01b03909316602484015250909550610c089450859350506044830191506119159050565b95505091509450610c0893506119159150604051948593602085015260248401611942565b803b158015611cf5575b611cd35750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152611d1e816107d2565b519084617530fa6000513d82611d72575b5081611d68575b5080611d58575b80611d49575b15611ccc565b50611d5381611ddb565b611d43565b50611d6281611d7e565b15611d3d565b9050151538611d36565b60201115915038611d2f565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152611dae816107d2565b5191617530fa6000513d82611dcf575b5081611dc8575090565b9050151590565b60201115915038611dbe565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152611dae816107d2565b60001981146109995760010190565b9291909291600080925b828410611e3357505050501490565b90919293611e76908560051b83013580821115600014611e7e57604080516020810193845290810191909152611e6c8160608101611915565b5190205b94611e0b565b929190611e24565b60408051602081019283529081019290925290611e9e8160608101611915565b519020611e70565b9293611eb0610c36565b611eba8186613c0c565b6001600160a01b039233838516146124a65773__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd57604051635e157ccf60e11b815260008180611f05856004830161080e565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157612493575b50611f3385611cc2565b600080516020613c7483398151915254611f7790602090611f5c906001600160a01b03166105ae565b6040518093819263e985e9c560e01b8352886004840161195d565b0381888a165afa90811561042157600091612464575b501561244857611f9c82610858565b90611fa683610858565b611faf8461251c565b92600080611fe66105ae7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5015460018060a01b031690565b878c888d898d85881061229457505050505050505073__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5760006120379160405180938192635ea509b560e01b835288600484016109ab565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157612281575b5090859160005b89878c8184106121ed575050505061207d925033878a613613565b60005b838110612091575050505050505050565b61209b8184610952565b51519060206120aa8286610952565b51015160406120b98387610952565b5101519260606120c98488610952565b5101519160806120d98589610952565b5101519473__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5786956000948b61211f938f956040519a8b98899863981e8fc560e01b8a5260048a01612642565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af49182156104215786867f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886948a8c6121d18f604061219d8a6121858f829060019f9d8a9e6121da575b50610952565b515198602061219583838861256c565b01359461256c565b604080519889526001600160a01b038e1660208a015288019290925201356060860152911694339416929081906080820190565b0390a401612080565b806104156121e792610769565b3861217f565b958391600195969761221f8361048661220588610abe565b61221088878761256c565b35600052602052604060002090565b61223d6002604061223188878761256c565b013592019182546125ae565b80915515612255575b50505050500190869291612062565b612210612272946104869361226c61227798610abe565b9361256c565b6125d2565b898189898e612246565b8061041561228e92610769565b3861205b565b926122c1886122bb88958895839d9b9c986122b58560409d6122e99d61256c565b926126ad565b92610952565b526122cc838d610952565b506122d883838361256c565b356122e3848b610952565b5261256c565b01356122f58487610952565b5261232560208b8d8c612308888a610952565b5192604051809681958294627eeac760e11b845260048401611942565b0392165afa90811561042157600091612429575b506123448487610952565b5181106123ee575061237e60208061235c868b610952565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa918215610421576001926123c7926000916123cf575b5060406123a6878c610952565b51015261063960206123b8878c610952565b5101516040610630888d610952565b920190611fe6565b6123e8915060203d60201161066c5761065e81836107ed565b38612399565b896124258d928861240a88612403818c610952565b5192610952565b5190604051958695636906ef1760e11b87526004870161257c565b0390fd5b612442915060203d60201161066c5761065e81836107ed565b38612339565b60405163d65b0d6960e01b81528061242587866004840161195d565b612486915060203d60201161248c575b61247e81836107ed565b8101906124c7565b38611f8d565b503d612474565b806104156124a092610769565b38611f29565b60405163aac1ae8b60e01b81526001600160a01b0384166004820152602490fd5b908160209103126100fd575180151581036100fd5790565b6040519060a082018281106001600160401b0382111761077c57604052606060808360008152600060208201526000604082015282808201520152565b9061252682610841565b61253360405191826107ed565b8281528092612544601f1991610841565b019060005b82811061255557505050565b6020906125606124df565b82828501015201612549565b919081101561094d576060020190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b9190820391821161099957565b8181106125c6575050565b600081556001016125bb565b600560009182815582600182015582600282015582600382015560048101805484825580612628575b505001908154908083558161260f57505050565b602081610d3194601f935220910160051c8101906125bb565b61263b91855260208520908101906125bb565b38806125fb565b969361269e9591610c0899979394600080516020613c548339815191528a5260018060a01b03958680931660208c015260408b0152166060890152608088015260a08701521660c08501526101208060e0860152840190610b30565b91610100818403910152610b6d565b9290916126b86124df565b5081359060406020840135930135936126d585858585858b6126f0565b9791156126e6575050505050505090565b610cf4975061281b565b949392906126fc6124df565b958287528515612805576127169261044361048692610abe565b9060028201549081156127f057600383015480151590816127e5575b506127d05782546001600160a01b039182169116036127bc57826001830154036127a85783116127955761276b600592612787946114c5565b602085015261277c60048201610cfc565b606085015201610d56565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b905042101538612732565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b94929161282f816104868761044386610abe565b956001600160e01b0319169463c6b949a960e01b808714611bf75750630bac95f560e21b8681146129505750635493bdef60e11b918683146129275750632e834cbf60e11b925050508381146129095750631d6bbb8d60e11b90508281146128da57506364b7fccd60e11b91821490506128ae57505050610c08611789565b6119156002610c0893015460405194859360208501526024840160209093929193604081019481520152565b60019390930154604051602081019490945260248401919091526044830152509050610c088160648101611915565b9354909450610c0893925061191591506001600160a01b0316611a75565b9297509250935061191592506003610c0895015491604051968795602087015260248601610c0b565b60405160208101919091526001600160a01b0393841660248201526044810191909152911660648201529450610c08935084925050608482019050611915565b94919592969093976129a0610c36565b60409384519a6129af8c61079c565b6001600160a01b039788168c5260208c01968752978716858c0181815299881660608d0190815260808d019b8c5260a08d01958652999890338114612ce857508b51612a03906001600160a01b0316611cc2565b895173__$11854c5905aa23948096e0e4d7059bb9de$__93906001600160a01b031694843b156100fd578751635e157ccf60e11b8152600096879082908190612a4f906004830161080e565b0381895af4801561042157612cd5575b50843b156100e55787516376fb859760e01b8152868180612a868787878b60048601612d9a565b0381895af4801561042157612cc2575b50865115612cb157918d93916105ae9897969593612b0e6020612ad06105ae612abe8a612e62565b9a519a9e909a6001600160a01b031690565b600080516020613c7483398151915254612af2906001600160a01b03166105ae565b908c51808095819463e985e9c560e01b8352336004840161195d565b03915afa908115610421578891612c93575b5015612c6b57908f91612b718f94938f612b64908f8d90612b58612b4a865160018060a01b031690565b93516001600160a01b031690565b9051915192339061323e565b516001600160a01b031690565b8c5194516001600160a01b03169590873b15612c675790612bad949392918c519d8e9a8b998a9963981e8fc560e01b8b52339460048c01612dc1565b03915af4801561042157612c19612c09612bfb7fd6c105ec24ddd771e44ffc25e8a8603b6b78ba980a72645a26740b3d8437388599612c4f978a95612c54575b50516001600160a01b031690565b9b516001600160a01b031690565b955198516001600160a01b031690565b9851915192519788526001600160a01b039098166020880152604087015260608601529116949093169233929081906080820190565b0390a4565b80610415612c6192610769565b38612bed565b8980fd5b8f51895163d65b0d6960e01b8152908190612425906001600160a01b0316336004840161195d565b612cab915060203d811161248c5761247e81836107ed565b38612b20565b875163c6b949a960e01b8152600490fd5b80610415612ccf92610769565b38612a96565b80610415612ce292610769565b38612a5f565b8651630bfa508960e41b81526001600160a01b03919091166004820152602490fd5b91908082526020809201929160005b828110612d27575050505090565b9091929382806001928735612d3b816100ec565b848060a01b03168152019501910192919092612d19565b9190808252602080920192916000805b838210612d7157505050505090565b9091929394853560ff8116809103612d96578152830194830193929160010190612d62565b8280fd5b9290612db390610c089593604086526040860191612d0a565b926020818503910152612d52565b9896949093610c089a9894602094612e219894600080516020613c548339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191612d0a565b92610100818503910152612d52565b6001600160a01b0391821681526020810192909252918216604082015291166060820152608081019190915260a00190565b80516001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5146020526040902090919091612eb660208201938451600052602052604060002090565b90604093612ee785830193612ed1855160018060a01b031690565b60018060a01b0316600052602052604060002090565b6060830180519091612f01916001600160a01b0316612ed1565b93600285015492831561304057600686015480151580613036575b612ff25750508454612f4191506001600160a01b03165b91516001600160a01b031690565b6001600160a01b0381811690831603612fd757505060018301549160808101928351808203612fb657505060a00194855190828211612f965750505090612f8e610c0892518551906114c5565b9351906130a8565b5163587ced0f60e01b815260048101919091526024810191909152604490fd5b8751631d6bbb8d60e11b815260048101919091526024810191909152604490fd5b6124258751928392632e834cbf60e11b84526004840161195d565b61242590898561301e612f3361300e8b5160018060a01b031690565b965197516001600160a01b031690565b915163581fa6b560e01b815295869560048701612e30565b5042811115612f1c565b612425888461306b612f3361305b8a5160018060a01b031690565b955196516001600160a01b031690565b915163b9c59b5760e01b81526001600160a01b03948516600482015260248101959095528316604485015291909116606483015281906084820190565b919091600281019081549081851461311757908160056131139301549361310c6131046003840154966130ff60046130e98c6130e48a8d6125ae565b61099e565b9601988954966130f988856125ae565b936131b6565b6125ae565b9788946125ae565b90556125ae565b9055565b91929350506006600482019182549360018060a01b031982541682556000938480928160018601555581600384015555826005820155015590565b811561315c570490565b634e487b7160e01b600052601260045260246000fd5b1561317957565b60405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606490fd5b90916000198383099280830292838086109503948086039514613231579082916131e1868411613172565b096001821901821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505090610c089250613152565b60408051627eeac760e11b8082529296600496909594939092916001600160a01b03891691602091828180613276898b8f8401611942565b0381875afa9081156104215760009161349d575b5088811061347e57908291869493898c6132ae895198899384938885528401611942565b0381875afa9485156104215760009561345f575b50600080516020613c74833981519152546132e5906001600160a01b03166105ae565b803b156100fd57865163eb46c45b60e01b81526001600160a01b03808f16828f01908152818c166020820152908c166040820152606081018a9052608081018d905260c060a0820181905260009082018190529192839182908490829060e00103925af180156104215761344c575b508683898d61336d8a5194859384938985528401611942565b0381885afa9283156104215788958d8c92879460009761342d575b5061339e8b51998a958694859485528401611942565b03915afa938415610421578a93600095613408575b5050826133bf916125ae565b14928315936133f3575b5050506133d95750505050505050565b51638791019960e01b815296508695612425958701612e30565b6133fe92935061099e565b14153886816133c9565b6133bf92955084918161342692903d1061066c5761065e81836107ed565b94916133b3565b613445919750853d871161066c5761065e81836107ed565b9538613388565b8061041561345992610769565b38613354565b613477919550833d851161066c5761065e81836107ed565b93386132c2565b8961242588928b898f8a51968796636906ef1760e11b8852870161257c565b6134b49150833d851161066c5761065e81836107ed565b3861328a565b60209081818403126100fd578051906001600160401b0382116100fd57019180601f840112156100fd5782516134ef81610841565b936134fd60405195866107ed565b818552838086019260051b8201019283116100fd578301905b828210613524575050505090565b81518152908301908301613516565b90815180825260208080930193019160005b828110613553575050505090565b835185529381019392810192600101613545565b9092916040820191604081528451809352606081019260208096019060005b8181106135a057505050610c089394818403910152613533565b82516001600160a01b031686529487019491870191600101613586565b9360209592613602946135f49360018060a01b0392838092168952168888015216604086015260c0606086015260c0850190613533565b908382036080850152613533565b9060a0818303910152600081520190565b835190949093926001600160a01b038616929091613638613633876114af565b610858565b94613645613633886114af565b809660005b8981106138c257506040968751916313849cfd60e21b918284528084808460049e8f83019161367892613567565b03815a93600094fa938415610421576000946138a7575b5060005b8c81106138375750600080516020613c74833981519152546136bd906001600160a01b03166105ae565b92833b156100fd576000898f958c968f8f906136ef8e8e8894519c8d9889978896637ee7f69b60e01b885287016135bd565b03925af1908115610421576000948d92613824575b5061371a8c519788958694859485528401613567565b03915afa91821561042157600092613801575b5060005b898110613745575050505050505050505050565b61374e816114af565b6137588185610952565b516137786137668386610952565b51613771858a610952565b51906125ae565b14908115916137bd575b5061378f57600101613731565b61242598995080925061240391506137a693610952565b519351638791019960e01b81529687968701612e30565b90506137f96137e76137e16137da6137d48561098b565b88610952565b519361098b565b85610952565b516137f28489610952565b519061099e565b141538613782565b61381d91923d8091833e61381581836107ed565b8101906134ba565b903861372d565b8061041561383192610769565b38613704565b613840816114af565b61384a8187610952565b51613855838b610952565b51116138645750600101613693565b8c8f8d888c612425938f96613890908f8a6138828161388993610952565b5195610952565b5194610952565b519351636906ef1760e11b8152968796870161257c565b6138bb91943d8091833e61381581836107ed565b923861368f565b60019192506138d0816114af565b6138ed876138de8387610952565b6001600160a01b039091169052565b613903886138de6138fd8461098b565b87610952565b61390d8286610952565b51613918828c610952565b526139366139306139298488610952565b519261098b565b8b610952565b520190879161364a565b6001600160a01b039091168152606060208201819052610c0893919261396891840190613533565b916040818403910152613533565b909260018060a01b0382169261398d815186613a8a565b94604051936313849cfd60e21b958686526000978887806139b2888560048401613567565b0381855afa968715610421578997613a6e575b50813b15613a6a57604051630d4498e760e21b8152918983806139ed8a8a8a60048501613940565b038183855af191821561042157613a1d998b948894613a57575b506040519a8b9485938493845260048401613567565b03915afa9586156104215787610d319897613a3a575b5050613ac2565b613a4f9297503d8091833e61381581836107ed565b943880613a33565b80610415613a6492610769565b38613a07565b8880fd5b613a839197503d808b833e61381581836107ed565b95386139c5565b9190613a9581610858565b9260005b828110613aa557505050565b80613ab260019287610952565b828060a01b038416905201613a99565b939092959460005b8351811015613b3a57613add8183610952565b51613ae88285610952565b5190613af4838b610952565b5182018092116109995703613b0b57600101613aca565b8561242586613b1f846138828d968a610952565b5190604051948594631b3c965960e21b865260048601610c0b565b5050505050509050565b613b4d82613b98565b60015b828110613b5c57505050565b60001981019080821161099957613b8e613b7a613b9393868661092b565b35613b8683878761092b565b359083613bda565b611e0b565b613b50565b8015613bc857604b8111613ba95750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b919080821115613be957505050565b606493506040519263f48f718f60e01b8452600484015260248301526044820152fd5b613c1582613b98565b60015b828110613c2457505050565b60001981019080821161099957613b8e613c42613c4e93868661256c565b35613b8683878761256c565b613c1856fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa26469706673582212204142d73195bc2cde54f6ce7e87564da4f5a2a92d884ce3782b9531bf38e5d7a064736f6c63430008120033","sourceMap":"929:15850:172:-:0;;;;;;;509:4:168;501:13;;929:15850:172;;;;;;501:13:168;929:15850:172;;;;;;;;;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":433,"length":20},{"start":493,"length":20},{"start":578,"length":20},{"start":641,"length":20},{"start":961,"length":20},{"start":1029,"length":20},{"start":7927,"length":20},{"start":7986,"length":20},{"start":8230,"length":20},{"start":8292,"length":20},{"start":8456,"length":20},{"start":8524,"length":20},{"start":10800,"length":20}]}}},"deployedBytecode":{"object":"0x6080604052600436101561001257600080fd5b6000803560e01c9081630a6ce3131461006a575080637777e6d714610065578063a3eaf4d914610060578063b8e6b50f1461005b5763cfdbf2541461005657600080fd5b610737565b6106ad565b610691565b610132565b60803660031901126100e957600435610082816100ec565b60243561008e816100ec565b6044359161009b836100ec565b606435926001600160401b03928385116100e557366023860112156100e55784600401359384116100e55736602460608602870101116100e55760246100e2950192611ea6565b80f35b8580fd5b80fd5b6001600160a01b038116036100fd57565b600080fd5b9181601f840112156100fd578235916001600160401b0383116100fd576020808501948460051b0101116100fd57565b60603660031901126100fd57600461014a81356100ec565b6101556024356100ec565b6044356001600160401b0381116100fd576101739036908301610102565b9161017c610c36565b6101868383613b44565b73__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd57604051635e157ccf60e11b8152600081806101c060243586830161080e565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157610673575b506101ef8135611cc2565b6101f883610858565b61020184610858565b61020a856108c5565b916000805b8781106104f5575073__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5760006102549160405180938192635ea509b560e01b83526024358a84016109ab565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af48015610421576104e2575b5060005b86811061042657509061029191338535613976565b60005b84811061029d57005b60206102a98284610952565b510151610346575b806102be60019284610952565b51516102de60806102cf8487610952565b5101516001600160a01b031690565b9060406102ec848a8a61092b565b01357f62f45af1ef781f07a7efa5cc0678ca0c3cdaed8c8bbe87e057d7eb5bcff7a18c61033d602061031f878d8d61092b565b013560405191829133978a8060a01b038d3516966024359185610c0b565b0390a401610294565b60206103528284610952565b5101519060406103628285610952565b5101519161037560806102cf8487610952565b9260a06103828487610952565b5101519160c06103928588610952565b5101519273__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd576000936103d8916040519788958695631872482b60e31b87526024358d8035908901610ba4565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af491821561042157600192610408575b5090506102b1565b8061041561041b92610769565b80610686565b38610400565b610835565b80610434600192898961092b565b356104528161044389356109da565b90600052602052604060002090565b546104af575b610466816104438935610a4c565b54610473575b500161027c565b61049d9061048633916104438a35610a85565b9060018060a01b0316600052602052604060002090565b6104a7815461098b565b90553861046c565b60406104bc838b8b61092b565b01356104db6104d333610486856104438d35610a13565b91825461099e565b9055610458565b806104156104ef92610769565b38610278565b61050e610503828a8a61092b565b336024358935610c7a565b6105188287610952565b526105238186610952565b506020806105318388610952565b510151610574575b508061054760019287610952565b51516105538286610952565b526040610561828b8b61092b565b013561056d8287610952565b520161020f565b90916105e990826105ba6105ae7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5015460018060a01b031690565b6001600160a01b031690565b816105c5878b610952565b5101516040516361fe24a960e11b8152808c01918252948592918391829160200190565b03915afa9182156104215760019361063f9361063992600091610646575b506040610614888c610952565b510152610621868a610952565b5101516040610630878b610952565b5101519061099e565b9061099e565b9190610539565b6106669150823d841161066c575b61065e81836107ed565b810190610966565b38610607565b503d610654565b8061041561068092610769565b386101e4565b60009103126100fd57565b346100fd5760003660031901126100fd57602060405160328152f35b346100fd576101003660031901126100fd576004356106cb816100ec565b604435906106d8826100ec565b6064356106e4816100ec565b6001600160401b039260c4358481116100fd57610705903690600401610102565b9160e4359586116100fd57610721610735963690600401610102565b95909460a435926084359260243590612990565b005b346100fd5760003660031901126100fd576020604051604b8152f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161077c57604052565b610753565b60e081019081106001600160401b0382111761077c57604052565b60c081019081106001600160401b0382111761077c57604052565b604081019081106001600160401b0382111761077c57604052565b606081019081106001600160401b0382111761077c57604052565b90601f801991011681019081106001600160401b0382111761077c57604052565b600080516020613c5483398151915281526001600160a01b03909116602082015260400190565b6040513d6000823e3d90fd5b6001600160401b03811161077c5760051b60200190565b9061086282610841565b61086f60405191826107ed565b8281528092610880601f1991610841565b0190602036910137565b6040519061089782610781565b606060c083600081526000602082015260006040820152600083820152600060808201528260a08201520152565b906108cf82610841565b6108dc60405191826107ed565b82815280926108ed601f1991610841565b019060005b8281106108fe57505050565b60209061090961088a565b828285010152016108f2565b634e487b7160e01b600052603260045260246000fd5b919081101561094d5760051b81013590607e19813603018212156100fd570190565b610915565b805182101561094d5760209160051b010190565b908160209103126100fd575190565b634e487b7160e01b600052601160045260246000fd5b906001820180921161099957565b610975565b9190820180921161099957565b600080516020613c5483398151915281526001600160a01b039091166020820152604081019190915260600190565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50f6020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5106020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5116020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5126020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5136020526040902090565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50d6020526040902090565b90815180825260208080930193019160005b828110610b50575050505090565b83516001600160a01b031685529381019392810192600101610b42565b90815180825260208080930193019160005b828110610b8d575050505090565b835160ff1685529381019392810192600101610b7f565b959293610bfa94610c08989692600080516020613c54833981519152895260018060a01b03948580921660208b0152166040890152606088015260808701521660a08501526101008060c0860152840190610b30565b9160e0818403910152610b6d565b90565b6001600160a01b03918216815260208101929092529091166040820152606081019190915260800190565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c6857565b60405163197ba25b60e01b8152600490fd5b9291610c8461088a565b50823590602084013592604085013594606081013590601e19813603018212156100fd57018035906001600160401b0382116100fd57602001908060051b360382136100fd57610cd99187878787878d6114d8565b979115610cea575050505050505090565b610cf49750611977565b602081519101fd5b9060405191828154918282526020928383019160005283600020936000905b828210610d3357505050610d31925003836107ed565b565b85546001600160a01b031684526001958601958895509381019390910190610d1b565b90604080518093805492610d7d610d71858560209181520190565b92600052602060002090565b9360005b81601f82011061119957610d31955492828210611183575b828210611169575b82821061114f575b828210611135575b82821061111b575b828210611101575b8282106110e7575b8282106110cd575b8282106110b6575b5081811061109e575b818110611086575b81811061106e575b818110611056575b81811061103e575b818110611026575b81811061100e575b818110610ff6575b818110610fde575b818110610fc6575b818110610fae575b818110610f96575b818110610f7e575b818110610f66575b818110610f4e575b818110610f36575b818110610f1e575b818110610f06575b818110610eee575b818110610ed6575b818110610ebe575b818110610ea6575b10610e98575b5003836107ed565b60f81c815260200138610e90565b60f083901c60ff168452926001906020019301610e8a565b60e883901c60ff168452926001906020019301610e82565b60e083901c60ff168452926001906020019301610e7a565b60d883901c60ff168452926001906020019301610e72565b60d083901c60ff168452926001906020019301610e6a565b60c883901c60ff168452926001906020019301610e62565b60c083901c60ff168452926001906020019301610e5a565b60b883901c60ff168452926001906020019301610e52565b60b083901c60ff168452926001906020019301610e4a565b60a883901c60ff168452926001906020019301610e42565b60a083901c60ff168452926001906020019301610e3a565b609883901c60ff168452926001906020019301610e32565b609083901c60ff168452926001906020019301610e2a565b608883901c60ff168452926001906020019301610e22565b608083901c60ff168452926001906020019301610e1a565b607883901c60ff168452926001906020019301610e12565b607083901c60ff168452926001906020019301610e0a565b606883901c60ff168452926001906020019301610e02565b606083901c60ff168452926001906020019301610dfa565b605883901c60ff168452926001906020019301610df2565b605083901c60ff168452926001906020019301610dea565b604883901c60ff168452926001906020019301610de2565b83901c60ff16845292600190602001930138610dd9565b603884901c60ff1685529093600190602001940190610dd1565b603084901c60ff1685529093600190602001940190610dc9565b602884901c60ff1685529093600190602001940190610dc1565b602084811c60ff1686529194909160019101940190610db9565b601884901c60ff1685529093600190602001940190610db1565b601084901c60ff1685529093600190602001940190610da9565b600884901c60ff1685529093600190602001940190610da1565b60ff841685529093600190602001940190610d99565b919350916001610400602092611437885461142c60ff6111bd8582851660ff169052565b61140561126a6113b58d611365896113158e6111e28184018a8d60081c1660ff169052565b6111f58584018a8d60101c1660ff169052565b888b610200606095611210878201858560181c1660ff169052565b6112256080958585888501921c1660ff169052565b6112cb60a09761123e898401878760281c1660ff169052565b61127b60c09b6112578d8601898960301c1660ff169052565b60e09e8f8601898960381c1660ff169052565b87876101008701921c1660ff169052565b6112906101208401878760481c1660ff169052565b6112a56101408401878760501c1660ff169052565b6112ba6101608401878760581c1660ff169052565b85856101808501921c1660ff169052565b6112e06101a08201858560681c1660ff169052565b6112f56101c08201858560701c1660ff169052565b61130a6101e08201858560781c1660ff169052565b01921c1660ff169052565b61132a6102208c01888b60881c1660ff169052565b61133f6102408c01888b60901c1660ff169052565b6113546102608c01888b60981c1660ff169052565b86896102808d01921c1660ff169052565b61137a6102a08a01868960a81c1660ff169052565b61138f6102c08a01868960b01c1660ff169052565b6113a46102e08a01868960b81c1660ff169052565b84876103008b01921c1660ff169052565b6113ca6103208801848760c81c1660ff169052565b6113df6103408801848760d01c1660ff169052565b6113f46103608801848760d81c1660ff169052565b82856103808901921c1660ff169052565b61141a6103a08601828560e81c1660ff169052565b6103c08501908360f01c1660ff169052565b60f81c6103e0830152565b0195019101918693919492610d81565b9060405161145481610781565b60c06114aa6006839560018060a01b03808254168652600182015416602086015260028101546040860152600381015460608601526004810154608086015261149f60058201610cfc565b60a086015201610d56565b910152565b908160011b918083046002149015171561099957565b8181029291811591840414171561099957565b9690929695919493956114e961088a565b976114ff6114fa8261044385610af7565b611447565b818a5280516001600160a01b031660808b01529660808801805160608c015288516001600160a01b039691959190871680156117525761153f90866117c1565b901561173657156117185761155e9161155a91848688611867565b1590565b6116ff5786156116e65761157582610443856109da565b54611587826104868561044388610a13565b54908881151592836116d2575b5050506116b957610486826104436115b26115b99561044388610a4c565b5495610a85565b549080151591826116a6575b505061169057518015159081611686575b50611671576060840151421061165c576040840151850361164757602084015191811691166001600160a01b0316036116345760c092611615916114c5565b602084015260a081015160a0840152015160c082015260019160009190565b50600093632e834cbf60e11b9392509050565b50600095631d6bbb8d60e11b95945092505050565b5060009563456afd0b60e01b95945092505050565b50600095635bdd08f560e01b95945092505050565b90508311386115d6565b5060009663ae3586c560e01b9695509350505050565b6116b191925061098b565b1138806115c5565b50600099636d03a2e560e01b9998509650505050505050565b6116dd92935061099e565b11388881611594565b5060009963c6b949a960e01b9998509650505050505050565b5060009963e2cf60cb60e01b9998509650505050505050565b5060009b600162bed83560e01b03199b9a5098505050505050505050565b5060009c63915b8f1d60e01b9c9b509950505050505050505050565b5060009c634ed1072f60e11b9c9b509950505050505050505050565b6001600160401b03811161077c57601f01601f191660200190565b60405190602082018281106001600160401b0382111761077c5760405260008252565b908160209103126100fd5751610c08816100ec565b604051638da5cb5b60e01b6020820190815260048252929392906117e4816107b7565b6000928392839251915afa903d1561185f573d916118018361176e565b9261180f60405194856107ed565b83523d82602085013e5b158015611854575b61184d575080602080611839935183010191016117ac565b6001926001600160a01b0391821691161490565b9250508190565b506020825110611821565b606091611819565b6001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50e602052604090209193929190600052602052604060002060405190604082018281106001600160401b0382111761077c57604052600181549182845201549081602084015215908115611937575b5061192e5760405160609490941b6bffffffffffffffffffffffff191660208501908152610c089461192381603481015b03601f1981018352826107ed565b519020905190611e1a565b50505050600190565b9050421015386118e4565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b0391821681529116602082015260400190565b94929395919561198a8161044384610af7565b956001600160e01b03191694634ed1072f60e11b808714611c9d575063915b8f1d60e01b868114611c685750600162bed83560e01b0319868114611c4a575063e2cf60cb60e01b868114611c16575063c6b949a960e01b868114611bf75750636d03a2e560e01b868114611b81575063ae3586c560e01b91868314611b125750635bdd08f560e01b92505050838114611ae1575063456afd0b60e01b9050828114611ab85750631d6bbb8d60e11b828114611a895750632e834cbf60e11b9182149050611a5c57505050610c08611789565b611915611a756001610c0894015460018060a01b031690565b60405194859360208501526024840161195d565b60029390930154604051602081019490945260248401919091526044830152509050610c088160648101611915565b935050506003610c08910154916119156040519384926020840152602483019190602083019252565b92509350506119156004610c0893015460405194859360208501526024840160209093929193604081019481520152565b92975092509350610c0894506119159250611b308161044388610a4c565b5491611b4381610486846104438b610a85565b5491604051978896602088015260248701919594939060809360a084019760018060a01b038093168552602085015216604083015260608201520152565b95509290919650610c0895506119159350611b9f82610443896109da565b5492611bb281610486856104438c610a13565b5492604051988997602089015260248801929060a09491979695929760c0850198600180881b0380931686526020860152166040840152606083015260808201520152565b97505050505050505060405190602082015260048152610c08816107b7565b60405160208101919091526001600160a01b0390911660248201529650610c08955086945050604484019250611915915050565b9550505094505050611915611a75610c08935460018060a01b031690565b60405160208101919091526001600160a01b03909316602484015250909550610c089450859350506044830191506119159050565b95505091509450610c0893506119159150604051948593602085015260248401611942565b803b158015611cf5575b611cd35750565b604051630f20e39960e21b81526001600160a01b039091166004820152602490fd5b5060206000604051828101906301ffc9a760e01b808352602482015260248152611d1e816107d2565b519084617530fa6000513d82611d72575b5081611d68575b5080611d58575b80611d49575b15611ccc565b50611d5381611ddb565b611d43565b50611d6281611d7e565b15611d3d565b9050151538611d36565b60201115915038611d2f565b6000602091604051838101906301ffc9a760e01b825263ffffffff60e01b602482015260248152611dae816107d2565b5191617530fa6000513d82611dcf575b5081611dc8575090565b9050151590565b60201115915038611dbe565b6000602091604051838101906301ffc9a760e01b8252636cdb3d1360e11b602482015260248152611dae816107d2565b60001981146109995760010190565b9291909291600080925b828410611e3357505050501490565b90919293611e76908560051b83013580821115600014611e7e57604080516020810193845290810191909152611e6c8160608101611915565b5190205b94611e0b565b929190611e24565b60408051602081019283529081019290925290611e9e8160608101611915565b519020611e70565b9293611eb0610c36565b611eba8186613c0c565b6001600160a01b039233838516146124a65773__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd57604051635e157ccf60e11b815260008180611f05856004830161080e565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157612493575b50611f3385611cc2565b600080516020613c7483398151915254611f7790602090611f5c906001600160a01b03166105ae565b6040518093819263e985e9c560e01b8352886004840161195d565b0381888a165afa90811561042157600091612464575b501561244857611f9c82610858565b90611fa683610858565b611faf8461251c565b92600080611fe66105ae7f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5015460018060a01b031690565b878c888d898d85881061229457505050505050505073__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5760006120379160405180938192635ea509b560e01b835288600484016109ab565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af4801561042157612281575b5090859160005b89878c8184106121ed575050505061207d925033878a613613565b60005b838110612091575050505050505050565b61209b8184610952565b51519060206120aa8286610952565b51015160406120b98387610952565b5101519260606120c98488610952565b5101519160806120d98589610952565b5101519473__$11854c5905aa23948096e0e4d7059bb9de$__3b156100fd5786956000948b61211f938f956040519a8b98899863981e8fc560e01b8a5260048a01612642565b038173__$11854c5905aa23948096e0e4d7059bb9de$__5af49182156104215786867f12bc30bbc1c37d31b51d08cc6254da96f9626f008933e693e85e93074d7886948a8c6121d18f604061219d8a6121858f829060019f9d8a9e6121da575b50610952565b515198602061219583838861256c565b01359461256c565b604080519889526001600160a01b038e1660208a015288019290925201356060860152911694339416929081906080820190565b0390a401612080565b806104156121e792610769565b3861217f565b958391600195969761221f8361048661220588610abe565b61221088878761256c565b35600052602052604060002090565b61223d6002604061223188878761256c565b013592019182546125ae565b80915515612255575b50505050500190869291612062565b612210612272946104869361226c61227798610abe565b9361256c565b6125d2565b898189898e612246565b8061041561228e92610769565b3861205b565b926122c1886122bb88958895839d9b9c986122b58560409d6122e99d61256c565b926126ad565b92610952565b526122cc838d610952565b506122d883838361256c565b356122e3848b610952565b5261256c565b01356122f58487610952565b5261232560208b8d8c612308888a610952565b5192604051809681958294627eeac760e11b845260048401611942565b0392165afa90811561042157600091612429575b506123448487610952565b5181106123ee575061237e60208061235c868b610952565b510151604051809381926361fe24a960e11b8352600483019190602083019252565b0381865afa918215610421576001926123c7926000916123cf575b5060406123a6878c610952565b51015261063960206123b8878c610952565b5101516040610630888d610952565b920190611fe6565b6123e8915060203d60201161066c5761065e81836107ed565b38612399565b896124258d928861240a88612403818c610952565b5192610952565b5190604051958695636906ef1760e11b87526004870161257c565b0390fd5b612442915060203d60201161066c5761065e81836107ed565b38612339565b60405163d65b0d6960e01b81528061242587866004840161195d565b612486915060203d60201161248c575b61247e81836107ed565b8101906124c7565b38611f8d565b503d612474565b806104156124a092610769565b38611f29565b60405163aac1ae8b60e01b81526001600160a01b0384166004820152602490fd5b908160209103126100fd575180151581036100fd5790565b6040519060a082018281106001600160401b0382111761077c57604052606060808360008152600060208201526000604082015282808201520152565b9061252682610841565b61253360405191826107ed565b8281528092612544601f1991610841565b019060005b82811061255557505050565b6020906125606124df565b82828501015201612549565b919081101561094d576060020190565b6001600160a01b0391821681529116602082015260408101919091526060810191909152608081019190915260a00190565b9190820391821161099957565b8181106125c6575050565b600081556001016125bb565b600560009182815582600182015582600282015582600382015560048101805484825580612628575b505001908154908083558161260f57505050565b602081610d3194601f935220910160051c8101906125bb565b61263b91855260208520908101906125bb565b38806125fb565b969361269e9591610c0899979394600080516020613c548339815191528a5260018060a01b03958680931660208c015260408b0152166060890152608088015260a08701521660c08501526101208060e0860152840190610b30565b91610100818403910152610b6d565b9290916126b86124df565b5081359060406020840135930135936126d585858585858b6126f0565b9791156126e6575050505050505090565b610cf4975061281b565b949392906126fc6124df565b958287528515612805576127169261044361048692610abe565b9060028201549081156127f057600383015480151590816127e5575b506127d05782546001600160a01b039182169116036127bc57826001830154036127a85783116127955761276b600592612787946114c5565b602085015261277c60048201610cfc565b606085015201610d56565b608082015260019160009190565b506000936364b7fccd60e11b9392509050565b50600094631d6bbb8d60e11b949350915050565b50600094632e834cbf60e11b949350915050565b50600095635493bdef60e11b95945092505050565b905042101538612732565b50600095630bac95f560e21b95945092505050565b5060009663c6b949a960e01b9695509350505050565b94929161282f816104868761044386610abe565b956001600160e01b0319169463c6b949a960e01b808714611bf75750630bac95f560e21b8681146129505750635493bdef60e11b918683146129275750632e834cbf60e11b925050508381146129095750631d6bbb8d60e11b90508281146128da57506364b7fccd60e11b91821490506128ae57505050610c08611789565b6119156002610c0893015460405194859360208501526024840160209093929193604081019481520152565b60019390930154604051602081019490945260248401919091526044830152509050610c088160648101611915565b9354909450610c0893925061191591506001600160a01b0316611a75565b9297509250935061191592506003610c0895015491604051968795602087015260248601610c0b565b60405160208101919091526001600160a01b0393841660248201526044810191909152911660648201529450610c08935084925050608482019050611915565b94919592969093976129a0610c36565b60409384519a6129af8c61079c565b6001600160a01b039788168c5260208c01968752978716858c0181815299881660608d0190815260808d019b8c5260a08d01958652999890338114612ce857508b51612a03906001600160a01b0316611cc2565b895173__$11854c5905aa23948096e0e4d7059bb9de$__93906001600160a01b031694843b156100fd578751635e157ccf60e11b8152600096879082908190612a4f906004830161080e565b0381895af4801561042157612cd5575b50843b156100e55787516376fb859760e01b8152868180612a868787878b60048601612d9a565b0381895af4801561042157612cc2575b50865115612cb157918d93916105ae9897969593612b0e6020612ad06105ae612abe8a612e62565b9a519a9e909a6001600160a01b031690565b600080516020613c7483398151915254612af2906001600160a01b03166105ae565b908c51808095819463e985e9c560e01b8352336004840161195d565b03915afa908115610421578891612c93575b5015612c6b57908f91612b718f94938f612b64908f8d90612b58612b4a865160018060a01b031690565b93516001600160a01b031690565b9051915192339061323e565b516001600160a01b031690565b8c5194516001600160a01b03169590873b15612c675790612bad949392918c519d8e9a8b998a9963981e8fc560e01b8b52339460048c01612dc1565b03915af4801561042157612c19612c09612bfb7fd6c105ec24ddd771e44ffc25e8a8603b6b78ba980a72645a26740b3d8437388599612c4f978a95612c54575b50516001600160a01b031690565b9b516001600160a01b031690565b955198516001600160a01b031690565b9851915192519788526001600160a01b039098166020880152604087015260608601529116949093169233929081906080820190565b0390a4565b80610415612c6192610769565b38612bed565b8980fd5b8f51895163d65b0d6960e01b8152908190612425906001600160a01b0316336004840161195d565b612cab915060203d811161248c5761247e81836107ed565b38612b20565b875163c6b949a960e01b8152600490fd5b80610415612ccf92610769565b38612a96565b80610415612ce292610769565b38612a5f565b8651630bfa508960e41b81526001600160a01b03919091166004820152602490fd5b91908082526020809201929160005b828110612d27575050505090565b9091929382806001928735612d3b816100ec565b848060a01b03168152019501910192919092612d19565b9190808252602080920192916000805b838210612d7157505050505090565b9091929394853560ff8116809103612d96578152830194830193929160010190612d62565b8280fd5b9290612db390610c089593604086526040860191612d0a565b926020818503910152612d52565b9896949093610c089a9894602094612e219894600080516020613c548339815191528d528c60018060a01b03978880951691015260408d01521660608b015260808a015260a08901521660c08701526101208060e0880152860191612d0a565b92610100818503910152612d52565b6001600160a01b0391821681526020810192909252918216604082015291166060820152608081019190915260a00190565b80516001600160a01b031660009081527f5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5146020526040902090919091612eb660208201938451600052602052604060002090565b90604093612ee785830193612ed1855160018060a01b031690565b60018060a01b0316600052602052604060002090565b6060830180519091612f01916001600160a01b0316612ed1565b93600285015492831561304057600686015480151580613036575b612ff25750508454612f4191506001600160a01b03165b91516001600160a01b031690565b6001600160a01b0381811690831603612fd757505060018301549160808101928351808203612fb657505060a00194855190828211612f965750505090612f8e610c0892518551906114c5565b9351906130a8565b5163587ced0f60e01b815260048101919091526024810191909152604490fd5b8751631d6bbb8d60e11b815260048101919091526024810191909152604490fd5b6124258751928392632e834cbf60e11b84526004840161195d565b61242590898561301e612f3361300e8b5160018060a01b031690565b965197516001600160a01b031690565b915163581fa6b560e01b815295869560048701612e30565b5042811115612f1c565b612425888461306b612f3361305b8a5160018060a01b031690565b955196516001600160a01b031690565b915163b9c59b5760e01b81526001600160a01b03948516600482015260248101959095528316604485015291909116606483015281906084820190565b919091600281019081549081851461311757908160056131139301549361310c6131046003840154966130ff60046130e98c6130e48a8d6125ae565b61099e565b9601988954966130f988856125ae565b936131b6565b6125ae565b9788946125ae565b90556125ae565b9055565b91929350506006600482019182549360018060a01b031982541682556000938480928160018601555581600384015555826005820155015590565b811561315c570490565b634e487b7160e01b600052601260045260246000fd5b1561317957565b60405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606490fd5b90916000198383099280830292838086109503948086039514613231579082916131e1868411613172565b096001821901821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505090610c089250613152565b60408051627eeac760e11b8082529296600496909594939092916001600160a01b03891691602091828180613276898b8f8401611942565b0381875afa9081156104215760009161349d575b5088811061347e57908291869493898c6132ae895198899384938885528401611942565b0381875afa9485156104215760009561345f575b50600080516020613c74833981519152546132e5906001600160a01b03166105ae565b803b156100fd57865163eb46c45b60e01b81526001600160a01b03808f16828f01908152818c166020820152908c166040820152606081018a9052608081018d905260c060a0820181905260009082018190529192839182908490829060e00103925af180156104215761344c575b508683898d61336d8a5194859384938985528401611942565b0381885afa9283156104215788958d8c92879460009761342d575b5061339e8b51998a958694859485528401611942565b03915afa938415610421578a93600095613408575b5050826133bf916125ae565b14928315936133f3575b5050506133d95750505050505050565b51638791019960e01b815296508695612425958701612e30565b6133fe92935061099e565b14153886816133c9565b6133bf92955084918161342692903d1061066c5761065e81836107ed565b94916133b3565b613445919750853d871161066c5761065e81836107ed565b9538613388565b8061041561345992610769565b38613354565b613477919550833d851161066c5761065e81836107ed565b93386132c2565b8961242588928b898f8a51968796636906ef1760e11b8852870161257c565b6134b49150833d851161066c5761065e81836107ed565b3861328a565b60209081818403126100fd578051906001600160401b0382116100fd57019180601f840112156100fd5782516134ef81610841565b936134fd60405195866107ed565b818552838086019260051b8201019283116100fd578301905b828210613524575050505090565b81518152908301908301613516565b90815180825260208080930193019160005b828110613553575050505090565b835185529381019392810192600101613545565b9092916040820191604081528451809352606081019260208096019060005b8181106135a057505050610c089394818403910152613533565b82516001600160a01b031686529487019491870191600101613586565b9360209592613602946135f49360018060a01b0392838092168952168888015216604086015260c0606086015260c0850190613533565b908382036080850152613533565b9060a0818303910152600081520190565b835190949093926001600160a01b038616929091613638613633876114af565b610858565b94613645613633886114af565b809660005b8981106138c257506040968751916313849cfd60e21b918284528084808460049e8f83019161367892613567565b03815a93600094fa938415610421576000946138a7575b5060005b8c81106138375750600080516020613c74833981519152546136bd906001600160a01b03166105ae565b92833b156100fd576000898f958c968f8f906136ef8e8e8894519c8d9889978896637ee7f69b60e01b885287016135bd565b03925af1908115610421576000948d92613824575b5061371a8c519788958694859485528401613567565b03915afa91821561042157600092613801575b5060005b898110613745575050505050505050505050565b61374e816114af565b6137588185610952565b516137786137668386610952565b51613771858a610952565b51906125ae565b14908115916137bd575b5061378f57600101613731565b61242598995080925061240391506137a693610952565b519351638791019960e01b81529687968701612e30565b90506137f96137e76137e16137da6137d48561098b565b88610952565b519361098b565b85610952565b516137f28489610952565b519061099e565b141538613782565b61381d91923d8091833e61381581836107ed565b8101906134ba565b903861372d565b8061041561383192610769565b38613704565b613840816114af565b61384a8187610952565b51613855838b610952565b51116138645750600101613693565b8c8f8d888c612425938f96613890908f8a6138828161388993610952565b5195610952565b5194610952565b519351636906ef1760e11b8152968796870161257c565b6138bb91943d8091833e61381581836107ed565b923861368f565b60019192506138d0816114af565b6138ed876138de8387610952565b6001600160a01b039091169052565b613903886138de6138fd8461098b565b87610952565b61390d8286610952565b51613918828c610952565b526139366139306139298488610952565b519261098b565b8b610952565b520190879161364a565b6001600160a01b039091168152606060208201819052610c0893919261396891840190613533565b916040818403910152613533565b909260018060a01b0382169261398d815186613a8a565b94604051936313849cfd60e21b958686526000978887806139b2888560048401613567565b0381855afa968715610421578997613a6e575b50813b15613a6a57604051630d4498e760e21b8152918983806139ed8a8a8a60048501613940565b038183855af191821561042157613a1d998b948894613a57575b506040519a8b9485938493845260048401613567565b03915afa9586156104215787610d319897613a3a575b5050613ac2565b613a4f9297503d8091833e61381581836107ed565b943880613a33565b80610415613a6492610769565b38613a07565b8880fd5b613a839197503d808b833e61381581836107ed565b95386139c5565b9190613a9581610858565b9260005b828110613aa557505050565b80613ab260019287610952565b828060a01b038416905201613a99565b939092959460005b8351811015613b3a57613add8183610952565b51613ae88285610952565b5190613af4838b610952565b5182018092116109995703613b0b57600101613aca565b8561242586613b1f846138828d968a610952565b5190604051948594631b3c965960e21b865260048601610c0b565b5050505050509050565b613b4d82613b98565b60015b828110613b5c57505050565b60001981019080821161099957613b8e613b7a613b9393868661092b565b35613b8683878761092b565b359083613bda565b611e0b565b613b50565b8015613bc857604b8111613ba95750565b6044906040519063f80a484560e01b82526004820152604b6024820152fd5b60405163c2e5347d60e01b8152600490fd5b919080821115613be957505050565b606493506040519263f48f718f60e01b8452600484015260248301526044820152fd5b613c1582613b98565b60015b828110613c2457505050565b60001981019080821161099957613b8e613c42613c4e93868661256c565b35613b8683878761256c565b613c1856fe5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d5005e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d50aa26469706673582212204142d73195bc2cde54f6ce7e87564da4f5a2a92d884ce3782b9531bf38e5d7a064736f6c63430008120033","sourceMap":"929:15850:172:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;929:15850:172;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4348:3318;929:15850;;4348:3318;;:::i;:::-;929:15850;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;929:15850:172;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;:::i;:::-;971:75:168;;;:::i;:::-;1522:9:172;;;;:::i;:::-;1604:40;:58;;;;929:15850;;-1:-1:-1;;;1604:58:172;;-1:-1:-1;929:15850:172;;1604:58;929:15850;;1604:58;;;;:::i;:::-;;:40;;:58;;;;;;;;929:15850;;1697:16;929:15850;;1697:16;:::i;:::-;1802:27;;;:::i;:::-;1866;;;:::i;:::-;1950:40;;;:::i;:::-;2000:22;-1:-1:-1;;2053:16:172;;;;;;1604:40;;2723:62;;;;-1:-1:-1;2723:62:172;929:15850;;;;;;;;;;2723:62;;929:15850;;2723:62;;;;:::i;:::-;;1604:40;;2723:62;;;;;;;;2033:680;2801:13;-1:-1:-1;2816:16:172;;;;;;2189:10;;3385:7;2189:10;;929:15850;;3385:7;:::i;:::-;-1:-1:-1;3424:16:172;;;;;;929:15850;3409:13;929:15850;3461:17;;;;:::i;:::-;;:29;929:15850;3457:505;;3409:13;4047:17;;929:15850;4047:17;;;:::i;:::-;;929:15850;4118:24;;:17;;;;:::i;:::-;;:24;929:15850;-1:-1:-1;;;;;929:15850:172;;;4118:24;4160:12;929:15850;4160:12;;;;;:::i;:::-;:21;929:15850;3981:284;;929:15850;4233:12;;;;;:::i;:::-;:18;929:15850;;;2189:10;;;;929:15850;;;;;;;;;;;;3981:284;;;:::i;:::-;;;;929:15850;3409:13;;3457:505;929:15850;3674:17;;;;:::i;:::-;;:29;929:15850;3729:17;929:15850;3729:17;;;;:::i;:::-;;:32;929:15850;3787:17;:24;4118;3787:17;;;;:::i;:24::-;3837:17;929:15850;3837:17;;;;:::i;:::-;;:33;;3896:17;:29;:17;;;;:::i;:::-;;:29;;1604:40;;3515:432;;;;-1:-1:-1;929:15850:172;3515:432;929:15850;;;;;;;;;;;3515:432;;929:15850;;;;;3515:432;;;;:::i;:::-;;1604:40;;3515:432;;;;;;;929:15850;3515:432;;;3457:505;;;;;;3515:432;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;2801:13::-;2867:12;;929:15850;2867:12;;;;:::i;:::-;929:15850;2906:43;929:15850;2906:34;929:15850;;2906:34;:::i;:::-;929:15850;;;;;;;;;;2906:43;929:15850;2902:172;;2801:13;3092:41;929:15850;3092:32;929:15850;;3092:32;:::i;:41::-;929:15850;3088:148;;2801:13;929:15850;;2801:13;;3088:148;3157:59;2189:10;3157:47;2189:10;929:15850;3157:38;929:15850;;3157:38;:::i;:47::-;929:15850;;;;;;;;;;;;;;;;3157:59;:64;929:15850;;3157:64;:::i;:::-;929:15850;;3088:148;;;2902:172;929:15850;3038:12;;;;;:::i;:::-;:21;929:15850;2973:86;:61;2189:10;2973:49;929:15850;2973:40;929:15850;;2973:40;:::i;:61::-;929:15850;;;2973:86;:::i;:::-;929:15850;;2902:172;;2723:62;;;;;;:::i;:::-;;;;2038:13;2122:92;2201:12;;;;;:::i;:::-;2189:10;929:15850;;;;2122:92;:::i;:::-;2086:128;;;;:::i;:::-;;;;;;:::i;:::-;;929:15850;2232:17;;;;;:::i;:::-;;:29;929:15850;2228:313;;2038:13;2569:17;;;929:15850;2569:17;;;:::i;:::-;;929:15850;2555:39;;;;:::i;:::-;929:15850;;2621:12;;;;;:::i;:::-;:21;929:15850;2608:34;;;;:::i;:::-;929:15850;;2038:13;;2228:313;929:15850;;2341:89;929:15850;;2341:58;929:15850;2341:34;929:15850;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;2341:58;2400:17;;;;;:::i;:::-;;:29;929:15850;;;-1:-1:-1;;;2341:89:172;;;;;929:15850;;;;;;;;;;;;;;;2341:89;;;;;;;;;;929:15850;2341:89;2448:78;2341:89;2462:64;2341:89;-1:-1:-1;2341:89:172;;;2228:313;2286:17;929:15850;2286:17;;;;:::i;:::-;;:32;929:15850;2462:17;;;;:::i;:::-;;:29;929:15850;;2494:17;;;;:::i;:::-;;:32;929:15850;2462:64;;:::i;:::-;2448:78;;:::i;:::-;2228:313;;;;2341:89;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1604:58;;;;;;:::i;:::-;;;;929:15850;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;929:15850:172;;;;;;;1084:2:171;929:15850:172;;;;;;;;;-1:-1:-1;;929:15850:172;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7672:664;929:15850;;;;;;:::i;:::-;;;;;;;;;;;;7672:664;;:::i;:::-;929:15850;;;;;;;-1:-1:-1;;929:15850:172;;;;;;;1032:2:171;929:15850:172;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;929:15850:172;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;929:15850:172;;-1:-1:-1;929:15850:172;;;;-1:-1:-1;929:15850:172;;;;-1:-1:-1;929:15850:172;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;929:15850:172;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;3220:1;929:15850;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;;;;;;;929:15850:172;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;2906:16;929:15850;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;2973:22;929:15850;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;3092:14;929:15850;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;3157:20;929:15850;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;6398:12;929:15850;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;8838:19:168;929:15850:172;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1052:123:168:-;1117:4;1126;-1:-1:-1;;;;;929:15850:172;1109:21:168;1105:63;;1052:123::o;1105:63::-;929:15850:172;;-1:-1:-1;;;1139:29:168;;;;;6854:832;;;929:15850:172;;:::i;:::-;;;;7409:14:168;;;;929:15850:172;7437:17:168;;;;929:15850:172;7468:14:168;;;;929:15850:172;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;7409:14:168;929:15850:172;;;;;;;;;;;7243:290:168;;;;;;;;;:::i;:::-;7547:6;;;7543:105;;7658:21;;;;;;;6854:832;:::o;7543:105::-;12828:267;;;;:::i;:::-;7409:14;6761:81;;;;;929:15850:172;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;-1:-1:-1;929:15850:172;;-1:-1:-1;929:15850:172;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;12705:1;929:15850;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;8365:2733:168:-;;;;;;;;;;929:15850:172;;:::i;:::-;8838:37:168;929:15850:172;8838:47:168;:37;;;;:::i;:47::-;929:15850:172;:::i;:::-;;;;;;-1:-1:-1;;;;;929:15850:172;8937:20:168;;;929:15850:172;;8937:20:168;9018:25;;929:15850:172;;8993:22:168;;;929:15850:172;;;-1:-1:-1;;;;;929:15850:172;9018:25:168;;;929:15850:172;;;9058:37:168;;9054:106;;9208:62;;;;:::i;:::-;9284:14;;9280:76;;9370:8;9366:70;;9450:68;9451:67;;;;;;;:::i;:::-;9450:68;;929:15850:172;9450:68:168;9446:160;;9619:14;;9615:80;;9726:44;:34;;;;:::i;:44::-;929:15850:172;9803:58:168;:40;:50;:40;;;;:::i;:58::-;929:15850:172;9875:14:168;;;;;:54;;;;8365:2733;9871:142;;;;;10114:48;10041:32;10114:38;10041:42;10114:56;10041:32;;;;:::i;:42::-;929:15850:172;10114:38:168;;:::i;:56::-;929:15850:172;10184:12:168;;;;:40;;;;8365:2733;10180:135;;;;929:15850:172;10329:30:168;;;:71;;;;8365:2733;10325:157;;;8993:22;10495:26;;929:15850:172;10524:15:168;-1:-1:-1;10491:104:168;;10619:22;;;929:15850:172;10609:32:168;;10605:91;;10710:32;;;929:15850:172;;;;;;-1:-1:-1;;;;;929:15850:172;10710:52:168;10706:139;;11013:28;10883:18;;;;:::i;:::-;10710:32;10855:25;;929:15850:172;;10943:32:168;;;929:15850:172;10911:29:168;;:64;11013:28;;;10985:25;;:56;929:15850:172;11052:39:168;-1:-1:-1;11052:39:168;8365:2733;:::o;10706:139::-;-1:-1:-1;;;;;;10793:25:168;10778:56;-1:-1:-1;10793:25:168;-1:-1:-1;10778:56:168:o;10605:91::-;-1:-1:-1;;;;;;10658:22:168;10643:53;-1:-1:-1;10658:22:168;-1:-1:-1;;;10643:53:168:o;10491:104::-;-1:-1:-1;;;;;;10556:23:168;10541:54;-1:-1:-1;10556:23:168;-1:-1:-1;;;10541:54:168:o;10325:157::-;-1:-1:-1;;;;;;10431:24:168;10416:55;-1:-1:-1;10431:24:168;-1:-1:-1;;;10416:55:168:o;10329:71::-;10363:37;;;;10329:71;;;10180:135;-1:-1:-1;;;;;;10255:33:168;10240:64;-1:-1:-1;10255:33:168;-1:-1:-1;;;;10240:64:168:o;10184:40::-;10200:14;;;;;:::i;:::-;:24;10184:40;;;;9871:142;-1:-1:-1;;;;;;9960:26:168;9945:57;-1:-1:-1;9960:26:168;-1:-1:-1;;;;;;;9945:57:168:o;9875:54::-;9893:24;;;;;:::i;:::-;:36;9875:54;;;;;9615:80;-1:-1:-1;;;;;;9650:29:168;9635:60;-1:-1:-1;9650:29:168;-1:-1:-1;;;;;;;9635:60:168:o;9446:160::-;-1:-1:-1;;;;;;9549:30:168;9534:61;-1:-1:-1;9549:30:168;-1:-1:-1;;;;;;;9534:61:168:o;9366:70::-;-1:-1:-1;;;;;;;;;9395:25:168;9380:56;-1:-1:-1;9395:25:168;-1:-1:-1;;;;;;;;;9380:56:168:o;9280:76::-;-1:-1:-1;;;;;;7496:27:168;9300:56;-1:-1:-1;7496:27:168;-1:-1:-1;;;;;;;;;;9300:56:168:o;9054:106::-;-1:-1:-1;;;;;;9112:32:168;9097:63;-1:-1:-1;9112:32:168;-1:-1:-1;;;;;;;;;;9097:63:168:o;929:15850:172:-;-1:-1:-1;;;;;929:15850:172;;;;;;-1:-1:-1;;929:15850:172;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;5332:398:168:-;929:15850:172;;-1:-1:-1;;;5559:34:168;;;;;;;;;5332:398;;;5559:34;;929:15850:172;5559:34:168;:::i;:::-;;5531:63;;;;;;;;;;929:15850:172;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;5559:34:168;929:15850:172;;;;5608:8:168;929:15850:172;;5608:28:168;;929:15850:172;5604:55:168;;929:15850:172;;5559:34:168;929:15850:172;5683:27:168;929:15850:172;;5683:27:168;;;;;;:::i;:::-;929:15850:172;;-1:-1:-1;;;;;929:15850:172;;;;;5683:39:168;;5332:398::o;5604:55::-;5638:21;;;;;:::o;5608:28::-;929:15850:172;5559:34:168;929:15850:172;;5620:16:168;5608:28;;929:15850:172;;;;;5736:541:168;-1:-1:-1;;;;;929:15850:172;;;;;6011:21:168;929:15850:172;;;;;5736:541:168;;;;929:15850:172;-1:-1:-1;929:15850:172;;;;-1:-1:-1;929:15850:172;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;6074:34:168;:85;;;;;5736:541;6070:102;;;929:15850:172;;;;;;;-1:-1:-1;;929:15850:172;;6212:26:168;;929:15850:172;;;6189:81:168;;6212:26;929:15850:172;;;;6212:26:168;;929:15850:172;;6212:26:168;;;;;;:::i;:::-;929:15850:172;6202:37:168;;929:15850:172;;6189:81:168;;:::i;6070:102::-;6161:11;;;;929:15850:172;6161:11:168;:::o;6074:85::-;6112:15;;;:47;;6074:85;;;929:15850:172;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;:::o;1181:2673:168:-;;;;;;;1535:47;:37;;;;:::i;:47::-;929:15850:172;-1:-1:-1;;;;;;929:15850:172;;-1:-1:-1;;;1597:43:168;;;1593:165;;-1:-1:-1;;;;1771:38:168;;;1767:145;;-1:-1:-1;;;;;;;1925:36:168;;;1921:166;;-1:-1:-1;;;;2100:41:168;;;2096:141;;-1:-1:-1;;;;2250:40:168;;;2246:106;;-1:-1:-1;;;;2366:37:168;;;2362:400;;-1:-1:-1;;;;10255:33:168;2775:44;;;2771:391;;-1:-1:-1;;;;10431:24:168;-1:-1:-1;;;3175:35:168;;;3171:159;;-1:-1:-1;;;;10556:23:168;-1:-1:-1;3343:34:168;;;3339:147;;-1:-1:-1;;;;3499:33:168;;;3495:149;;-1:-1:-1;;;;10793:25:168;3657:36;;;-1:-1:-1;3653:175:168;;929:15850:172;;;;;:::i;3653:175:168:-;3716:101;929:15850:172;3784:32:168;3716:101;3784:32;;929:15850:172;;;;;;;;;;;;3716:101:168;;;;;;;;;;;:::i;3495:149::-;3610:22;;;;;929:15850:172;;;3555:78:168;;;;;;;;;;929:15850:172;;;;;;;;-1:-1:-1;929:15850:172;-1:-1:-1;3555:78:168;929:15850:172;;;;3555:78:168;929:15850:172;3339:147:168;3448:26;;;;;3400:75;3448:26;;929:15850:172;;3400:75:168;929:15850:172;;3400:75:168;;;;;;;;;;929:15850:172;;;;;;;;3171:159:168;3293:25;;;;;3233:86;3293:25;3233:86;3293:25;;929:15850:172;;;3233:86:168;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;2771:391:168;2853:32;;;;;;;3007:144;2853:32;;3007:144;2853:32;;:42;:32;;;;:::i;:42::-;929:15850:172;2930:38:168;:56;:38;:48;:38;;;;:::i;:56::-;929:15850:172;;;;3007:144:168;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2362:400:168;2439:34;;;;;;;2599:152;2439:34;;2599:152;2439:34;;:44;:34;;;;:::i;:44::-;929:15850:172;2520:40:168;:58;:40;:50;:40;;;;:::i;:58::-;929:15850:172;;;;2599:152:168;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2246:106:168;929:15850:172;;;;;;;;;;;2299:53:168;;;;;;;;;;;:::i;2096:141::-;929:15850:172;;2164:62:168;;;;;;;-1:-1:-1;;;;;929:15850:172;;;2164:62:168;;;929:15850:172;;-1:-1:-1;2164:62:168;;-1:-1:-1;929:15850:172;;-1:-1:-1;;929:15850:172;;;;-1:-1:-1;2164:62:168;;-1:-1:-1;;929:15850:172;1921:166:168;929:15850:172;;;;;;;;1984:92:168;929:15850:172;1984:92:168;929:15850:172;;;;;;;;;;1767:145:168;929:15850:172;;1832:69:168;;;;;;;-1:-1:-1;;;;;929:15850:172;;;1832:69:168;;;929:15850:172;-1:-1:-1;929:15850:172;;-1:-1:-1;1832:69:168;;-1:-1:-1;929:15850:172;;-1:-1:-1;;929:15850:172;;;;-1:-1:-1;1832:69:168;;-1:-1:-1;929:15850:172;1593:165:168;929:15850:172;;;;;;;1663:84:168;929:15850:172;;1663:84:168;929:15850:172;;;;1663:84:168;;;;;;;;;;;:::i;5387:321:171:-;5488:28;;:33;:131;;;;5387:321;5471:231;;5387:321;:::o;5471:231::-;929:15850:172;;-1:-1:-1;;;5651:40:171;;-1:-1:-1;;;;;929:15850:172;;;5651:40:171;;;929:15850:172;;;5651:40:171;5488:131;929:15850:172;4592:71:119;-1:-1:-1;929:15850:172;;4592:71:119;;;1017:25;;;;4592:71;;;;;;929:15850:172;4592:71:119;;;;;;:::i;:::-;4784:212;;;;;-1:-1:-1;4784:212:119;;5013:29;;;5488:131:171;5013:48:119;;;;5488:131:171;975:149:119;;;;5488:131:171;1543:81:119;;;5488:131:171;5541:78;5488:131;;1543:81:119;1570:54;;;;:::i;:::-;1543:81;;975:149;1060:64;;;;:::i;:::-;1059:65;975:149;;5013:48;5046:15;;;;5013:48;;;:29;4592:71;-1:-1:-1;5024:18:119;;-1:-1:-1;5013:29:119;;;4421:647;-1:-1:-1;4592:71:119;4421:647;929:15850:172;;4592:71:119;;;1017:25;;;;4592:71;;929:15850:172;;;4592:71:119;;;929:15850:172;4592:71:119;;;;;;:::i;:::-;4784:212;;;;-1:-1:-1;4784:212:119;;5013:29;;;4421:647;5013:48;;;;5006:55;4421:647;:::o;5013:48::-;5046:15;;;;4421:647;:::o;5013:29::-;4592:71;-1:-1:-1;5024:18:119;;-1:-1:-1;5013:29:119;;;4421:647;-1:-1:-1;4592:71:119;4421:647;929:15850:172;;4592:71:119;;;1017:25;;;;4592:71;;5592:26:171;;;4592:71:119;;;929:15850:172;4592:71:119;;;;;;:::i;929:15850:172:-;-1:-1:-1;;929:15850:172;;;;;;;:::o;7368:318:171:-;;;;;7529:13;7541:1;7529:13;7524:118;7544:17;;;;;;7659:20;;;;;7368:318;:::o;7563:3::-;929:15850:172;;;;7563:3:171;929:15850:172;;;;;;;7784:6:171;;;;:78;:6;;;929:15850:172;;;7803:22:171;;;929:15850:172;;;;;;;;;;7803:22:171;929:15850:172;;;;7803:22:171;929:15850:172;7803:22:171;929:15850:172;7793:33:171;;7784:78;7563:3;;:::i;:::-;7529:13;;;;;7784:78;929:15850:172;;;7839:22:171;;;929:15850:172;;;;;;;;;;7839:22:171;;929:15850:172;;;;7839:22:171;929:15850:172;7839:22:171;929:15850:172;7829:33:171;;7784:78;;971:75:168;;;;;:::i;:::-;4571:9:172;;;;:::i;:::-;-1:-1:-1;;;;;929:15850:172;4595:10;929:15850;;;4595:21;4591:66;;4730:40;:58;;;;929:15850;;-1:-1:-1;;;4730:58:172;;:14;929:15850;;4730:58;;;;;;:::i;:::-;;:40;;:58;;;;;;;;971:75:168;4823:16:172;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;929:15850:172;4911:68;;;;4945:33;;-1:-1:-1;;;;;929:15850:172;;;4945:33;929:15850;;;;;;;;;4911:68;;;4730:58;4911:68;;;:::i;:::-;;929:15850;;;;4911:68;;;;;;;4730:14;4911:68;;;971:75:168;4910:69:172;;4906:156;;5149:27;;;:::i;:::-;5213;;;;:::i;:::-;5299:42;;;:::i;:::-;5351:22;4730:14;;5980:58;929:15850;5980:34;929:15850;;;;;;;;;5980:58;5404:16;;;;;;;;;;;4730:40;;;;;;;;;6242:62;;;;4730:14;6242:62;929:15850;;;;;;;;;;6242:62;;;4730:58;6242:62;;;:::i;:::-;;4730:40;;6242:62;;;;;;;;5384:848;6320:13;;;;4730:14;6335:16;;;;;;;;;4595:10;;;;6812:7;4595:10;;;6812:7;;;:::i;:::-;4730:14;6851:16;;;;;;971:75:168;;;;;;;;:::o;6836:13:172:-;6991:17;;;;:::i;:::-;;929:15850;7076:17;4911:68;7076:17;;;;:::i;:::-;;:29;929:15850;;7127:17;;;;:::i;:::-;;:32;929:15850;7210:17;:33;:17;;;;:::i;:::-;;:33;;7265:17;:29;:17;;;;:::i;:::-;;:29;;4730:40;;6884:428;;;;929:15850;;4730:14;929:15850;;6884:428;929:15850;;;;;;;;;;;;;6884:428;;4730:58;6884:428;;;:::i;:::-;;4730:40;;6884:428;;;;;;;;;7332:257;6884:428;;7332:257;6884:428;929:15850;7554:12;6884:428;7441:17;6884:428;;;929:15850;6884:428;;;;;;6836:13;7441:17;;:::i;:::-;;929:15850;7518:12;4911:68;7518:12;;;;;:::i;:::-;:18;929:15850;7554:12;;:::i;:::-;929:15850;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;7554:21;929:15850;;;;;;;;4595:10;;929:15850;;;;;;;;;;7332:257;;;;929:15850;6836:13;;6884:428;;;;;;:::i;:::-;;;;6320:13;6398:30;;;929:15850;6398:30;;;:61;:30;:52;:30;;;:::i;:::-;6429:12;;;;;:::i;:::-;929:15850;;;;;;;;;;6398:61;6473:43;:18;929:15850;6495:12;;;;;:::i;:::-;:21;929:15850;6473:18;;929:15850;;;6473:43;:::i;:::-;929:15850;;;6534:23;6530:130;;6320:13;929:15850;;;;;;6320:13;;;;;;6530:130;6615:12;6584:61;:30;:52;:30;;6577:68;6584:30;;:::i;:::-;6615:12;;:::i;6584:61::-;6577:68;:::i;:::-;6530:130;;;;;;;6242:62;;;;;;:::i;:::-;;;;5389:13;5550:12;5437:126;5550:12;5473:90;5550:12;;;;;;;;;;;929:15850;5550:12;5639;5550;;:::i;:::-;5473:90;;:::i;:::-;5437:126;;:::i;:::-;;;;;;:::i;:::-;;5592:12;;;;;:::i;:::-;929:15850;5578:34;;;;:::i;:::-;929:15850;5639:12;:::i;:::-;:21;929:15850;5626:34;;;;:::i;:::-;929:15850;5699:39;4911:68;5726:11;;;;;;;:::i;:::-;929:15850;;;;;;;;;;;;;5699:39;;4730:58;5699:39;;;:::i;:::-;;929:15850;;5699:39;;;;;;;4730:14;5699:39;;;5389:13;5772:10;;;;;:::i;:::-;929:15850;5756:26;;5752:163;;6039:17;5980:89;4911:68;6039:17;;;;;:::i;:::-;;:29;929:15850;;;;;;;;;;5980:89;;4730:58;5980:89;;929:15850;;;;;;;;5980:89;;;;;;;;;;;929:15850;5980:89;6083:78;5980:89;4730:14;5980:89;;;5389:13;5929:17;929:15850;5929:17;;;;:::i;:::-;;:32;929:15850;6097:64;4911:68;6097:17;;;;:::i;:::-;;:29;929:15850;;6129:17;;;;:::i;6083:78::-;929:15850;;5389:13;;;5980:89;;;;4911:68;5980:89;4911:68;5980:89;;;;;;;:::i;:::-;;;;5752:163;5861:11;5809:91;5861:11;;;5874:10;5861:11;;;;;:::i;:::-;929:15850;5874:10;;:::i;:::-;929:15850;;;;5809:91;;;;;;;;4730:58;5809:91;;;:::i;:::-;;;;5699:39;;;;4911:68;5699:39;4911:68;5699:39;;;;;;;:::i;:::-;;;;4906:156;929:15850;;-1:-1:-1;;;5002:49:172;;929:15850;5002:49;929:15850;;4730:58;5002:49;;;:::i;4911:68::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;4730:58;;;;;;:::i;:::-;;;;4591:66;929:15850;;-1:-1:-1;;;4625:32:172;;-1:-1:-1;;;;;929:15850:172;;4625:32;;;929:15850;;;5809:91;929:15850;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;-1:-1:-1;929:15850:172;;-1:-1:-1;929:15850:172;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;929:15850:172;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;4730:14;929:15850;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;7692:667:168:-;;;;929:15850:172;;:::i;:::-;;;;8164:14:168;8180:17;8164:14;;;929:15850:172;8180:17:168;;929:15850:172;8059:148:168;;;;;;;;;:::i;:::-;8221:6;;;8217:104;;8331:21;;;;;;;7692:667;:::o;8217:104::-;13403:273;;;;:::i;11104:1431::-;;;;;929:15850:172;;:::i;:::-;;;;;11504:14:168;;11500:80;;11621:49;:30;;:40;:30;;:::i;:49::-;11684:18;;;;929:15850:172;11684:23:168;;;11680:90;;11784:24;;;929:15850:172;11784:29:168;;;:76;;;;11104:1431;11780:163;;;929:15850:172;;-1:-1:-1;;;;;929:15850:172;;;;;11956:45:168;11952:107;;12073:15;929:15850:172;12073:15:168;;929:15850:172;12073:25:168;12069:84;;12167:30;-1:-1:-1;12163:133:168;;12334:18;12457:21;12334:18;929:15850:172;12334:18:168;;:::i;:::-;12306:25;;;929:15850:172;;12394:25:168;;;929:15850:172;:::i;:::-;12362:29:168;;;:57;12457:21;929:15850:172;:::i;:::-;12429:25:168;;;:49;929:15850:172;12489:39:168;11458:21;12489:39;11104:1431;:::o;12163:133::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;12228:41:168;12213:72;-1:-1:-1;12228:41:168;-1:-1:-1;12213:72:168:o;12069:84::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;10658:22:168;12100:53;-1:-1:-1;10658:22:168;-1:-1:-1;;12100:53:168:o;11952:107::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;10793:25:168;12003:56;-1:-1:-1;10793:25:168;-1:-1:-1;;12003:56:168:o;11780:163::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;11891:25:168;11876:56;-1:-1:-1;11891:25:168;-1:-1:-1;;;11876:56:168:o;11784:76::-;11845:15;;;-1:-1:-1;11817:43:168;11784:76;;;11680:90;-1:-1:-1;11458:21:168;;-1:-1:-1;;;11724:30:168;11709:61;-1:-1:-1;11724:30:168;-1:-1:-1;;;11709:61:168:o;11500:80::-;-1:-1:-1;11458:21:168;;-1:-1:-1;;;9650:29:168;11520:60;-1:-1:-1;9650:29:168;-1:-1:-1;;;;11520:60:168:o;3860:1466::-;;;;4206:49;:30;:40;:30;;;;:::i;:49::-;929:15850:172;-1:-1:-1;;;;;;929:15850:172;;-1:-1:-1;;;4270:40:168;;;4266:106;;-1:-1:-1;;;;4386:41:168;;;4382:170;;-1:-1:-1;;;;11891:25:168;4565:36;;;4561:216;;-1:-1:-1;;;;10793:25:168;-1:-1:-1;;;4790:36:168;;;4786:168;;-1:-1:-1;;;;10658:22:168;-1:-1:-1;4967:33:168;;;4963:142;;-1:-1:-1;;;;12228:41:168;5118:52;;;-1:-1:-1;5114:186:168;;929:15850:172;;;;;:::i;5114:186:168:-;5193:96;5270:18;5193:96;5270:18;;929:15850:172;;;5193:96:168;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;4963:142:168;5078:15;;;;;929:15850:172;;;5023:71:168;;;;;;;;;;929:15850:172;;;;;;;;-1:-1:-1;929:15850:172;-1:-1:-1;5023:71:168;929:15850:172;;;;5023:71:168;929:15850:172;4786:168:168;929:15850:172;;;;-1:-1:-1;4849:94:168;;929:15850:172;-1:-1:-1;4849:94:168;;-1:-1:-1;;;;;;929:15850:172;;;4561:216:168;4728:24;;;;;;;4624:142;4728:24;;;4624:142;4728:24;;929:15850:172;;;;4624:142:168;;;;;;;;;;;:::i;4382:170::-;929:15850:172;;4450:91:168;;;;;;;-1:-1:-1;;;;;929:15850:172;;;4450:91:168;;;929:15850:172;;;;;;;;;;;;;;;-1:-1:-1;4450:91:168;;-1:-1:-1;929:15850:172;;-1:-1:-1;;929:15850:172;;;;-1:-1:-1;4450:91:168;929:15850:172;971:75:168;;;;;;;;;;;:::i;:::-;929:15850:172;;;;;;;;:::i;:::-;-1:-1:-1;;;;;929:15850:172;;;;;8028:240;;;929:15850;;;;;;8028:240;;;929:15850;;;;;;8028:240;;;929:15850;;;8028:240;;;929:15850;;;;8028:240;;929:15850;;;8028:240;;-1:-1:-1;8525:10:172;:26;;8521:108;;-1:-1:-1;929:15850:172;;8663:22;;-1:-1:-1;;;;;929:15850:172;8663:22;:::i;:::-;929:15850;;8696:60;;929:15850;-1:-1:-1;;;;;929:15850:172;8696:84;;;;;;929:15850;;-1:-1:-1;;;8696:84:172;;-1:-1:-1;;;;929:15850:172;;;;8696:84;;;;;;:::i;:::-;;;;;;;;;;;;971:75:168;8790:74:172;;;;;;929:15850;;-1:-1:-1;;;8790:74:172;;;929:15850;;8790:74;;;;;8696:84;8790:74;;;:::i;:::-;;;;;;;;;;;;971:75:168;929:15850:172;;;8878:20;8874:55;;8988:34;;;;929:15850;8988:34;;;;;9161:71;8028:240;9161:24;9114:32;8988:34;;;:::i;:::-;929:15850;;;;;;-1:-1:-1;;;;;929:15850:172;;;9161:24;-1:-1:-1;;;;;;;;;;;929:15850:172;9198:33;;-1:-1:-1;;;;;929:15850:172;;;9198:33;929:15850;;;;;;;;;;;9161:71;;8525:10;8696:84;9161:71;;;:::i;:::-;;;;;;;;;;;;;;971:75:168;9160:72:172;;9156:168;;929:15850;;;;;;;;9418:15;929:15850;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;8525:10;;9418:15;;:::i;:::-;929:15850;-1:-1:-1;;;;;929:15850:172;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;9445:322;;;;;929:15850;9445:322;929:15850;;;;;;;;;;;;;;;;9445:322;;8525:10;9445:322;8696:84;9445:322;;;:::i;:::-;;;;;;;;;929:15850;;;9783:228;9445:322;9783:228;9445:322;;;;;971:75:168;-1:-1:-1;929:15850:172;-1:-1:-1;;;;;929:15850:172;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;8525:10;;929:15850;;;;;;;;9783:228;;;;971:75:168:o;9445:322:172:-;;;;;;:::i;:::-;;;;;929:15850;;;9156:168;929:15850;;;;-1:-1:-1;;;9255:58:172;;929:15850;;;9255:58;;-1:-1:-1;;;;;929:15850:172;8525:10;8696:84;9255:58;;;:::i;9161:71::-;;;;8028:240;9161:71;;;;;;;;;:::i;:::-;;;;8874:55;929:15850;;-1:-1:-1;;;8907:22:172;;8696:84;;8907:22;8790:74;;;;;;:::i;:::-;;;;8696:84;;;;;;:::i;:::-;;;;8521:108;929:15850;;-1:-1:-1;;;8574:44:172;;-1:-1:-1;;;;;929:15850:172;;;;8574:44;;;929:15850;;;5809:91;929:15850;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10024:1216::-;929:15850;;-1:-1:-1;;;;;929:15850:172;;;;;10207:37;929:15850;;;;;;;10024:1216;10269:14;10207:77;10269:14;;;929:15850;;;;;;;;;;;;10207:77;10285:12;;;10207:91;10285:12;;;929:15850;;;;;;;;;;;;;;;;;;;;;;;;;;;;10207:91;10299:22;;;929:15850;;10299:22;;10207:115;;-1:-1:-1;;;;;929:15850:172;;;10207:115;10337:14;;;;929:15850;10337:19;;;10333:152;;10498:20;;;929:15850;10498:25;;;:68;;;10024:1216;10494:248;;-1:-1:-1;;929:15850:172;;;;-1:-1:-1;;;;;;929:15850:172;;;;-1:-1:-1;;;;;929:15850:172;;;;-1:-1:-1;;;;;929:15850:172;;;;;;10755:47;10751:148;;10912:11;;929:15850;10912:11;;929:15850;10927:12;;;;929:15850;;;10912:27;;;10908:80;;11002:15;;929:15850;11002:15;929:15850;;;11002:32;;;;10998:106;;929:15850;;;;11129:30;11186:47;929:15850;;;;11129:30;;:::i;:::-;929:15850;;11186:47;;:::i;10998:106::-;929:15850;-1:-1:-1;;;11043:61:172;;;;;929:15850;;;;;;;;;;;;;5809:91;10908:80;929:15850;;-1:-1:-1;;;10948:40:172;;;;;929:15850;;;;;;;;;;;;;5809:91;10751:148;10825:63;929:15850;;10793:25:168;;;;;;10825:63:172;;;;;;:::i;10494:248::-;10589:142;929:15850;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;-1:-1:-1;;;10589:142:172;;929:15850;;;10589:142;;;;:::i;10498:68::-;10551:15;;10527:39;;;10498:68;;10333:152;10379:95;929:15850;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;-1:-1:-1;;;10379:95:172;;-1:-1:-1;;;;;929:15850:172;;;10379:95;;;929:15850;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13699:1318:168;;;;13873:15;;;929:15850:172;;;13902:30:168;;;;13898:438;;14376:26;;;14962:48;14376:26;;929:15850:172;14438:22:168;14923:29;14846:49;14438:22;;;929:15850:172;14501:35:168;14748:70;14675:30;14576:32;14501:35;;;;;:::i;:::-;14576:32;:::i;:::-;14675:30;;929:15850:172;;;14653:52:168;;;;;:::i;:::-;14748:70;;:::i;:::-;14846:49;:::i;:::-;14923:29;;;;:::i;:::-;929:15850:172;;14962:48:168;:::i;:::-;929:15850:172;;13699:1318:168:o;13898:438::-;13965:30;;;;;14269:21;13965:30;;;929:15850:172;;;;;;;;;;;;;;;14016:22:168;14059:12;;;;;929:15850:172;14059:12:168;;929:15850:172;;14128:22:168;929:15850:172;14128:22:168;;929:15850:172;;14222:26:168;;;;929:15850:172;14269:21:168;929:15850:172;14304:21:168;:::o;929:15850:172:-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;929:15850:172;;;;;;;;;;;;-1:-1:-1;;;929:15850:172;;;;;;;1667:4213:121;;;-1:-1:-1;;1667:4213:121;;2239:166;;;;;;;;;;;;;;;;2486:10;;2482:368;;2960:19;;;2952:53;2960:19;;;2952:53;:::i;:::-;3292:300;3944:1;3929:12;;929:15850:172;3914:32:121;;3960:371;;;4774:1;929:15850:172;;4755:1:121;929:15850:172;4754:21:121;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3960:371:121;3944:1;3960:371;;929:15850:172;3960:371:121;;;3292:300;;;;;;929:15850:172;3292:300:121;;3960:371;4397:21;929:15850:172;1667:4213:121;:::o;2482:368::-;2816:19;;;;;;;:::i;11246:1074:172:-;929:15850;;;-1:-1:-1;;;11517:36:172;;;11246:1074;;11517:36;;11246:1074;;;;;;929:15850;-1:-1:-1;;;;;929:15850:172;;;11517:36;;;929:15850;;11517:36;11246:1074;;11517:36;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;11517:36:172;;;11246:1074;11567:29;;;;11563:158;;929:15850;;;;;;;;11759:35;929:15850;;11759:35;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;11759:35:172;;;11246:1074;-1:-1:-1;;;;;;;;;;;;929:15850:172;11805:74;;-1:-1:-1;;;;;929:15850:172;;;11805:74;:132;;;;;929:15850;;-1:-1:-1;;;11805:132:172;;-1:-1:-1;;;;;929:15850:172;;;11805:132;;;929:15850;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;;-1:-1:-1;;929:15850:172;;;;11805:132;;;;;;;;;;11246:1074;929:15850;;;;;11977:36;929:15850;;11977:36;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;11977:36:172;;;11246:1074;929:15850;12051:35;929:15850;;12051:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;12051:35:172;;;11246:1074;12122:29;;;;;;:::i;:::-;12100:51;;;;:104;;;11246:1074;12096:218;;;;;11246:1074;;;;;;;:::o;12096:218::-;929:15850;-1:-1:-1;;;12227:76:172;;929:15850;-1:-1:-1;929:15850:172;;12227:76;;;;;:::i;12100:104::-;12176:28;;;;;:::i;:::-;12155:49;;12100:104;;;;;12051:35;12122:29;12051:35;;;;;;;;;;-1:-1:-1;12051:35:172;;;;;;:::i;:::-;;;;;11977:36;;;;;;;;;;;;;;;:::i;:::-;;;;;11805:132;;;;;;:::i;:::-;;;;11759:35;;;;;;;;;;;;;;;:::i;:::-;;;;;11563:158;929:15850;11619:91;929:15850;;;;;;;5809:91;;;;;;11619;;;;;:::i;11517:36::-;;;;;;;;;;;;;;:::i;:::-;;;;929:15850;;;;;;;;;;;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;929:15850:172;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;12326:2208::-;929:15850;;12326:2208;;929:15850;;12326:2208;-1:-1:-1;;;;;929:15850:172;;;12326:2208;;12676:31;12690:16;929:15850;12690:16;:::i;:::-;12676:31;:::i;:::-;12766:16;12752:31;12766:16;;;:::i;12752:31::-;12799:13;;12811:1;12814:16;;;;;;929:15850;;;;;;;;;13227:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;12811:1;13227:56;;;;;;;12811:1;13227:56;;;12794:381;13298:13;12811:1;13313:16;;;;;;-1:-1:-1;;;;;;;;;;;;929:15850:172;13736:79;;-1:-1:-1;;;;;929:15850:172;;;13736:79;:139;;;;;;12811:1;929:15850;;;;;;;;13736:139;929:15850;;;;;;;;;;;;;;;13736:139;;;;;:::i;:::-;;;;;;;;;;12811:1;13736:139;;;;;13293:433;929:15850;13927:56;929:15850;;13927:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12811:1;13927:56;;;13293:433;13998:13;12811:1;14013:16;;;;;;12326:2208;;;;;;;;;;;:::o;13998:13::-;14069:5;;;:::i;:::-;14109:35;;;;:::i;:::-;929:15850;14148:50;:36;;;;:::i;:::-;929:15850;14187:11;;;;:::i;:::-;929:15850;14148:50;;:::i;:::-;14109:89;;;;:210;;;13998:13;14088:370;;;929:15850;;13998:13;;14088:370;14359:84;14400:12;;;;;;;;;14431:11;14400:12;;:::i;14431:11::-;929:15850;;;-1:-1:-1;;;14359:84:172;;929:15850;;;14359:84;;;:::i;14109:210::-;14244:16;;14265:54;:40;14288:16;14222:39;14244:16;;;:::i;:::-;14222:39;;:::i;:::-;929:15850;14288:16;;:::i;:::-;14265:40;;:::i;:::-;929:15850;14308:11;;;;:::i;:::-;929:15850;14265:54;;:::i;:::-;14222:97;;14109:210;;;13927:56;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;13736:139;;;;;;:::i;:::-;;;;13298:13;13375:5;;;:::i;:::-;13398:42;;;;:::i;:::-;929:15850;13443:11;;;;:::i;:::-;929:15850;-1:-1:-1;13394:262:172;;929:15850;;;13298:13;;13394:262;13554:12;;;;;13481:160;13554:12;;;13581:42;13554:12;;;;;13568:11;13554:12;;:::i;:::-;929:15850;13568:11;;:::i;:::-;929:15850;13581:42;;:::i;:::-;929:15850;;;-1:-1:-1;;;13481:160:172;;929:15850;;;13481:160;;;:::i;13227:56::-;;;;;;;;;;;;;:::i;:::-;;;;;12799:13;929:15850;12870:5;;;;;;:::i;:::-;12889:39;;;;;;:::i;:::-;-1:-1:-1;;;;;929:15850:172;;;;;;12889:39;12942:42;12958:16;12942:42;12958:16;;;:::i;:::-;12942:42;;:::i;:::-;13030:12;;;;:::i;:::-;929:15850;12998:44;;;;:::i;:::-;929:15850;13056:48;13072:16;13092:12;;;;:::i;:::-;929:15850;13072:16;;:::i;:::-;13056:48;;:::i;:::-;929:15850;;12799:13;;;;;929:15850;-1:-1:-1;;;;;929:15850:172;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;14540:731::-;;;929:15850;;;;;;;;14822:42;929:15850;;14822:42;;:::i;:::-;929:15850;;;;;;;14912:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;14540:731;14973:71;;;;;;929:15850;;-1:-1:-1;;;14973:71:172;;929:15850;14973:71;929:15850;;14973:71;;;;14912:50;14973:71;;;:::i;:::-;;;;;;;;;;;;15092:50;14973:71;;;;;;;14540:731;929:15850;;;15092:50;;;;;;;;;14912;15092;;;:::i;:::-;;;;;;;;;;;15246:17;15092:50;;;;14540:731;15246:17;;;:::i;15092:50::-;;;;;;;;;;;;;;:::i;:::-;;;;;;14973:71;;;;;;:::i;:::-;;;;;929:15850;;;14912:50;;;;;;;;;;;;;;:::i;:::-;;;;;15277:311;;;15409:22;;;:::i;:::-;15446:13;15458:1;15461:11;;;;;;15277:311;;;:::o;15446:13::-;15489:22;;929:15850;15489:22;;;:::i;:::-;929:15850;;;;;;;;;;15446:13;;15594:597;;;;;;15897:1;15885:13;929:15850;;15900:20;;;;;15941:21;;;;:::i;:::-;929:15850;15966:22;;;;:::i;:::-;929:15850;15991:11;;;;;:::i;:::-;929:15850;;;;;;;;15941:61;15937:178;;929:15850;;15885:13;;15937:178;16066:12;16029:71;16066:12;16088:11;16066:12;;;;;;:::i;16088:11::-;929:15850;;;;16029:71;;;;;;;;;;;;:::i;15900:20::-;;;;;;;;;15594:597::o;16197:288::-;16305:16;;;:::i;:::-;16349:1;16352:20;;;;;;16197:288;;;:::o;16374:3::-;-1:-1:-1;;929:15850:172;;;;;;;;16447:20;16421:16;16374:3;16421:16;;;;:::i;:::-;929:15850;16447:12;;;;;:::i;:::-;929:15850;16447:20;;;:::i;:::-;16374:3;:::i;:::-;16337:13;;6683:202:171;6756:12;;6752:37;;1032:2;6803:24;;6799:79;;6683:202;:::o;6799:79::-;929:15850:172;;;;6836:42:171;;;;;;;;;929:15850:172;1032:2:171;929:15850:172;;;;6836:42:171;6752:37;929:15850:172;;-1:-1:-1;;;6777:12:171;;;;;7108:254;;;7230:28;;;;7226:130;;7108:254;;;:::o;7226:130::-;929:15850:172;;;;;7281:64:171;;;;;;;;;929:15850:172;;;;;;;;;7281:64:171;16491:286:172;16597:16;;;:::i;:::-;16641:1;16644:20;;;;;;16491:286;;;:::o;16666:3::-;-1:-1:-1;;929:15850:172;;;;;;;;16739:20;16713:16;16666:3;16713:16;;;;:::i;:::-;929:15850;16739:12;;;;;:::i;16666:3::-;16629:13;","linkReferences":{"src/marketplace/RareERC1155MarketplacePayments.sol":{"RareERC1155MarketplacePayments":[{"start":392,"length":20},{"start":452,"length":20},{"start":537,"length":20},{"start":600,"length":20},{"start":920,"length":20},{"start":988,"length":20},{"start":7886,"length":20},{"start":7945,"length":20},{"start":8189,"length":20},{"start":8251,"length":20},{"start":8415,"length":20},{"start":8483,"length":20},{"start":10759,"length":20}]}},"immutableReferences":{"67918":[{"start":3129,"length":32}]}},"methodIdentifiers":{"MAX_BATCH_SIZE()":"cfdbf254","MAX_CHECKOUT_SIZE()":"a3eaf4d9","acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":"b8e6b50f","buyBatch(address,address,address,(uint256,uint256,uint256)[])":"0a6ce313","mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":"7777e6d7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"AddressNotAllowlisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_endTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"AllowListEndTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalManagerCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"supplied\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"BatchSizeExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"_stage\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"_failureData\",\"type\":\"bytes\"}],\"name\":\"CheckoutItemExecutionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"ContractHasNoOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_suppliedCurrency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_configuredCurrency\",\"type\":\"address\"}],\"name\":\"CurrencyMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"CurrencyNotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DirectModuleCallUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"DirectSaleNotConfigured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_receivedAmount\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeOnTransferUnsupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"ExecutionModuleDelegateCallFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_suppliedAmount\",\"type\":\"uint256\"}],\"name\":\"IncorrectETHAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Allowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutERC20Balance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientCheckoutETH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"InsufficientTokenBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"InvalidERC1155Contract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Mint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"}],\"name\":\"InvalidERC1155Transfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExecutionModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_field\",\"type\":\"bytes32\"}],\"name\":\"MarketConfigAddressCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"MarketplaceNotApproved\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxMints\",\"type\":\"uint256\"}],\"name\":\"MaxMintExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_mintedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"MintLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueUnsupportedForERC20\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"NotContractOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"}],\"name\":\"OfferDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferPriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"PayoutFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountsLength\",\"type\":\"uint256\"}],\"name\":\"PayoutLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expectedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_actualAmount\",\"type\":\"uint256\"}],\"name\":\"PayoutTotalMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformCommission\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxPlatformCommission\",\"type\":\"uint256\"}],\"name\":\"PlatformCommissionExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_suppliedPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_configuredPrice\",\"type\":\"uint256\"}],\"name\":\"PriceMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuantityCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsOfferQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestedQuantity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_availableQuantity\",\"type\":\"uint256\"}],\"name\":\"QuantityExceedsSalePriceQuantity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_revertData\",\"type\":\"bytes\"}],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_royalties\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_saleAmount\",\"type\":\"uint256\"}],\"name\":\"RoyaltiesExceedSaleAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"}],\"name\":\"SaleNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SalePriceCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SalePriceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_currentTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpirationInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationTime\",\"type\":\"uint256\"}],\"name\":\"SalePriceExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"SelfOfferAcceptanceUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"}],\"name\":\"SelfPurchaseUnsupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ratiosLength\",\"type\":\"uint256\"}],\"name\":\"SplitLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRatioCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_recipientsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxRecipients\",\"type\":\"uint256\"}],\"name\":\"SplitRecipientsExceededMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SplitRecipientsRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_requiredTotal\",\"type\":\"uint256\"}],\"name\":\"SplitTotalInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_marketplaceFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stakingFee\",\"type\":\"uint256\"}],\"name\":\"StakingFeeExceedsMarketplaceFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"previousTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenIdsNotStrictlyAscending\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_usedTransactions\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_limit\",\"type\":\"uint256\"}],\"name\":\"TransactionLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"_itemKind\",\"type\":\"uint8\"}],\"name\":\"UnsupportedCheckoutItemKind\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"filledCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"skippedCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethSpent\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethRefunded\",\"type\":\"uint256\"}],\"name\":\"CheckoutCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"itemKind\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencyAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"filled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage\",\"name\":\"failureStage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"reason\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"failureData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPaid\",\"type\":\"uint256\"}],\"name\":\"CheckoutItemProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"ContractPausedUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"field\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dependency\",\"type\":\"address\"}],\"name\":\"MarketplaceDependencyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"MintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"MintDirectSaleCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"OfferAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFeeRemaining\",\"type\":\"uint256\"}],\"name\":\"OfferCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"marketplaceFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"}],\"name\":\"OfferMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxMints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"PrepareMintDirectSale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"SalePriceCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"splitRecipients\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"SalePriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTimestamp\",\"type\":\"uint256\"}],\"name\":\"SetTokenAllowListConfig\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"seller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"Sold\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenMintLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"TokenTxLimitSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_BATCH_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CHECKOUT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_quantity\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"_splitRecipients\",\"type\":\"address[]\"},{\"internalType\":\"uint8[]\",\"name\":\"_splitRatios\",\"type\":\"uint8[]\"}],\"name\":\"acceptOffer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_seller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.BuyRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"buyBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currencyAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IRareERC1155MarketplaceTypes.MintRequest[]\",\"name\":\"_requests\",\"type\":\"tuple[]\"}],\"name\":\"mintDirectSaleBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"SuperRare Labs Inc.\",\"details\":\"Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy.\",\"kind\":\"dev\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"details\":\"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert.\"}},\"title\":\"RareERC1155TradeExecutionModule\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])\":{\"notice\":\"Accepts all or part of an ERC1155 token offer.\"},\"buyBatch(address,address,address,(uint256,uint256,uint256)[])\":{\"notice\":\"Buys tokens from a seller's secondary fixed-price listings.\"},\"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])\":{\"notice\":\"Mints tokens from configured primary sales.\"}},\"notice\":\"Delegatecall-only direct trade execution module for the ERC1155 marketplace.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/marketplace/RareERC1155TradeExecutionModule.sol\":\"RareERC1155TradeExecutionModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@ensdomains/governance/=lib/governance-contracts/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/contracts/=lib/v3-core/contracts/\",\":@uniswap/v3-periphery/=lib/v3-periphery/contracts/\",\":arachnid/solidity-stringutils/=lib/solidity-stringutils/\",\":ds-test/=lib/ds-test/src/\",\":ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/\",\":ensdomains/governance/=lib/governance-contracts/contracts/\",\":forge-std/=lib/forge-std/src/\",\":murky/=lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":rareprotocol/assets/=lib/assets/src/\",\":rareprotocol/aux/=src/\",\":royalty-guard/=lib/royalty-guard/src/royalty-guard/\",\":royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/\",\":royalty-registry/=lib/royalty-registry-solidity/contracts/\",\":solmate/=lib/solmate/src/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol\":{\"keccak256\":\"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b\",\"dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52\",\"dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a\",\"dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351\",\"dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4\",\"dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij\"]},\"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol\":{\"keccak256\":\"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9\",\"dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r\"]},\"src/marketplace/IMarketplaceSettings.sol\":{\"keccak256\":\"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0\",\"dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13\"]},\"src/marketplace/IRareERC1155MarketplaceTypes.sol\":{\"keccak256\":\"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9\",\"dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN\"]},\"src/marketplace/IRareERC1155TradeExecutionModule.sol\":{\"keccak256\":\"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89\",\"dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH\"]},\"src/marketplace/IStakingSettings.sol\":{\"keccak256\":\"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda\",\"dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4\"]},\"src/marketplace/RareERC1155ExecutionModuleBase.sol\":{\"keccak256\":\"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1\",\"dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp\"]},\"src/marketplace/RareERC1155MarketplacePayments.sol\":{\"keccak256\":\"0x063bfec0e8cf831a2abf94595c25714fb5daddc26263960f38d9e4951772332c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1580164159928504b7b8ef73fab3a4d70d6771f8ed85ebdd41d5a9c602104099\",\"dweb:/ipfs/QmQRVWPsWmDAkNRrECPNrGkejwZJ1QspPcfXbJ673bcyhG\"]},\"src/marketplace/RareERC1155MarketplaceStorage.sol\":{\"keccak256\":\"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a\",\"dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV\"]},\"src/marketplace/RareERC1155TradeExecutionModule.sol\":{\"keccak256\":\"0x6d7912414d812a640e1747e6b2a4f700f1f011de8fb01a4999e8513dc2406691\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c178a735ce176ba1376ee9c184ac779ab1fd2062fbdb860bc8be8d58d4914d6c\",\"dweb:/ipfs/QmUj1nW1SjZQ2EXPedEgt1NCqefFSmneL9PZicUAHTD95S\"]},\"src/payments/IPayments.sol\":{\"keccak256\":\"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38\",\"dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc\"]},\"src/registry/interfaces/IApprovedTokenRegistry.sol\":{\"keccak256\":\"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2\",\"dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC\"]},\"src/registry/interfaces/ISpaceOperatorRegistry.sol\":{\"keccak256\":\"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33\",\"dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT\"]},\"src/staking/registry/IRareStakingRegistry.sol\":{\"keccak256\":\"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6\",\"dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR\"]},\"src/token/ERC1155/IRareERC1155.sol\":{\"keccak256\":\"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe\",\"dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68\"]},\"src/token/extensions/ITokenCreator.sol\":{\"keccak256\":\"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42\",\"dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF\"]},\"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol\":{\"keccak256\":\"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89\",\"dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA\"]},\"src/v2/approver/ERC20/IERC20ApprovalManager.sol\":{\"keccak256\":\"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f\",\"dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY\"]},\"src/v2/approver/ERC721/IERC721ApprovalManager.sol\":{\"keccak256\":\"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3\",\"dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd\"]},\"src/v2/utils/MarketConfigV2.sol\":{\"keccak256\":\"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6\",\"dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"AddressNotAllowlisted"},{"inputs":[{"internalType":"uint256","name":"_endTimestamp","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"AllowListEndTimestampInvalid"},{"inputs":[],"type":"error","name":"ApprovalManagerCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"supplied","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"BatchSizeExceeded"},{"inputs":[{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"_stage","type":"uint8"},{"internalType":"bytes","name":"_failureData","type":"bytes"}],"type":"error","name":"CheckoutItemExecutionFailed"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"ContractHasNoOwner"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[{"internalType":"address","name":"_suppliedCurrency","type":"address"},{"internalType":"address","name":"_configuredCurrency","type":"address"}],"type":"error","name":"CurrencyMismatch"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"CurrencyNotApproved"},{"inputs":[],"type":"error","name":"DirectModuleCallUnsupported"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"DirectSaleNotConfigured"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_receivedAmount","type":"uint256"}],"type":"error","name":"ERC20FeeOnTransferUnsupported"},{"inputs":[],"type":"error","name":"EmptyBatch"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"ExecutionModuleDelegateCallFailed"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_suppliedAmount","type":"uint256"}],"type":"error","name":"IncorrectETHAmount"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Allowance"},{"inputs":[{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutERC20Balance"},{"inputs":[{"internalType":"uint256","name":"_requiredAmount","type":"uint256"},{"internalType":"uint256","name":"_availableAmount","type":"uint256"}],"type":"error","name":"InsufficientCheckoutETH"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"InsufficientTokenBalance"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"InvalidERC1155Contract"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Mint"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"type":"error","name":"InvalidERC1155Transfer"},{"inputs":[],"type":"error","name":"InvalidExecutionModule"},{"inputs":[{"internalType":"bytes32","name":"_field","type":"bytes32"}],"type":"error","name":"MarketConfigAddressCannotBeZero"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contractAddress","type":"address"}],"type":"error","name":"MarketplaceNotApproved"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"type":"error","name":"MaxMintExceeded"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_mintedQuantity","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"MintLimitExceeded"},{"inputs":[],"type":"error","name":"MsgValueMustBeZero"},{"inputs":[],"type":"error","name":"MsgValueUnsupportedForERC20"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_account","type":"address"}],"type":"error","name":"NotContractOwner"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"}],"type":"error","name":"OfferDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"OfferExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"OfferExpired"},{"inputs":[],"type":"error","name":"OfferPriceCannotBeZero"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"PayoutFailed"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_amountsLength","type":"uint256"}],"type":"error","name":"PayoutLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_expectedAmount","type":"uint256"},{"internalType":"uint256","name":"_actualAmount","type":"uint256"}],"type":"error","name":"PayoutTotalMismatch"},{"inputs":[{"internalType":"uint256","name":"_platformCommission","type":"uint256"},{"internalType":"uint256","name":"_maxPlatformCommission","type":"uint256"}],"type":"error","name":"PlatformCommissionExceeded"},{"inputs":[{"internalType":"uint256","name":"_suppliedPrice","type":"uint256"},{"internalType":"uint256","name":"_configuredPrice","type":"uint256"}],"type":"error","name":"PriceMismatch"},{"inputs":[],"type":"error","name":"QuantityCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsOfferQuantity"},{"inputs":[{"internalType":"uint256","name":"_requestedQuantity","type":"uint256"},{"internalType":"uint256","name":"_availableQuantity","type":"uint256"}],"type":"error","name":"QuantityExceedsSalePriceQuantity"},{"inputs":[{"internalType":"bytes","name":"_revertData","type":"bytes"}],"type":"error","name":"RefundFailed"},{"inputs":[{"internalType":"uint256","name":"_royalties","type":"uint256"},{"internalType":"uint256","name":"_saleAmount","type":"uint256"}],"type":"error","name":"RoyaltiesExceedSaleAmount"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"}],"type":"error","name":"SaleNotStarted"},{"inputs":[],"type":"error","name":"SalePriceCannotBeZero"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SalePriceDoesNotExist"},{"inputs":[{"internalType":"uint256","name":"_expirationTime","type":"uint256"},{"internalType":"uint256","name":"_currentTime","type":"uint256"}],"type":"error","name":"SalePriceExpirationInvalid"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"uint256","name":"_expirationTime","type":"uint256"}],"type":"error","name":"SalePriceExpired"},{"inputs":[{"internalType":"address","name":"_buyer","type":"address"}],"type":"error","name":"SelfOfferAcceptanceUnsupported"},{"inputs":[{"internalType":"address","name":"_seller","type":"address"}],"type":"error","name":"SelfPurchaseUnsupported"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_ratiosLength","type":"uint256"}],"type":"error","name":"SplitLengthMismatch"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRatioCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"type":"error","name":"SplitRecipientCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"_recipientsLength","type":"uint256"},{"internalType":"uint256","name":"_maxRecipients","type":"uint256"}],"type":"error","name":"SplitRecipientsExceededMax"},{"inputs":[],"type":"error","name":"SplitRecipientsRequired"},{"inputs":[{"internalType":"uint256","name":"_totalRatio","type":"uint256"},{"internalType":"uint256","name":"_requiredTotal","type":"uint256"}],"type":"error","name":"SplitTotalInvalid"},{"inputs":[{"internalType":"uint256","name":"_marketplaceFee","type":"uint256"},{"internalType":"uint256","name":"_stakingFee","type":"uint256"}],"type":"error","name":"StakingFeeExceedsMarketplaceFee"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"previousTokenId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"TokenIdsNotStrictlyAscending"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"type":"error","name":"TokenNotFound"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_usedTransactions","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"type":"error","name":"TransactionLimitExceeded"},{"inputs":[{"internalType":"uint8","name":"_itemKind","type":"uint8"}],"type":"error","name":"UnsupportedCheckoutItemKind"},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"uint256","name":"filledCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"skippedCount","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethSpent","type":"uint256","indexed":false},{"internalType":"uint256","name":"ethRefunded","type":"uint256","indexed":false}],"type":"event","name":"CheckoutCompleted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256","indexed":true},{"internalType":"uint8","name":"itemKind","type":"uint8","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"address","name":"currencyAddress","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"bool","name":"filled","type":"bool","indexed":false},{"internalType":"enum IRareERC1155MarketplaceTypes.CheckoutFailureStage","name":"failureStage","type":"uint8","indexed":false},{"internalType":"bytes4","name":"reason","type":"bytes4","indexed":false},{"internalType":"bytes","name":"failureData","type":"bytes","indexed":false},{"internalType":"uint256","name":"totalPaid","type":"uint256","indexed":false}],"type":"event","name":"CheckoutItemProcessed","anonymous":false},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool","indexed":false}],"type":"event","name":"ContractPausedUpdated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"field","type":"bytes32","indexed":true},{"internalType":"address","name":"dependency","type":"address","indexed":true}],"type":"event","name":"MarketplaceDependencyUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"MintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"MintDirectSaleCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"OfferAccepted","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFeeRemaining","type":"uint256","indexed":false}],"type":"event","name":"OfferCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"marketplaceFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false}],"type":"event","name":"OfferMade","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"startTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"maxMints","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"PrepareMintDirectSale","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"SalePriceCancelled","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false},{"internalType":"uint256","name":"expirationTime","type":"uint256","indexed":false},{"internalType":"address payable[]","name":"splitRecipients","type":"address[]","indexed":false},{"internalType":"uint8[]","name":"splitRatios","type":"uint8[]","indexed":false}],"type":"event","name":"SalePriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"root","type":"bytes32","indexed":false},{"internalType":"uint256","name":"endTimestamp","type":"uint256","indexed":false}],"type":"event","name":"SetTokenAllowListConfig","anonymous":false},{"inputs":[{"internalType":"address","name":"seller","type":"address","indexed":true},{"internalType":"address","name":"buyer","type":"address","indexed":true},{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"quantity","type":"uint256","indexed":false}],"type":"event","name":"Sold","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenMintLimitSet","anonymous":false},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"uint256","name":"limit","type":"uint256","indexed":false}],"type":"event","name":"TokenTxLimitSet","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_BATCH_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CHECKOUT_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address payable[]","name":"_splitRecipients","type":"address[]"},{"internalType":"uint8[]","name":"_splitRatios","type":"uint8[]"}],"stateMutability":"nonpayable","type":"function","name":"acceptOffer"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.BuyRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"buyBatch"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_currencyAddress","type":"address"},{"internalType":"struct IRareERC1155MarketplaceTypes.MintRequest[]","name":"_requests","type":"tuple[]","components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}]}],"stateMutability":"payable","type":"function","name":"mintDirectSaleBatch"}],"devdoc":{"kind":"dev","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"details":"Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert."}},"version":1},"userdoc":{"kind":"user","methods":{"acceptOffer(address,uint256,address,address,uint256,uint256,address[],uint8[])":{"notice":"Accepts all or part of an ERC1155 token offer."},"buyBatch(address,address,address,(uint256,uint256,uint256)[])":{"notice":"Buys tokens from a seller's secondary fixed-price listings."},"mintDirectSaleBatch(address,address,(uint256,uint256,uint256,bytes32[])[])":{"notice":"Mints tokens from configured primary sales."}},"version":1}},"settings":{"remappings":["@ensdomains/buffer/=lib/buffer/","@ensdomains/ens-contracts/=lib/ens-contracts/contracts/","@ensdomains/governance/=lib/governance-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v3-core/contracts/=lib/v3-core/contracts/","@uniswap/v3-periphery/=lib/v3-periphery/contracts/","arachnid/solidity-stringutils/=lib/solidity-stringutils/","ds-test/=lib/ds-test/src/","ensdomains/ens-contracts/=lib/ensdomains/ens-contracts/contracts/","ensdomains/governance/=lib/governance-contracts/contracts/","forge-std/=lib/forge-std/src/","murky/=lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","rareprotocol/assets/=lib/assets/src/","rareprotocol/aux/=src/","royalty-guard/=lib/royalty-guard/src/royalty-guard/","royalty-registry-solidity/=lib/royalty-registry-solidity/contracts/","royalty-registry/=lib/royalty-registry-solidity/contracts/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/marketplace/RareERC1155TradeExecutionModule.sol":"RareERC1155TradeExecutionModule"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC2981Upgradeable.sol":{"keccak256":"0x1a94069aa241fa1ebb4409d02a405c932d3ad7e875bdd5587c88244da210ccdf","urls":["bzz-raw://35bc03e7b41fc0141b0b77a9b440d425ff34fe6417b986a605d0b65128cc190b","dweb:/ipfs/Qma3YG36dbRQ5k9emJqqYtr5DKnZvXEQRawsbThyB3NKrX"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol":{"keccak256":"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09","urls":["bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758","dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol":{"keccak256":"0x622b1e5ba6b160cfccda15953f5040355fbd91428247decde191eb978eaafc39","urls":["bzz-raw://a4db206433c87f5f161267e9d6908f0762c59a367c72c47e8676e2613791fd52","dweb:/ipfs/QmbDmK1NGJqZyaYEmz8S1gGLCPyRAqYciwamMtk8thshEW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0","urls":["bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1","dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb","urls":["bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0","dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a","urls":["bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577","dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x41bbb2c41036ca64b2f6c9e973e8cfaa113ebc42af86702cd0d267f915a7e886","urls":["bzz-raw://6bf6699c55e82c7af6ae90b61ea9643ca0c905097da9a31269319f1b5a2a696a","dweb:/ipfs/QmRJZa2UmWcRo6W8JnuomwzfjVtAS21QC8HKggxBhoPsU4"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26","urls":["bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f","dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xfaac7b78ce0d708485e86adee681ee1ff531a6916306fbbe50fd243afed11a9a","urls":["bzz-raw://2d0e06a603bed3f77978db909bd7619b1dbc0296bd3be8e3df51b059c0438351","dweb:/ipfs/QmaZXsJrwkhWWznAWMEJeGHn4EYh5X4wdEc5Jkp43PQvDn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xbaf3bd8c64ac943fafde717797ee797c96360586b9448ea25e9872490a6e6858","urls":["bzz-raw://bab65b9b5ea0c68e96e1a73460db616042f639d144a6a75595434cfa2a483ed4","dweb:/ipfs/QmUgwEcWXaEu4VSpymiVq8tZYKgA44HPMWZowpg2L8Kiij"],"license":"MIT"},"lib/royalty-registry-solidity/contracts/IRoyaltyEngineV1.sol":{"keccak256":"0xc66561df4db1dd5bc3d14e2ec1c5cf393db682b18989779acc41b3a4834d9d27","urls":["bzz-raw://c342b761cb6656f04bc4cb40e4593aed5484efee9594a806dbd3a95fd6d757a9","dweb:/ipfs/QmWsz6C36AhhSfBhfdfX3LhPabLkqGxa23s5iNfN4yJq7r"],"license":"MIT"},"src/marketplace/IMarketplaceSettings.sol":{"keccak256":"0xa42b0f448c52cc04ca1c3b013ecbf99b9b5d857e7ed37a8fe178669fab933083","urls":["bzz-raw://00f697de6e1de92ccd4fd260ce9bde6fca290121f5f7e2b7d9cee8f718670ff0","dweb:/ipfs/Qmbt7gXsaTG8WmeFaLSCeNy3ViZgLRgeNfwHpRwL1hia13"],"license":"MIT"},"src/marketplace/IRareERC1155MarketplaceTypes.sol":{"keccak256":"0x3df38ce4cae41b7601046bf9055986310e335029117e60b73addff8d51dd0bf9","urls":["bzz-raw://8c7b0df70a7ca06054a353da8a9aec7a1807f5b898ebd49523797f14a6d9f9d9","dweb:/ipfs/QmcQzdoaAW3oJvDN4T4Et6HtDjac1Z91oYgEw2UT8NkUcN"],"license":"MIT"},"src/marketplace/IRareERC1155TradeExecutionModule.sol":{"keccak256":"0xeac5a1dcc35c87ba1867c2754e12ab54dfb00112f0392d0be073b3a381df8fb1","urls":["bzz-raw://9f74c949b2d3b3f4f01ce37e1990370a476ea7b7fb1692b5ac96606c0303dd89","dweb:/ipfs/QmbsX9rW7r8trT2jRhF34LkwNPwqNQZMv32WwoBswNVTFH"],"license":"MIT"},"src/marketplace/IStakingSettings.sol":{"keccak256":"0xb470dc177e9d6bf92f31fae722b38195c2de8c2121b9df3ec9391b7ce361f501","urls":["bzz-raw://82508cf251aa646341d5393251f15cb68524f4b2ddc0d327d3637d4592125fda","dweb:/ipfs/QmURvsW8RLKwimfwA6Y5D3CqKAVGTSdqNWjHjhtTSFWGP4"],"license":"MIT"},"src/marketplace/RareERC1155ExecutionModuleBase.sol":{"keccak256":"0x7ef2133c307dde9b4de4470cc9f410496fec223376d9b3ebf44d61b1d51d7862","urls":["bzz-raw://d30a82a811e717056e78d14a85eb242353bfac401046d76c41b090cebb28a3d1","dweb:/ipfs/QmZMSNTSh62mDm8Q7AYyRYhJiiPFpmjftktyVSzXnjrKgp"],"license":"MIT"},"src/marketplace/RareERC1155MarketplacePayments.sol":{"keccak256":"0x063bfec0e8cf831a2abf94595c25714fb5daddc26263960f38d9e4951772332c","urls":["bzz-raw://1580164159928504b7b8ef73fab3a4d70d6771f8ed85ebdd41d5a9c602104099","dweb:/ipfs/QmQRVWPsWmDAkNRrECPNrGkejwZJ1QspPcfXbJ673bcyhG"],"license":"MIT"},"src/marketplace/RareERC1155MarketplaceStorage.sol":{"keccak256":"0xf84b63e8ab9fcf6174161daf85b85ad4e3d8a33874b3b1e12951e85f7a22ead1","urls":["bzz-raw://e86a9b1d23b84461991bb60e5634b4b565f09be8c08de1bbd8e9e001a19fcf5a","dweb:/ipfs/QmVmtd7VpEa9oDeAezSgsPjuXioDyHKVm3bkkdhjMVZPvV"],"license":"MIT"},"src/marketplace/RareERC1155TradeExecutionModule.sol":{"keccak256":"0x6d7912414d812a640e1747e6b2a4f700f1f011de8fb01a4999e8513dc2406691","urls":["bzz-raw://c178a735ce176ba1376ee9c184ac779ab1fd2062fbdb860bc8be8d58d4914d6c","dweb:/ipfs/QmUj1nW1SjZQ2EXPedEgt1NCqefFSmneL9PZicUAHTD95S"],"license":"MIT"},"src/payments/IPayments.sol":{"keccak256":"0xd5370fe954b457c13045901acfe5aa8c4dc66885f913d2729aa7c65975e7fbbd","urls":["bzz-raw://9da9318f1b4585578ca5606c320f093bb86682594c6cd8244f9be59650efcd38","dweb:/ipfs/Qmaq1QFA45ZkPjqn1idCVGrUzCd5pbuUuw18N3Xk1Sewdc"],"license":"MIT"},"src/registry/interfaces/IApprovedTokenRegistry.sol":{"keccak256":"0xdb86d418bedb954ea79129631d734b42749d4a0ca00635ecdf3dfeb8e81fb60a","urls":["bzz-raw://ad677939c49f8a55f7a1c1e78b0abbe722744abc5c26b81eef5a20a578d415d2","dweb:/ipfs/QmZL6aHq79B8TFPrc5Zrt7iLxuqkoJikhEJtq8hgk1aKMC"],"license":"MIT"},"src/registry/interfaces/ISpaceOperatorRegistry.sol":{"keccak256":"0x2b0899fa39f324d105f5b3b7fe6d0020374c5065d19aa87b74fd042f368b4ade","urls":["bzz-raw://88aaf406edb29325f05024f8f94b0eab31de5f08c02c9cdea053da6671df1d33","dweb:/ipfs/QmSPXe7U4aCaLew2xJ3gmQqBWTf3QMvpxYV2XNq3e41gGT"],"license":"MIT"},"src/staking/registry/IRareStakingRegistry.sol":{"keccak256":"0x26458c277ad3b3280dbedd7dbfdfbaa8d2af5f6180959ef732cbcec78b6c2924","urls":["bzz-raw://e5ba0ab87bedec5547531b79c123233dfcbdf9062a860845d242ae518e6ff8d6","dweb:/ipfs/QmT4kZV7MjKwevN2ABFRD7tNnXRkUxJqNKyrXxthfWC5mR"],"license":"MIT"},"src/token/ERC1155/IRareERC1155.sol":{"keccak256":"0x2612a23f4d39d35ecaec48c7c3f9c4c2e736616575ca241b3db3619f3548989c","urls":["bzz-raw://4085d7b20d6b50e843627805ea6bc41d5b771ed57e640941757d41fde64d25fe","dweb:/ipfs/QmeafWtNkgBAPXap3GdxKroBGXRb2f2gRDT3iYdVkjgx68"],"license":"MIT"},"src/token/extensions/ITokenCreator.sol":{"keccak256":"0xebb99f216573c38f201c0cd99bbe98cce87a04acc129b37b487e66ec148de5f6","urls":["bzz-raw://b101c0be9c38496d0bee068af7ca3519d3879c35315d6336e2dbc9a36ab1ae42","dweb:/ipfs/QmZQuVdfHHw1FuX4tc867KedVdnJDJ8Kth9BPKUiuajBoF"],"license":"MIT"},"src/v2/approver/ERC1155/IERC1155ApprovalManager.sol":{"keccak256":"0xa3a2e4cd7ff9aa8dd92de96e45ea15b906a057fe0fd5285e9541a50b1eae08fd","urls":["bzz-raw://01b0c407a050dc2bb95009b456ce93ffcc83482612c8d663a06c54736f7e0c89","dweb:/ipfs/QmUPn1SqP91EnXoA6tdTEqFbryK1KDfb5CnNz7iGwFnwcA"],"license":"MIT"},"src/v2/approver/ERC20/IERC20ApprovalManager.sol":{"keccak256":"0x5c131faeefac93b88e6f5c8deec044a662fb7e844ea93a370e47e33e5676dd7e","urls":["bzz-raw://ca1eebcccd1a83969fb6e56b0ba3e236e67c19a8ce9c02c2acd399847f4ce22f","dweb:/ipfs/QmSJhQJuhkidZ582ma4tVdDabevtgMyEciC1BefFWvvEwY"],"license":"MIT"},"src/v2/approver/ERC721/IERC721ApprovalManager.sol":{"keccak256":"0xbb0809429d6f6056c6fb9c27e354dc8a4b728ae59734a72a6d5b83a2cfa31ee4","urls":["bzz-raw://d4f2b8505040248022017eb354c4c3a90d40bd3a7a5ff6516c360306877d19f3","dweb:/ipfs/QmYYdDgvKocg966tPcCTfza3EgoUGHZ7BJg8SEz4Rc5Cfd"],"license":"MIT"},"src/v2/utils/MarketConfigV2.sol":{"keccak256":"0x76f7d0ffc2a3864e1f164f4be275c57afe65da7615408f845ddb41bc5dff367a","urls":["bzz-raw://0e831781c47370ca447f08e81ffd9b59a53a2a17e89cf56727b888f34dcfbdd6","dweb:/ipfs/QmdtjoiFJVWaQ3FYYpkxBY8qFLVZrEfFsHL81UCNHPDVcj"],"license":"MIT"}},"version":1},"id":172} \ No newline at end of file diff --git a/script/NetworkConfig.s.sol b/script/NetworkConfig.s.sol new file mode 100644 index 0000000..3f78b47 --- /dev/null +++ b/script/NetworkConfig.s.sol @@ -0,0 +1,424 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +/// @title NetworkConfig +/// @notice Chain-aware SuperRare contract addresses for Foundry scripts. +/// @dev Source: Confluence "Smart Contracts - Directory". Empty or N/A cells are address(0). +library NetworkConfig { + uint256 internal constant ETHEREUM_MAINNET = 1; + uint256 internal constant ETHEREUM_SEPOLIA = 11155111; + uint256 internal constant BASE_MAINNET = 8453; + uint256 internal constant BASE_SEPOLIA = 84532; + + error UnsupportedChain(uint256 chainId); + + struct Addresses { + address superRareV1; + address superRareV2; + address marketplace; + address auctionHouse; + address marketplaceWalletV1Token; + address creatorRegistry; + address marketplaceSettingsV3; + address marketplaceSettingsV2; + address marketplaceSettingsV1; + address sovereignSeriesFactorySpecialCreator; + address sovereignSeriesFactory; + address seriesNftTemplate; + address rareClaim; + address royaltyRegistry; + address bazaar; + address bazaarMarketplace; + address bazaarAuctionHouse; + address spaceOperatorRegistry; + address payments; + address collectorRoyaltiesClaim; + address rareProxyAdmin; + address rareGovToken; + address rareImplementation; + address spaceFactory; + address spaceNftTemplate; + address superRareAdmin; + address approvedTokenRegistry; + address rarePassNft; + address ethRareFaucet; + address stakingRegistry; + address rewardAccumulatorFactory; + address rarityPoolFactory; + address lazySovereignFactory; + address rareMinterLogic; + address rareMinter; + address baseL1BridgeProxy; + address baseL1BridgeImplementation; + address baseL2BridgeProxy; + address baseL2BridgeImplementation; + address rareGovTokenL2Proxy; + address ccipReceiverL2; + address batchOfferCreatorImplementation; + address batchOfferCreatorProxy; + address season2Claim; + address season1Claim; + address season3Claim; + address marketUtilsV2; + address erc20ApprovalManager; + address erc721ApprovalManager; + address erc1155ApprovalManager; + address rareErc1155TradeExecutionModule; + address rareErc1155CheckoutExecutionModule; + address rareErc1155MarketplaceImplementation; + address rareErc1155MarketplaceProxy; + address rareErc1155ContractFactory; + address rareErc1155Implementation; + address rareErc1155ContractFactoryOwner; + address rareErc1155ContractFactoryDefaultMinter; + address approvalManagerAdmin; + address rareBatchAuctionHouseProxy; + address rareBatchAuctionHouseLogic; + address rareBatchListingMarketplaceImplementation; + address rareBatchListingMarketplaceProxy; + address rareStakingV1; + address rareStakingV1Implementation; + address sovereignBatchMintFactory; + address sovereignBatchMintImplementation; + address batchAuctionHouse; + address royaltyEngineManifold; + address lazySovereignBatchMintFactory; + address superRareBazaarErc20BuyProxy; + address liquidFactory; + address liquidRouter; + address liquidRegistry; + address rareBurner; + address networkBeneficiary; + } + + function getCurrent() internal view returns (Addresses memory) { + return get(block.chainid); + } + + function get(uint256 chainId) internal pure returns (Addresses memory config) { + if (chainId == ETHEREUM_MAINNET) return _ethereumMainnet(); + if (chainId == ETHEREUM_SEPOLIA) return _ethereumSepolia(); + if (chainId == BASE_MAINNET) return _baseMainnet(); + if (chainId == BASE_SEPOLIA) return _baseSepolia(); + + revert UnsupportedChain(chainId); + } + + function chainName(uint256 chainId) internal pure returns (string memory) { + if (chainId == ETHEREUM_MAINNET) return "Ethereum Mainnet"; + if (chainId == ETHEREUM_SEPOLIA) return "Ethereum Sepolia"; + if (chainId == BASE_MAINNET) return "Base Mainnet"; + if (chainId == BASE_SEPOLIA) return "Base Sepolia"; + + revert UnsupportedChain(chainId); + } + + function _ethereumMainnet() private pure returns (Addresses memory config) { + config.superRareV1 = _addr(0x41A322b28D0fF354040e2CbC676F0320d8c8850d); + config.superRareV2 = _addr(0xb932a70A57673d89f4acfFBE830E8ed7f75Fb9e0); + config.marketplace = _addr(0x65B49f7AEE40347f5A90b714be4eF086f3fe5E2C); + config.auctionHouse = _addr(0x8c9F364bf7a56Ed058fc63Ef81c6Cf09c833e656); + config.marketplaceWalletV1Token = _addr(0x859C43DDbC6aD28b1eefb40d1CD696d187BAE76D); + config.creatorRegistry = _addr(0xED6Fd0e8c85BA50438f2399efCcA1c6476D04eA6); + config.marketplaceSettingsV3 = _addr(0x61DBF87164d33FD3695256DC8Ba74D3B1d304170); + config.marketplaceSettingsV2 = _addr(0xec882716989e12C31e72C8A48924941D2bA5284E); + config.marketplaceSettingsV1 = _addr(0x1634c3b0b39da13f8724361bdF295b607767B456); + config.sovereignSeriesFactorySpecialCreator = _addr(0x8B0a05d8FCEA149dC2d215342b233962dcc63483); + config.sovereignSeriesFactory = _addr(0xE980EC62378529D95Ba446433F4DEB6324129c59); + config.seriesNftTemplate = _addr(0xD89201E874DD35C9a7e80630ea98cE2595eAaa45); + config.rareClaim = _addr(0x5474b3abF3E58A2b32F329F3633406a0d2941E6F); + config.royaltyRegistry = _addr(0x17B0C8564E53f22364A6C8de6F7ca5CE9BEa4e5D); + config.bazaar = _addr(0x6D7c44773C52D396F43c2D511B81aa168E9a7a42); + config.bazaarMarketplace = _addr(0x39C36E6E02e7CC0079988C6731D54cF40fc53490); + config.bazaarAuctionHouse = _addr(0x762e0C294dEc7f17e632f6A50DC3386F81Fc13d6); + config.spaceOperatorRegistry = _addr(0x18C4545274721940985e93b1991CC651B1A41a8b); + config.payments = _addr(0xc033BBef0Af25Db7523FCe16BaB1C39df0bF2Ae3); + config.collectorRoyaltiesClaim = _addr(0xb661241653B0174e3d758CeE01e320A1f4BcAeBF); + config.rareProxyAdmin = _addr(0x714C85F8de8632FaC4042C06B95329b9E78AeDB5); + config.rareGovToken = _addr(0xba5BDe662c17e2aDFF1075610382B9B691296350); + config.spaceFactory = _addr(0x3B2d699110aa1788B2B1cae336E0bA8ff942A390); + config.spaceNftTemplate = _addr(0x093Ebc9D65E990Ab6D615b761ceaDAC026c865e5); + config.superRareAdmin = _addr(0x186FbE119aC87c65B9cfA9Da07bEc216FA35E6cE); + config.approvedTokenRegistry = _addr(0x16c9e9Bc7fD73F538e7dFc2eb1A21F429C3e0B8C); + config.rarePassNft = _addr(0xbbb62C4B8ed027530Ce5F6663D1A2aa8a7E8CaCF); + config.stakingRegistry = _addr(0x0c891cBA9A617e6B06c9B6FBBD340d61e4Dd313b); + config.rewardAccumulatorFactory = _addr(0x7Eeb592e65d7f977717ece8f087dBD931F3b21C5); + config.rarityPoolFactory = _addr(0x5d09145E1E798c7a885e49a6FC4f0542ce231A47); + config.lazySovereignFactory = _addr(0xba798BD606d86D207ca2751510173532899117a1); + config.rareMinterLogic = _addr(0xf4E4ADf2F91b8951e7B0fB218152d743B680b636); + config.rareMinter = _addr(0x5fa112EFeD8297bec0010b312208d223E0cE891E); + config.baseL1BridgeProxy = _addr(0x88135DD0e7a8a2e42272DdA89849a997CE2e83f7); + config.baseL1BridgeImplementation = _addr(0x137De26EAc8ac7D32a29d6C90400EA5A0dA3aE59); + config.batchOfferCreatorImplementation = _addr(0xfb5d0E8b2fEFC64971A075BeD08011Ac38876E7D); + config.batchOfferCreatorProxy = _addr(0xE15CF80b25272ade261532EfDB7912F9104851d4); + config.season1Claim = _addr(0x65B852E084d4b7B3a3ab202541aF3bc5E7b2af03); + config.erc20ApprovalManager = _addr(0xa837a7eAff154Ab837617Cf7250648D3Ec0A4436); + config.erc721ApprovalManager = _addr(0x4bb0Deea6d1A30C601338aAB776d394C2AE5c0F8); + config.erc1155ApprovalManager = address(0); + config.approvalManagerAdmin = _addr(0xdc005449848f65639D101A7D2B141c527E53f9d4); + config.rareBatchAuctionHouseProxy = _addr(0xdfce0a0569492c59f27B3715b81F1Bd25DdEbcE3); + config.rareBatchAuctionHouseLogic = _addr(0xED45D28be67A99Fa83194Ed9568712775688b18C); + config.rareBatchListingMarketplaceImplementation = _addr(0xE46Eab414D5aF20C18DfE3d276973D28126ceeAC); + config.rareBatchListingMarketplaceProxy = _addr(0x6a190885A806D39A0A8C348bfA1ac762D72E608d); + config.rareStakingV1 = _addr(0x3f4D749675B3e48bCCd932033808a7079328Eb48); + config.rareStakingV1Implementation = _addr(0xFCAA7FbB6F6Bf16aA546fE81261F590288FC21A1); + config.sovereignBatchMintFactory = _addr(0xAe8E375a268Ed6442bEaC66C6254d6De5AeD4aB1); + config.sovereignBatchMintImplementation = _addr(0x8FDEEd0d2A66277131003F686Dab90eDaBF3EA51); + config.batchAuctionHouse = _addr(0xdfce0a0569492c59f27B3715b81F1Bd25DdEbcE3); + config.royaltyEngineManifold = _addr(0x0385603ab55642cb4Dd5De3aE9e306809991804f); + config.lazySovereignBatchMintFactory = _addr(0x40F9E4b420D5A8fF5aED32B5F72A37013c0739B6); + config.superRareBazaarErc20BuyProxy = _addr(0x9d7f4fbe053Fc5029AC17E67d6138980D6212Fa5); + config.liquidFactory = _addr(0x25f993C222fE5e891128a782A5168f1C78629540); + config.liquidRouter = _addr(0xEBd58EdA8408d9EA409f2c2bE8898BD9738f3583); + config.liquidRegistry = _addr(0x4066052d6AAC25EcFB027fD0C1aD54A597Ce3A31); + config.rareBurner = _addr(0x64F366E6d515dA78930B8b37c858c67e357b7B5B); + config.networkBeneficiary = _addr(0x860a80d33E85e97888F1f0C75c6e5BBD60b48DA9); + + // Missing from directory. + config.rareImplementation = address(0); + config.ethRareFaucet = address(0); + config.baseL2BridgeProxy = address(0); + config.baseL2BridgeImplementation = address(0); + config.rareGovTokenL2Proxy = address(0); + config.ccipReceiverL2 = address(0); + config.season2Claim = address(0); + config.season3Claim = address(0); + config.marketUtilsV2 = address(0); + } + + function _ethereumSepolia() private pure returns (Addresses memory config) { + config.superRareV1 = _addr(0x4eb420094a17f243878896e274D67A04F916C214); + config.superRareV2 = _addr(0x6C7C4879dd37Bdf2B57f128b344DeF62DA0Ca34e); + config.creatorRegistry = _addr(0x38302C717F793dD7EA5C0a2F215494409EaD3ce0); + config.marketplaceSettingsV3 = _addr(0x972dEe8fa339ad2D9c6cbDA31b67f98Fac242d13); + config.marketplaceSettingsV2 = _addr(0x19aaBde5B3d83705EA294fC1aE0E2463Aa9b16Cd); + config.marketplaceSettingsV1 = _addr(0x410995DdEC253124a10BDf651FC4c3313d7F7bd8); + config.sovereignSeriesFactorySpecialCreator = _addr(0xce719c6C4aCac81c6052Fb2A6723B7e4209a7992); + config.sovereignSeriesFactory = _addr(0x097Fbc68C9FBbEbA75E64337beC9759F10C9f3B6); + config.royaltyRegistry = _addr(0xca491bb62A7730E97F500510132C47633DDD0229); + config.bazaar = _addr(0xC8Edc7049b233641ad3723D6C60019D1c8771612); + config.bazaarMarketplace = _addr(0xA6c7462d370930052D5c71644BEbCA26C505BC67); + config.bazaarAuctionHouse = _addr(0xE2A332f875683793f7005c89a3742ec55557FF3c); + config.spaceOperatorRegistry = _addr(0x31fF6869aCfFa4179Ce1BDF097Cf3EdF7C1F7AD0); + config.payments = _addr(0x4aD440013C5B6aD09D03A3FE26DA8EcFaFc17067); + config.rareGovToken = _addr(0x197FaeF3f59eC80113e773Bb6206a17d183F97CB); + config.rareImplementation = _addr(0xfF0D5A1ce9166f4d530928Db305c46F843622061); + config.spaceFactory = _addr(0x8b21bC8571d11F7AdB705ad8F6f6BD1deb79cE01); + config.approvedTokenRegistry = _addr(0x297d05Dc747E993D8Ded20529CFFb7cA46793123); + config.ethRareFaucet = _addr(0xb4F321B1623bB1D4DfedEB3B28288d12AEeE6640); + config.stakingRegistry = _addr(0x18764BEA22e63e7F58D3cF454D94e279bA0f3F3C); + config.rewardAccumulatorFactory = _addr(0xdD0aDcd77Df006c5De1EeF37478c21f12010549A); + config.rarityPoolFactory = _addr(0x2ddDee42069B66A290c2979D62eb498692492eD9); + config.lazySovereignFactory = _addr(0xc5B8Ad9003673a23d005A6448C74d8955a1a38fA); + config.rareMinterLogic = _addr(0xf9711adb01570eac30467007B3bBf9817A3B4632); + config.rareMinter = _addr(0xd28Dc0B89104d7BBd902F338a0193fF063617ccE); + config.baseL1BridgeProxy = _addr(0xdC168291658f6C5F1D0b33E573c4d289DCA9dD08); + config.baseL1BridgeImplementation = _addr(0xdE164B8921da366bA57673e74C7De76f7C42b8f8); + config.batchOfferCreatorImplementation = _addr(0x933394bADE88fFdb1815E22c7Bf0Dc943aC9B404); + config.batchOfferCreatorProxy = _addr(0x371CCA54eF859bB0C7b910581a528Ee47773fd56); + config.season1Claim = _addr(0xEEfE348b0d5ECD0D14336dB80e83aBbA32e7EAF6); + config.marketUtilsV2 = _addr(0xD159af05670A6A5bBaB9e086717667C75351Ba3e); + config.erc20ApprovalManager = _addr(0x4619eB29e84392CE91C27FC936A5c94d1D14b93f); + config.erc721ApprovalManager = _addr(0x5fa0a461d3a2Ea3bFDf03e8BD37CAbB4ae84205E); + config.erc1155ApprovalManager = _addr(0xcD26069837682aeD8Ba20852AD17b8f64a860906); + config.rareErc1155TradeExecutionModule = _addr(0xcac913ED2530639Eed7F9776876E5BCCEaFE71F0); + config.rareErc1155CheckoutExecutionModule = _addr(0x8513256A682a1849051a139c26420bf713eae0bF); + config.rareErc1155MarketplaceImplementation = _addr(0x154ca5088b07c6dF323D3E13ed48F2D8B3d082A7); + config.rareErc1155MarketplaceProxy = _addr(0xb26DE57230913a44F37AcE78F5b7eB2Efec474eE); + config.rareErc1155ContractFactory = _addr(0xF8FF48ca6022138C58e2eDD680a02d7Cd394B957); + config.rareErc1155Implementation = _addr(0x8442874bD9bC64286C1b01EedEb98cd70F467E84); + config.rareErc1155ContractFactoryOwner = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); + config.rareErc1155ContractFactoryDefaultMinter = _addr(0xb26DE57230913a44F37AcE78F5b7eB2Efec474eE); + config.approvalManagerAdmin = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); + config.rareBatchAuctionHouseProxy = _addr(0x293AE7701A7830B1d38A7608EdF86A106d9E2645); + config.rareBatchAuctionHouseLogic = _addr(0xc0D9CB069d7CfFb963A1527968bF28370A978BB6); + config.rareBatchListingMarketplaceImplementation = _addr(0xBF36590B433d22C5D69C37BE0C5E3Dfc178EdDfc); + config.rareBatchListingMarketplaceProxy = _addr(0xF2bE72d4343beD375Cb6d0E799a3c003163860e0); + config.sovereignBatchMintFactory = _addr(0x3c7526A0975156299CeEF369B8fF3c01cc670523); + config.sovereignBatchMintImplementation = _addr(0xB9530FbA6cA19990E0E838D47c5AF0e4396A386e); + config.royaltyEngineManifold = _addr(0xEF770dFb6D5620977213f55f99bfd781D04BBE15); + config.lazySovereignBatchMintFactory = _addr(0xE5efBA88D556aDA98124654fE505465b8d494858); + config.superRareBazaarErc20BuyProxy = _addr(0xC68D3f1D951DEb15c384E6534d82fb4dd9e87717); + config.liquidFactory = _addr(0xb1777091C953fa2aC1fD67f2b3e2f61343F5Ce5e); + config.liquidRouter = _addr(0x429c3Ee66E7f6CDA12C5BadE4104aF3277aA2305); + config.liquidRegistry = _addr(0x979C2FB02B8cF352eBeD15872B76b8bE78B64Ebc); + config.rareBurner = _addr(0x9F9c2FBC75bbea5792250374527D701332DAB4a6); + config.networkBeneficiary = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); + + // Missing from directory. + config.marketplace = address(0); + config.auctionHouse = address(0); + config.marketplaceWalletV1Token = address(0); + config.seriesNftTemplate = address(0); + config.rareClaim = address(0); + config.collectorRoyaltiesClaim = address(0); + config.rareProxyAdmin = address(0); + config.spaceNftTemplate = address(0); + config.superRareAdmin = address(0); + config.rarePassNft = address(0); + config.baseL2BridgeProxy = address(0); + config.baseL2BridgeImplementation = address(0); + config.rareGovTokenL2Proxy = address(0); + config.ccipReceiverL2 = address(0); + config.season2Claim = address(0); + config.season3Claim = address(0); + config.rareStakingV1 = address(0); + config.rareStakingV1Implementation = address(0); + config.batchAuctionHouse = address(0); + } + + function _baseMainnet() private pure returns (Addresses memory config) { + config.marketplaceSettingsV3 = _addr(0x1Ca04105730EF2bBE93040Feb20aCc668292F69D); + config.marketplaceSettingsV2 = _addr(0xDDAB7C8a64eBb9E1736c2EFFA1399b43601527C0); + config.marketplaceSettingsV1 = _addr(0xb8BEA146470829F5ad4029D27338BDE7124c6704); + config.bazaar = _addr(0x51c36FFB05e17ed80Ee5C02fa83D7677C5613De2); + config.bazaarMarketplace = _addr(0x9C08cB5eff936183174d7A3D4571488aa74FB18D); + config.bazaarAuctionHouse = _addr(0x8Ea45f64b9D0c16D5704d16877F2dd93C6978C0E); + config.payments = _addr(0x276F25fF0873cb8B5322221264aF8bD631487952); + config.rareGovToken = _addr(0x691077C8e8de54EA84eFd454630439F99bd8C92f); + config.rareImplementation = _addr(0x65B852E084d4b7B3a3ab202541aF3bc5E7b2af03); + config.approvedTokenRegistry = _addr(0x23Ee5A62726a17c9594F19B893aDd0BF89dB6075); + config.baseL2BridgeProxy = _addr(0x3b41e21094611D152a08d3691a70837F1A077dAE); + config.baseL2BridgeImplementation = _addr(0x577A151b12294B83E99E44464e67c69ca06864BE); + config.rareGovTokenL2Proxy = _addr(0x691077C8e8de54EA84eFd454630439F99bd8C92f); + config.season2Claim = _addr(0xab90E329d2a8b0497e1acF3F00D682B74D6Fb33F); + config.season3Claim = _addr(0x6F7CB9334F7b73508d7031B5268f8B6321F2bCF7); + config.sovereignBatchMintFactory = _addr(0xf776204233Bfb52bA0dDfF24810CbDbf3DBf94dd); + config.sovereignBatchMintImplementation = _addr(0x963427D84540A5B53b2cbD08c82533E3E963aCd4); + config.royaltyEngineManifold = _addr(0xEF770dFb6D5620977213f55f99bfd781D04BBE15); + config.liquidFactory = _addr(0x54016106A92895a38E54cA286216416750e517b1); + config.liquidRouter = _addr(0x6d078A410ee2AD08cACD8d22b486365433e98b7b); + config.liquidRegistry = _addr(0x539e8261e18C56D801c7549fb29d06c779ef5004); + config.rareBurner = _addr(0x8B333c7cE380A7efE110Ea444e81609DBA4b75e5); + config.networkBeneficiary = _addr(0xD2437c0511906085CbDD06C27e8915d715dC3290); + + // Missing from directory. + config.superRareV1 = address(0); + config.superRareV2 = address(0); + config.marketplace = address(0); + config.auctionHouse = address(0); + config.marketplaceWalletV1Token = address(0); + config.creatorRegistry = address(0); + config.sovereignSeriesFactorySpecialCreator = address(0); + config.sovereignSeriesFactory = address(0); + config.seriesNftTemplate = address(0); + config.rareClaim = address(0); + config.royaltyRegistry = address(0); + config.spaceOperatorRegistry = address(0); + config.collectorRoyaltiesClaim = address(0); + config.rareProxyAdmin = address(0); + config.spaceFactory = address(0); + config.spaceNftTemplate = address(0); + config.superRareAdmin = address(0); + config.rarePassNft = address(0); + config.ethRareFaucet = address(0); + config.stakingRegistry = address(0); + config.rewardAccumulatorFactory = address(0); + config.rarityPoolFactory = address(0); + config.lazySovereignFactory = address(0); + config.rareMinterLogic = address(0); + config.rareMinter = address(0); + config.baseL1BridgeProxy = address(0); + config.baseL1BridgeImplementation = address(0); + config.ccipReceiverL2 = address(0); + config.batchOfferCreatorImplementation = address(0); + config.batchOfferCreatorProxy = address(0); + config.season1Claim = address(0); + config.marketUtilsV2 = address(0); + config.erc20ApprovalManager = address(0); + config.erc721ApprovalManager = address(0); + config.rareBatchAuctionHouseProxy = address(0); + config.rareBatchAuctionHouseLogic = address(0); + config.rareBatchListingMarketplaceImplementation = address(0); + config.rareBatchListingMarketplaceProxy = address(0); + config.rareStakingV1 = address(0); + config.rareStakingV1Implementation = address(0); + config.batchAuctionHouse = address(0); + config.lazySovereignBatchMintFactory = address(0); + config.superRareBazaarErc20BuyProxy = address(0); + } + + function _baseSepolia() private pure returns (Addresses memory config) { + config.creatorRegistry = _addr(0x74797488D1000d08B1f364d0989c011a86165CC1); + config.marketplaceSettingsV3 = _addr(0xC83551914aB8784B4D779794cD74d12Ac4dF26Bc); + config.marketplaceSettingsV2 = _addr(0x560f1Bd4B1b704073eDcEe6C1f930AC4E3AE6811); + config.marketplaceSettingsV1 = _addr(0x7cee969e4FCB21AD3ba3e3AE49168E7189eCF2b4); + config.sovereignSeriesFactory = _addr(0xDA805c4f6A1Af4495e6974f303Fce9d77546e804); + config.royaltyRegistry = _addr(0xBdB00e1C5B63b3382aD51857432377d982e51AE5); + config.bazaar = _addr(0x1f0c946F0EE87ACb268D50ede6C9B4D010AF65D2); + config.bazaarMarketplace = _addr(0xDBC12C846F1079c4B4fD0976A2A1c1231d26E525); + config.bazaarAuctionHouse = _addr(0xE7962f6F6A9D66682040A61E81eC711A7160d55A); + config.spaceOperatorRegistry = _addr(0xcDC46F9Dc5Ea3619F37f9e6cF000eb8c8006EB48); + config.payments = _addr(0xCe898D2308cEB524299C4657e63CBB720d07Ff7C); + config.rareGovToken = _addr(0x8b21bC8571d11F7AdB705ad8F6f6BD1deb79cE01); + config.approvedTokenRegistry = _addr(0x0eF69420ff32aB9c6D948eAc2fa88f3E67D0D239); + config.erc20ApprovalManager = _addr(0x1104B5dA0fc1C08011a90557CA9b495c29D9BBaa); + config.erc721ApprovalManager = _addr(0xaDf5459B9B6B3021aef027EC23E68C4011303F5B); + config.erc1155ApprovalManager = _addr(0xDCEA787A109b2627a895EEb49FCe2D1dA63aA8E4); + config.rareErc1155TradeExecutionModule = _addr(0xae2a455f05D83D0B8e51a22E2b5452BE39219398); + config.rareErc1155CheckoutExecutionModule = _addr(0xf1361B8fe3b721A821292BdD4a43f3cc949DdF28); + config.rareErc1155MarketplaceImplementation = _addr(0x90406F0c92256055EeACBDFEaa39d348b0DB8BF5); + config.rareErc1155MarketplaceProxy = _addr(0xc0D9CB069d7CfFb963A1527968bF28370A978BB6); + config.rareErc1155ContractFactory = _addr(0x293AE7701A7830B1d38A7608EdF86A106d9E2645); + config.rareErc1155Implementation = _addr(0x9DF98290b6ad210CFE31e1b349E9807D7F016FDe); + config.rareErc1155ContractFactoryOwner = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); + config.rareErc1155ContractFactoryDefaultMinter = _addr(0xc0D9CB069d7CfFb963A1527968bF28370A978BB6); + config.baseL2BridgeProxy = _addr(0xca491bb62A7730E97F500510132C47633DDD0229); + config.baseL2BridgeImplementation = _addr(0x38302C717F793dD7EA5C0a2F215494409EaD3ce0); + config.rareGovTokenL2Proxy = _addr(0x8b21bC8571d11F7AdB705ad8F6f6BD1deb79cE01); + config.ccipReceiverL2 = _addr(0x2B70a05320cB069e0fB55084D402343F832556E7); + config.season2Claim = _addr(0x2A2d4Aa38afc2E48D89EbE9b57820277fBca7F2e); + config.rareStakingV1 = _addr(0x510790DA86cc1a818b517108E4B2855458d62dE6); + config.sovereignBatchMintFactory = _addr(0x2b181AE0f1AEA6FEd75591B04991B1A3F9868D51); + config.sovereignBatchMintImplementation = _addr(0x1aA72D8CD9295b4A4868F98E57Da989daf081f14); + config.royaltyEngineManifold = _addr(0x62e4a1458FA509B100F4614721Bb8463B5cC2D06); + config.liquidFactory = _addr(0x912ecC55445d87149d09d83426D0aC41379bB643); + config.liquidRouter = _addr(0x92438008608949E2C7eCef34c474792bAFe8a971); + config.liquidRegistry = _addr(0x5AB6B3f7eBEFDA67cfc4D135718F9E34d58856b9); + config.rareBurner = _addr(0x9156b06d9849429d5C6D32c815b56004d582e5C8); + config.networkBeneficiary = _addr(0x3B9C3C5EA16E7d3c9C0bb293a549aFa4066dc162); + + // Missing from directory. + config.superRareV1 = address(0); + config.superRareV2 = address(0); + config.marketplace = address(0); + config.auctionHouse = address(0); + config.marketplaceWalletV1Token = address(0); + config.sovereignSeriesFactorySpecialCreator = address(0); + config.seriesNftTemplate = address(0); + config.rareClaim = address(0); + config.collectorRoyaltiesClaim = address(0); + config.rareProxyAdmin = address(0); + config.rareImplementation = address(0); + config.spaceFactory = address(0); + config.spaceNftTemplate = address(0); + config.superRareAdmin = address(0); + config.rarePassNft = address(0); + config.ethRareFaucet = address(0); + config.stakingRegistry = address(0); + config.rewardAccumulatorFactory = address(0); + config.rarityPoolFactory = address(0); + config.lazySovereignFactory = address(0); + config.rareMinterLogic = address(0); + config.rareMinter = address(0); + config.baseL1BridgeProxy = address(0); + config.baseL1BridgeImplementation = address(0); + config.batchOfferCreatorImplementation = address(0); + config.batchOfferCreatorProxy = address(0); + config.season1Claim = address(0); + config.season3Claim = address(0); + config.marketUtilsV2 = address(0); + config.rareBatchAuctionHouseProxy = address(0); + config.rareBatchAuctionHouseLogic = address(0); + config.rareBatchListingMarketplaceImplementation = address(0); + config.rareBatchListingMarketplaceProxy = address(0); + config.rareStakingV1Implementation = address(0); + config.batchAuctionHouse = address(0); + config.lazySovereignBatchMintFactory = address(0); + config.superRareBazaarErc20BuyProxy = address(0); + } + + function _addr(address raw) private pure returns (address) { + return raw; + } +} diff --git a/script/approver/approval-manager-deploy/ApprovalManagerDeploy.s.sol b/script/approver/approval-manager-deploy/ApprovalManagerDeploy.s.sol index cc481f5..e305ab9 100644 --- a/script/approver/approval-manager-deploy/ApprovalManagerDeploy.s.sol +++ b/script/approver/approval-manager-deploy/ApprovalManagerDeploy.s.sol @@ -4,15 +4,15 @@ pragma solidity 0.8.18; import "forge-std/Script.sol"; import {ERC20ApprovalManager} from "../../../src/v2/approver/ERC20/ERC20ApprovalManager.sol"; import {ERC721ApprovalManager} from "../../../src/v2/approver/ERC721/ERC721ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../../src/v2/approver/ERC1155/ERC1155ApprovalManager.sol"; /// @title ApprovalManagerDeploy -/// @notice Deployment script for ERC20ApprovalManager and ERC721ApprovalManager +/// @notice Deployment script for ERC20ApprovalManager, ERC721ApprovalManager, and ERC1155ApprovalManager contract ApprovalManagerDeploy is Script { function run() external { // 1. Load private key and start broadcast uint256 privateKey = vm.envUint("PRIVATE_KEY"); vm.startBroadcast(privateKey); - address deployer = vm.addr(privateKey); // 2. Deploy ERC20 Approval Manager ERC20ApprovalManager erc20ApprovalManager = new ERC20ApprovalManager(); @@ -20,9 +20,13 @@ contract ApprovalManagerDeploy is Script { // 3. Deploy ERC721 Approval Manager ERC721ApprovalManager erc721ApprovalManager = new ERC721ApprovalManager(); - // 4. Log deployed addresses + // 4. Deploy ERC1155 Approval Manager + ERC1155ApprovalManager erc1155ApprovalManager = new ERC1155ApprovalManager(); + + // 5. Log deployed addresses console.log("ERC20ApprovalManager deployed at:", address(erc20ApprovalManager)); console.log("ERC721ApprovalManager deployed at:", address(erc721ApprovalManager)); + console.log("ERC1155ApprovalManager deployed at:", address(erc1155ApprovalManager)); vm.stopBroadcast(); } diff --git a/script/approver/erc1155-approval-manager-deploy/ERC1155ApprovalManagerDeploy.s.sol b/script/approver/erc1155-approval-manager-deploy/ERC1155ApprovalManagerDeploy.s.sol new file mode 100644 index 0000000..71bda57 --- /dev/null +++ b/script/approver/erc1155-approval-manager-deploy/ERC1155ApprovalManagerDeploy.s.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {Script, console} from "forge-std/Script.sol"; + +import {ERC1155ApprovalManager} from "../../../src/v2/approver/ERC1155/ERC1155ApprovalManager.sol"; + +/// @title ERC1155ApprovalManagerDeploy +/// @notice Deploys ERC1155ApprovalManager and grants manager authority to the approval-manager and marketplace deployers. +/// @dev `APPROVAL_MANAGER_KEY` deploys the manager and receives DEFAULT_ADMIN_ROLE + MANAGER_ROLE in the constructor. +contract ERC1155ApprovalManagerDeploy is Script { + function run() external { + uint256 approvalManagerPrivateKey = vm.envUint("APPROVAL_MANAGER_KEY"); + uint256 marketplaceDeployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + address approvalManagerDeployer = vm.addr(approvalManagerPrivateKey); + address marketplaceDeployer = vm.addr(marketplaceDeployerPrivateKey); + + vm.startBroadcast(approvalManagerPrivateKey); + + ERC1155ApprovalManager manager = new ERC1155ApprovalManager(); + + if (marketplaceDeployer != approvalManagerDeployer) { + manager.grantRole(manager.MANAGER_ROLE(), marketplaceDeployer); + } + + vm.stopBroadcast(); + + bytes32 managerRole = manager.MANAGER_ROLE(); + bytes32 defaultAdminRole = manager.DEFAULT_ADMIN_ROLE(); + + console.log("ERC1155ApprovalManager deployed at:", address(manager)); + console.log("Approval manager deployer:", approvalManagerDeployer); + console.log("Marketplace deployer:", marketplaceDeployer); + console.log("Approval manager deployer has DEFAULT_ADMIN_ROLE:", manager.hasRole(defaultAdminRole, approvalManagerDeployer)); + console.log("Approval manager deployer has MANAGER_ROLE:", manager.hasRole(managerRole, approvalManagerDeployer)); + console.log("Marketplace deployer has MANAGER_ROLE:", manager.hasRole(managerRole, marketplaceDeployer)); + } +} diff --git a/script/marketplace/RareERC1155CheckoutExecutionModuleUpdate.s.sol b/script/marketplace/RareERC1155CheckoutExecutionModuleUpdate.s.sol new file mode 100644 index 0000000..4f75f30 --- /dev/null +++ b/script/marketplace/RareERC1155CheckoutExecutionModuleUpdate.s.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {console} from "forge-std/Script.sol"; + +import {RareERC1155CheckoutExecutionModule} from "../../src/marketplace/RareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155ExecutionModuleScriptGuard} from "./RareERC1155ExecutionModuleScriptGuard.s.sol"; + +/// @title RareERC1155CheckoutExecutionModuleUpdate +/// @notice Deploys a new checkout execution module and points an existing marketplace proxy at it. +contract RareERC1155CheckoutExecutionModuleUpdate is RareERC1155ExecutionModuleScriptGuard { + function run() external { + vm.startBroadcast(vm.envUint("PRIVATE_KEY")); + + address marketplaceProxy = vm.envAddress("RARE_ERC1155_MARKETPLACE"); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + _validateExecutionModuleForScript(address(checkoutExecutionModule)); + + RareERC1155Marketplace(marketplaceProxy).setCheckoutExecutionModule(address(checkoutExecutionModule)); + + console.log("RareERC1155CheckoutExecutionModule deployed at:", address(checkoutExecutionModule)); + console.log("RareERC1155Marketplace proxy updated at:", marketplaceProxy); + + vm.stopBroadcast(); + } +} diff --git a/script/marketplace/RareERC1155ExecutionModuleScriptGuard.s.sol b/script/marketplace/RareERC1155ExecutionModuleScriptGuard.s.sol new file mode 100644 index 0000000..a5f3ce0 --- /dev/null +++ b/script/marketplace/RareERC1155ExecutionModuleScriptGuard.s.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {Script} from "forge-std/Script.sol"; + +/// @notice Shared safety checks for scripts that configure ERC1155 marketplace execution modules. +abstract contract RareERC1155ExecutionModuleScriptGuard is Script { + bytes32 private constant ERC1967_IMPLEMENTATION_SLOT = + 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; + bytes32 private constant ERC1967_BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50; + bytes32 private constant ERC1967_ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; + + error ExecutionModuleHasNoCode(address _module); + error ExecutionModuleCannotBeUpgradeableProxy(address _module, bytes32 _slot, bytes32 _value); + + function _validateExecutionModuleForScript(address _module) internal view { + if (_module.code.length == 0) revert ExecutionModuleHasNoCode(_module); + _revertIfSlotSet(_module, ERC1967_IMPLEMENTATION_SLOT); + _revertIfSlotSet(_module, ERC1967_BEACON_SLOT); + _revertIfSlotSet(_module, ERC1967_ADMIN_SLOT); + } + + function _revertIfSlotSet(address _module, bytes32 _slot) private view { + bytes32 slotValue = vm.load(_module, _slot); + if (slotValue != bytes32(0)) { + revert ExecutionModuleCannotBeUpgradeableProxy(_module, _slot, slotValue); + } + } +} diff --git a/script/marketplace/RareERC1155MarketplaceDeploy.s.sol b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol new file mode 100644 index 0000000..203a42e --- /dev/null +++ b/script/marketplace/RareERC1155MarketplaceDeploy.s.sol @@ -0,0 +1,123 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {console} from "forge-std/Script.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import {ERC20ApprovalManager} from "../../src/v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../src/v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {RareERC1155CheckoutExecutionModule} from "../../src/marketplace/RareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155TradeExecutionModule} from "../../src/marketplace/RareERC1155TradeExecutionModule.sol"; +import {RareERC1155ExecutionModuleScriptGuard} from "./RareERC1155ExecutionModuleScriptGuard.s.sol"; +import {NetworkConfig} from "../NetworkConfig.s.sol"; + +/// @title RareERC1155MarketplaceDeploy +/// @notice Deploys the ERC1155 marketplace implementation, execution modules, and ERC1967 marketplace proxy. +contract RareERC1155MarketplaceDeploy is RareERC1155ExecutionModuleScriptGuard { + error NetworkAddressNotConfigured(string name, uint256 chainId); + error ApprovalManagerOperatorGrantUnauthorized(string name, address manager, address deployer, address operator); + error ApprovalManagerOperatorRoleMissing(string name, address manager, address operator); + + function run() external { + uint256 privateKey = vm.envUint("PRIVATE_KEY"); + address deployer = vm.addr(privateKey); + NetworkConfig.Addresses memory config = NetworkConfig.getCurrent(); + + vm.startBroadcast(privateKey); + + address networkBeneficiary = _required(config.networkBeneficiary, "networkBeneficiary"); + address marketplaceSettings = _required(config.marketplaceSettingsV3, "marketplaceSettingsV3"); + address royaltyEngine = _required(config.royaltyEngineManifold, "royaltyEngineManifold"); + address payments = _required(config.payments, "payments"); + address approvedTokenRegistry = _required(config.approvedTokenRegistry, "approvedTokenRegistry"); + address erc20ApprovalManager = _required(config.erc20ApprovalManager, "erc20ApprovalManager"); + address erc721ApprovalManager = _required(config.erc721ApprovalManager, "erc721ApprovalManager"); + address erc1155ApprovalManager = _required(config.erc1155ApprovalManager, "erc1155ApprovalManager"); + + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + _validateExecutionModuleForScript(address(tradeExecutionModule)); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + _validateExecutionModuleForScript(address(checkoutExecutionModule)); + RareERC1155Marketplace marketplaceImplementation = new RareERC1155Marketplace(); + + bytes memory initData = abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + royaltyEngine, + payments, + approvedTokenRegistry, + erc20ApprovalManager, + erc721ApprovalManager, + erc1155ApprovalManager, + address(tradeExecutionModule), + address(checkoutExecutionModule) + ); + + ERC1967Proxy marketplaceProxy = new ERC1967Proxy(address(marketplaceImplementation), initData); + + _grantErc20OperatorOrRevert(erc20ApprovalManager, address(marketplaceProxy), deployer); + _grantErc1155OperatorOrRevert(erc1155ApprovalManager, address(marketplaceProxy), deployer); + + console.log("Network:", NetworkConfig.chainName(block.chainid)); + console.log("Chain ID:", block.chainid); + console.log("Network beneficiary:", networkBeneficiary); + console.log("Marketplace settings:", marketplaceSettings); + console.log("Royalty engine:", royaltyEngine); + console.log("Payments:", payments); + console.log("Approved token registry:", approvedTokenRegistry); + console.log("ERC20ApprovalManager:", erc20ApprovalManager); + console.log("ERC721ApprovalManager:", erc721ApprovalManager); + console.log("ERC1155ApprovalManager:", erc1155ApprovalManager); + console.log("RareERC1155TradeExecutionModule deployed at:", address(tradeExecutionModule)); + console.log("RareERC1155CheckoutExecutionModule deployed at:", address(checkoutExecutionModule)); + console.log("RareERC1155Marketplace implementation deployed at:", address(marketplaceImplementation)); + console.log("RareERC1155Marketplace proxy deployed at:", address(marketplaceProxy)); + + vm.stopBroadcast(); + } + + function _required(address value, string memory name) private view returns (address) { + if (value == address(0)) revert NetworkAddressNotConfigured(name, block.chainid); + return value; + } + + function _grantErc20OperatorOrRevert(address manager, address operator, address deployer) private { + ERC20ApprovalManager approvalManager = ERC20ApprovalManager(manager); + bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); + if (approvalManager.hasRole(operatorRole, operator)) { + console.log("ERC20ApprovalManager operator role already granted:", operator); + return; + } + + if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { + revert ApprovalManagerOperatorGrantUnauthorized("ERC20ApprovalManager", manager, deployer, operator); + } + + approvalManager.grantOperatorRole(operator); + if (!approvalManager.hasRole(operatorRole, operator)) { + revert ApprovalManagerOperatorRoleMissing("ERC20ApprovalManager", manager, operator); + } + console.log("ERC20ApprovalManager operator role granted:", operator); + } + + function _grantErc1155OperatorOrRevert(address manager, address operator, address deployer) private { + ERC1155ApprovalManager approvalManager = ERC1155ApprovalManager(manager); + bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); + if (approvalManager.hasRole(operatorRole, operator)) { + console.log("ERC1155ApprovalManager operator role already granted:", operator); + return; + } + + if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { + revert ApprovalManagerOperatorGrantUnauthorized("ERC1155ApprovalManager", manager, deployer, operator); + } + + approvalManager.grantOperatorRole(operator); + if (!approvalManager.hasRole(operatorRole, operator)) { + revert ApprovalManagerOperatorRoleMissing("ERC1155ApprovalManager", manager, operator); + } + console.log("ERC1155ApprovalManager operator role granted:", operator); + } +} diff --git a/script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol b/script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol new file mode 100644 index 0000000..e99ceaf --- /dev/null +++ b/script/marketplace/RareERC1155MarketplaceLogicUpdate.s.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {Script, console} from "forge-std/Script.sol"; + +import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; + +/// @title RareERC1155MarketplaceLogicUpdate +/// @notice Deploys a new marketplace implementation and upgrades an existing marketplace proxy. +contract RareERC1155MarketplaceLogicUpdate is Script { + function run() external { + vm.startBroadcast(vm.envUint("PRIVATE_KEY")); + + address marketplaceProxy = vm.envAddress("RARE_ERC1155_MARKETPLACE"); + RareERC1155Marketplace marketplaceImplementation = new RareERC1155Marketplace(); + + RareERC1155Marketplace(marketplaceProxy).upgradeTo(address(marketplaceImplementation)); + + console.log("RareERC1155Marketplace implementation deployed at:", address(marketplaceImplementation)); + console.log("RareERC1155Marketplace proxy upgraded at:", marketplaceProxy); + + vm.stopBroadcast(); + } +} diff --git a/script/marketplace/RareERC1155TradeExecutionModuleUpdate.s.sol b/script/marketplace/RareERC1155TradeExecutionModuleUpdate.s.sol new file mode 100644 index 0000000..22382fc --- /dev/null +++ b/script/marketplace/RareERC1155TradeExecutionModuleUpdate.s.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {console} from "forge-std/Script.sol"; + +import {RareERC1155Marketplace} from "../../src/marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155TradeExecutionModule} from "../../src/marketplace/RareERC1155TradeExecutionModule.sol"; +import {RareERC1155ExecutionModuleScriptGuard} from "./RareERC1155ExecutionModuleScriptGuard.s.sol"; + +/// @title RareERC1155TradeExecutionModuleUpdate +/// @notice Deploys a new trade execution module and points an existing marketplace proxy at it. +contract RareERC1155TradeExecutionModuleUpdate is RareERC1155ExecutionModuleScriptGuard { + function run() external { + vm.startBroadcast(vm.envUint("PRIVATE_KEY")); + + address marketplaceProxy = vm.envAddress("RARE_ERC1155_MARKETPLACE"); + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + _validateExecutionModuleForScript(address(tradeExecutionModule)); + + RareERC1155Marketplace(marketplaceProxy).setTradeExecutionModule(address(tradeExecutionModule)); + + console.log("RareERC1155TradeExecutionModule deployed at:", address(tradeExecutionModule)); + console.log("RareERC1155Marketplace proxy updated at:", marketplaceProxy); + + vm.stopBroadcast(); + } +} diff --git a/script/marketplace/check-erc1155-storage-layout.sh b/script/marketplace/check-erc1155-storage-layout.sh new file mode 100755 index 0000000..e230d59 --- /dev/null +++ b/script/marketplace/check-erc1155-storage-layout.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -euo pipefail + +build_log="$(mktemp)" +trap 'rm -f "$build_log"' EXIT + +if ! forge build --extra-output storageLayout --skip test --skip script >"$build_log" 2>&1; then + cat "$build_log" >&2 + exit 1 +fi + +check_storage_less_module() { + local contract="$1" + local layout + layout="$(forge inspect "$contract" storage-layout --json | tr -d '[:space:]')" + + if [[ "$layout" != '{"storage":[],"types":{}}' ]]; then + echo "$contract must remain storage-less except for immutables." >&2 + forge inspect "$contract" storage-layout --json >&2 + exit 1 + fi +} + +marketplace_layout="$(forge inspect RareERC1155Marketplace storage-layout --json)" +unexpected_marketplace_labels="$( + printf "%s\n" "$marketplace_layout" \ + | sed '/"types"/,$d' \ + | grep '"label"' \ + | grep -Ev '"label": "(_initialized|_initializing|_owner|_status|__gap)"' \ + || true +)" + +if [[ -n "$unexpected_marketplace_labels" ]]; then + echo "RareERC1155Marketplace has unexpected non-namespaced storage labels:" >&2 + printf "%s\n" "$unexpected_marketplace_labels" >&2 + exit 1 +fi + +check_storage_less_module RareERC1155TradeExecutionModule +check_storage_less_module RareERC1155CheckoutExecutionModule + +echo "ERC1155 marketplace storage layout guard passed." diff --git a/script/token/ERC1155/RareERC1155FactoryDeploy.s.sol b/script/token/ERC1155/RareERC1155FactoryDeploy.s.sol new file mode 100644 index 0000000..d0a7445 --- /dev/null +++ b/script/token/ERC1155/RareERC1155FactoryDeploy.s.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {Script, console} from "forge-std/Script.sol"; + +import {RareERC1155ContractFactory} from "../../../src/token/ERC1155/RareERC1155ContractFactory.sol"; + +/// @title RareERC1155FactoryDeploy +/// @notice Forge deployment script for the ERC1155 clone factory. +/// @dev Reads `PRIVATE_KEY` and optional `RARE_ERC1155_DEFAULT_MINTER` from the environment. +contract RareERC1155FactoryDeploy is Script { + /// @notice Deploys the ERC1155 factory and optionally configures the default minter. + function run() external { + // Environment read: select deployer key for broadcast signing. + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + // Broadcast boundary: following operations are submitted as deployer transactions. + vm.startBroadcast(deployerPrivateKey); + + // Deployment operation: create the factory and its initial ERC1155 implementation. + RareERC1155ContractFactory factory = new RareERC1155ContractFactory(); + + // Environment read: optional minter approved on future factory-created collections. + address defaultMinter = vm.envOr("RARE_ERC1155_DEFAULT_MINTER", address(0)); + if (defaultMinter != address(0)) { + // State write transaction: configure default minter when provided. + factory.setDefaultMinter(defaultMinter); + } + + console.log("RareERC1155ContractFactory deployed at:", address(factory)); + console.log("RareERC1155 implementation deployed at:", factory.rareERC1155()); + console.log("RareERC1155ContractFactory owner:", factory.owner()); + console.log("RareERC1155ContractFactory default minter:", factory.defaultMinter()); + + // Broadcast boundary: stop submitting transactions. + vm.stopBroadcast(); + } +} diff --git a/script/token/ERC1155/RareERC1155SystemDeploy.s.sol b/script/token/ERC1155/RareERC1155SystemDeploy.s.sol new file mode 100644 index 0000000..70e15fe --- /dev/null +++ b/script/token/ERC1155/RareERC1155SystemDeploy.s.sol @@ -0,0 +1,134 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {console} from "forge-std/Script.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import {RareERC1155CheckoutExecutionModule} from "../../../src/marketplace/RareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155Marketplace} from "../../../src/marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155TradeExecutionModule} from "../../../src/marketplace/RareERC1155TradeExecutionModule.sol"; +import {ERC20ApprovalManager} from "../../../src/v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../../src/v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {RareERC1155ContractFactory} from "../../../src/token/ERC1155/RareERC1155ContractFactory.sol"; +import {RareERC1155ExecutionModuleScriptGuard} from "../../marketplace/RareERC1155ExecutionModuleScriptGuard.s.sol"; +import {NetworkConfig} from "../../NetworkConfig.s.sol"; + +/// @title RareERC1155SystemDeploy +/// @notice Deploys and wires the ERC1155 marketplace, approval managers, execution modules, and collection factory. +/// @dev Shared marketplace dependency addresses are selected from NetworkConfig using block.chainid. +contract RareERC1155SystemDeploy is RareERC1155ExecutionModuleScriptGuard { + error NetworkAddressNotConfigured(string name, uint256 chainId); + error ApprovalManagerOperatorGrantUnauthorized(string name, address manager, address deployer, address operator); + error ApprovalManagerOperatorRoleMissing(string name, address manager, address operator); + + function run() external { + uint256 privateKey = vm.envUint("PRIVATE_KEY"); + address deployer = vm.addr(privateKey); + NetworkConfig.Addresses memory config = NetworkConfig.getCurrent(); + + vm.startBroadcast(privateKey); + + address networkBeneficiary = _required(config.networkBeneficiary, "networkBeneficiary"); + address marketplaceSettings = _required(config.marketplaceSettingsV3, "marketplaceSettingsV3"); + address royaltyEngine = _required(config.royaltyEngineManifold, "royaltyEngineManifold"); + address payments = _required(config.payments, "payments"); + address approvedTokenRegistry = _required(config.approvedTokenRegistry, "approvedTokenRegistry"); + + address erc20ApprovalManager = _required(config.erc20ApprovalManager, "erc20ApprovalManager"); + address erc721ApprovalManager = _required(config.erc721ApprovalManager, "erc721ApprovalManager"); + address erc1155ApprovalManager = _required(config.erc1155ApprovalManager, "erc1155ApprovalManager"); + + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + _validateExecutionModuleForScript(address(tradeExecutionModule)); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + _validateExecutionModuleForScript(address(checkoutExecutionModule)); + + RareERC1155Marketplace marketplaceImplementation = new RareERC1155Marketplace(); + bytes memory initData = abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + royaltyEngine, + payments, + approvedTokenRegistry, + erc20ApprovalManager, + erc721ApprovalManager, + erc1155ApprovalManager, + address(tradeExecutionModule), + address(checkoutExecutionModule) + ); + + ERC1967Proxy marketplaceProxy = new ERC1967Proxy(address(marketplaceImplementation), initData); + + _grantErc20OperatorOrRevert(erc20ApprovalManager, address(marketplaceProxy), deployer); + _grantErc1155OperatorOrRevert(erc1155ApprovalManager, address(marketplaceProxy), deployer); + + RareERC1155ContractFactory factory = new RareERC1155ContractFactory(); + factory.setDefaultMinter(address(marketplaceProxy)); + + console.log("Network:", NetworkConfig.chainName(block.chainid)); + console.log("Chain ID:", block.chainid); + console.log("Deployer:", deployer); + console.log("Network beneficiary:", networkBeneficiary); + console.log("Marketplace settings:", marketplaceSettings); + console.log("Royalty engine:", royaltyEngine); + console.log("Payments:", payments); + console.log("Approved token registry:", approvedTokenRegistry); + console.log("ERC20ApprovalManager:", erc20ApprovalManager); + console.log("ERC721ApprovalManager:", erc721ApprovalManager); + console.log("ERC1155ApprovalManager:", erc1155ApprovalManager); + console.log("RareERC1155TradeExecutionModule:", address(tradeExecutionModule)); + console.log("RareERC1155CheckoutExecutionModule:", address(checkoutExecutionModule)); + console.log("RareERC1155Marketplace implementation:", address(marketplaceImplementation)); + console.log("RareERC1155Marketplace proxy:", address(marketplaceProxy)); + console.log("RareERC1155ContractFactory:", address(factory)); + console.log("RareERC1155 implementation:", factory.rareERC1155()); + console.log("RareERC1155ContractFactory owner:", factory.owner()); + console.log("RareERC1155ContractFactory default minter:", factory.defaultMinter()); + + vm.stopBroadcast(); + } + + function _required(address value, string memory name) private view returns (address) { + if (value == address(0)) revert NetworkAddressNotConfigured(name, block.chainid); + return value; + } + + function _grantErc20OperatorOrRevert(address manager, address operator, address deployer) private { + ERC20ApprovalManager approvalManager = ERC20ApprovalManager(manager); + bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); + if (approvalManager.hasRole(operatorRole, operator)) { + console.log("ERC20ApprovalManager operator role already granted:", operator); + return; + } + + if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { + revert ApprovalManagerOperatorGrantUnauthorized("ERC20ApprovalManager", manager, deployer, operator); + } + + approvalManager.grantOperatorRole(operator); + if (!approvalManager.hasRole(operatorRole, operator)) { + revert ApprovalManagerOperatorRoleMissing("ERC20ApprovalManager", manager, operator); + } + console.log("ERC20ApprovalManager operator role granted:", operator); + } + + function _grantErc1155OperatorOrRevert(address manager, address operator, address deployer) private { + ERC1155ApprovalManager approvalManager = ERC1155ApprovalManager(manager); + bytes32 operatorRole = approvalManager.OPERATOR_ROLE(); + if (approvalManager.hasRole(operatorRole, operator)) { + console.log("ERC1155ApprovalManager operator role already granted:", operator); + return; + } + + if (!approvalManager.hasRole(approvalManager.MANAGER_ROLE(), deployer)) { + revert ApprovalManagerOperatorGrantUnauthorized("ERC1155ApprovalManager", manager, deployer, operator); + } + + approvalManager.grantOperatorRole(operator); + if (!approvalManager.hasRole(operatorRole, operator)) { + revert ApprovalManagerOperatorRoleMissing("ERC1155ApprovalManager", manager, operator); + } + console.log("ERC1155ApprovalManager operator role granted:", operator); + } +} diff --git a/src/marketplace/IRareERC1155CheckoutExecutionModule.sol b/src/marketplace/IRareERC1155CheckoutExecutionModule.sol new file mode 100644 index 0000000..2320560 --- /dev/null +++ b/src/marketplace/IRareERC1155CheckoutExecutionModule.sol @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155CheckoutExecutionModule +/// @notice Checkout entrypoints executed through `RareERC1155Marketplace` delegatecalls. +interface IRareERC1155CheckoutExecutionModule is IRareERC1155MarketplaceTypes { + /// @notice Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert. + function checkout(CheckoutItem[] calldata _items) external payable returns (CheckoutExecution memory); + + /// @notice Executes one already validated checkout item through a nested delegatecall rollback boundary. + /// @dev Module-only entrypoint; the marketplace proxy does not expose this selector. + function executeCheckoutItem( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable returns (uint256 totalPaid, uint256 newRemainingEth); + + /// @notice Executes payout for a checkout item through a nested rollback boundary. + /// @dev Module-only entrypoint; the marketplace proxy does not expose this selector. + function executeCheckoutPayout( + CheckoutItem calldata _item, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable; +} diff --git a/src/marketplace/IRareERC1155Marketplace.sol b/src/marketplace/IRareERC1155Marketplace.sol new file mode 100644 index 0000000..05446cb --- /dev/null +++ b/src/marketplace/IRareERC1155Marketplace.sol @@ -0,0 +1,158 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155Marketplace +/// @notice Interface for ERC1155 marketplace state creation, escrow, configuration, and execution module routing. +interface IRareERC1155Marketplace is IRareERC1155MarketplaceTypes { + /// @notice Initializes the UUPS marketplace proxy. + function initialize( + address _networkBeneficiary, + address _marketplaceSettings, + address _royaltyEngine, + address _payments, + address _approvedTokenRegistry, + address _erc20ApprovalManager, + address _erc721ApprovalManager, + address _erc1155ApprovalManager, + address _tradeExecutionModule, + address _checkoutExecutionModule + ) external; + + /// @notice Configures or replaces primary mint sales for token ids. + /// @dev Request token ids must be strictly ascending. + function prepareMintDirectSales( + address _contractAddress, + address _currencyAddress, + DirectSaleRequest[] calldata _requests, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external; + + /// @notice Cancels configured primary mint sales for token ids. + /// @dev Token ids must be strictly ascending. + function cancelMintDirectSales(address _contractAddress, uint256[] calldata _tokenIds) external; + + /// @notice Sets token id allowlist configurations. + /// @dev Request token ids must be strictly ascending. + function setTokenAllowListConfigs(address _contractAddress, AllowListConfigRequest[] calldata _requests) external; + + /// @notice Sets max quantity each address may mint for token ids while a limit is enabled. + /// @dev Request token ids must be strictly ascending. + function setTokenMintLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) external; + + /// @notice Sets max mint transactions each address may submit for token ids while a limit is enabled. + /// @dev Request token ids must be strictly ascending. + function setTokenTxLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) external; + + /// @notice Creates or replaces secondary fixed-price listings. + /// @dev Request token ids must be strictly ascending. + function setSalePrices( + address _contractAddress, + address _currencyAddress, + SalePriceRequest[] calldata _requests, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external; + + /// @notice Cancels the caller's secondary listings for token ids. + /// @dev Token ids must be strictly ascending. + function cancelSalePrices(address _contractAddress, uint256[] calldata _tokenIds) external; + + /// @notice Creates or replaces a token-level ERC1155 offer. + function makeOffer( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + uint256 _expirationTime + ) external payable; + + /// @notice Cancels the caller's offer for one token id and currency. + function cancelOffer(address _contractAddress, uint256 _tokenId, address _currencyAddress) external; + + /// @notice Mints tokens from configured primary sales through the trade execution module. + function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) + external + payable; + + /// @notice Buys tokens from a seller's secondary fixed-price listings through the trade execution module. + function buyBatch( + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest[] calldata _requests + ) external payable; + + /// @notice Accepts all or part of an ERC1155 token offer through the trade execution module. + function acceptOffer( + address _contractAddress, + uint256 _tokenId, + address _buyer, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external; + + /// @notice Executes a buyer cart of direct-sale mints and secondary fixed-price listing purchases. + /// @dev Best-effort execution returns one result per item. All-skipped checkouts complete successfully. + function checkout(CheckoutItem[] calldata _items) external payable returns (CheckoutExecution memory); + + function getDirectSaleConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (DirectSaleConfig memory); + + function getTokenAllowListConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (AllowListConfig memory); + + function getTokenMintLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256); + + function getTokenMintsPerAddress(address _contractAddress, uint256 _tokenId, address _account) + external + view + returns (uint256); + + function getTokenTxLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256); + + function getTokenTxsPerAddress(address _contractAddress, uint256 _tokenId, address _account) + external + view + returns (uint256); + + function getSalePrice(address _contractAddress, uint256 _tokenId, address _seller) + external + view + returns (SalePrice memory); + + function getOffer(address _contractAddress, uint256 _tokenId, address _buyer, address _currencyAddress) + external + view + returns (Offer memory); + + function getMarketConfig() external view returns (MarketConfigV2.Config memory); + function getERC1155ApprovalManager() external view returns (address); + function getTradeExecutionModule() external view returns (address); + function getCheckoutExecutionModule() external view returns (address); + function isPaused() external view returns (bool); + + function setNetworkBeneficiary(address _networkBeneficiary) external; + function setMarketplaceSettings(address _marketplaceSettings) external; + function setRoyaltyEngine(address _royaltyEngine) external; + function setPayments(address _payments) external; + function setApprovedTokenRegistry(address _approvedTokenRegistry) external; + function setERC20ApprovalManager(address _erc20ApprovalManager) external; + function setERC721ApprovalManager(address _erc721ApprovalManager) external; + function setERC1155ApprovalManager(address _erc1155ApprovalManager) external; + function setTradeExecutionModule(address _tradeExecutionModule) external; + function setCheckoutExecutionModule(address _checkoutExecutionModule) external; + function setContractPaused(bool _isPaused) external; +} diff --git a/src/marketplace/IRareERC1155MarketplaceTypes.sol b/src/marketplace/IRareERC1155MarketplaceTypes.sol new file mode 100644 index 0000000..f93b8c5 --- /dev/null +++ b/src/marketplace/IRareERC1155MarketplaceTypes.sol @@ -0,0 +1,344 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155MarketplaceTypes +/// @notice Shared structs, events, and errors for the ERC1155 marketplace. +interface IRareERC1155MarketplaceTypes { + /// @notice Primary mint sale configuration for a collection token id. + /// @dev `maxMints` caps the quantity minted in a single transaction. Use token mint limits for cumulative per-address caps. + struct DirectSaleConfig { + address seller; + address currencyAddress; + uint256 price; + uint256 startTime; + uint256 maxMints; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + /// @notice Merkle allowlist configuration for a token id. + struct AllowListConfig { + bytes32 root; + uint256 endTimestamp; + } + + /// @notice Secondary fixed-price listing for an ERC1155 token id. + /// @dev `expirationTime == 0` means no expiration. Listings allow partial fills. + struct SalePrice { + address currencyAddress; + uint256 price; + uint256 quantity; + uint256 expirationTime; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + /// @notice Token-level ERC1155 offer state. + /// @dev Offers are escrowed and keyed by `(collection, tokenId, buyer, currency)`. + struct Offer { + address currencyAddress; + uint256 price; + uint256 quantity; + uint256 initialQuantity; + uint256 marketplaceFeeRemaining; + uint256 marketplaceFeeTotal; + uint256 expirationTime; + } + + /// @notice Primary sale setup input for one token id in a batch. + /// @dev `maxMints` caps the quantity minted in a single transaction. Use token mint limits for cumulative per-address caps. + struct DirectSaleRequest { + uint256 tokenId; + uint256 price; + uint256 startTime; + uint256 maxMints; + } + + /// @notice Primary mint input for one token id in a batch. + struct MintRequest { + uint256 tokenId; + uint256 price; + uint256 quantity; + bytes32[] proof; + } + + /// @notice Allowlist setup input for one token id in a batch. + struct AllowListConfigRequest { + uint256 tokenId; + bytes32 root; + uint256 endTimestamp; + } + + /// @notice Limit setup input for one token id in a batch. + struct TokenLimitRequest { + uint256 tokenId; + uint256 limit; + } + + /// @notice Secondary listing setup input for one token id in a batch. + struct SalePriceRequest { + uint256 tokenId; + uint256 price; + uint256 quantity; + uint256 expirationTime; + } + + /// @notice Secondary buy input for one token id in a batch. + struct BuyRequest { + uint256 tokenId; + uint256 price; + uint256 quantity; + } + + enum CheckoutItemKind { + DIRECT_SALE_MINT, + LISTING_BUY + } + + enum CheckoutFailureStage { + NONE, + VALIDATION, + PAYMENT_COLLECTION, + MINT, + TRANSFER, + PAYOUT, + UNKNOWN + } + + /// @notice Buyer cart item for primary mint sales and secondary fixed-price listings. + /// @dev `seller` is only used for `LISTING_BUY`; `DIRECT_SALE_MINT` resolves the seller from its sale config. + /// `itemKind` uses `CheckoutItemKind` values and is kept as uint8 so unknown future kinds can be skipped. + struct CheckoutItem { + uint8 itemKind; + address contractAddress; + address seller; + address currencyAddress; + uint256 tokenId; + uint256 price; + uint256 quantity; + bytes32[] proof; + } + + struct CheckoutSummary { + uint256 filledCount; + uint256 skippedCount; + uint256 ethSpent; + uint256 ethRefunded; + } + + struct CheckoutItemResult { + uint256 itemIndex; + uint8 itemKind; + address contractAddress; + uint256 tokenId; + address seller; + address currencyAddress; + uint256 price; + uint256 quantity; + bool filled; + CheckoutFailureStage failureStage; + bytes4 reason; + bytes failureData; + uint256 totalPaid; + } + + struct CheckoutExecution { + CheckoutSummary summary; + CheckoutItemResult[] items; + } + + event MarketplaceDependencyUpdated(bytes32 indexed field, address indexed dependency); + event ContractPausedUpdated(bool isPaused); + + event PrepareMintDirectSale( + address indexed contractAddress, + uint256 indexed tokenId, + address indexed seller, + address currency, + uint256 price, + uint256 startTime, + uint256 maxMints, + address payable[] splitRecipients, + uint8[] splitRatios + ); + + event MintDirectSale( + address indexed contractAddress, + uint256 indexed tokenId, + address indexed buyer, + address seller, + uint256 quantity, + address currency, + uint256 price + ); + + event MintDirectSaleCancelled(address indexed contractAddress, uint256 indexed tokenId); + + event SetTokenAllowListConfig( + address indexed contractAddress, uint256 indexed tokenId, bytes32 root, uint256 endTimestamp + ); + + event TokenMintLimitSet(address indexed contractAddress, uint256 indexed tokenId, uint256 limit); + event TokenTxLimitSet(address indexed contractAddress, uint256 indexed tokenId, uint256 limit); + + event SalePriceSet( + address indexed seller, + address indexed contractAddress, + uint256 indexed tokenId, + address currency, + uint256 price, + uint256 quantity, + uint256 expirationTime, + address payable[] splitRecipients, + uint8[] splitRatios + ); + + event SalePriceCancelled(address indexed seller, address indexed contractAddress, uint256 indexed tokenId); + + event Sold( + address indexed seller, + address indexed buyer, + address indexed contractAddress, + uint256 tokenId, + address currency, + uint256 price, + uint256 quantity + ); + + event OfferMade( + address indexed buyer, + address indexed contractAddress, + uint256 indexed tokenId, + address currency, + uint256 price, + uint256 quantity, + uint256 marketplaceFee, + uint256 expirationTime + ); + + event OfferCancelled( + address indexed buyer, + address indexed contractAddress, + uint256 indexed tokenId, + address currency, + uint256 price, + uint256 quantity, + uint256 marketplaceFeeRemaining + ); + + event OfferAccepted( + address indexed seller, + address indexed buyer, + address indexed contractAddress, + uint256 tokenId, + address currency, + uint256 price, + uint256 quantity + ); + + event CheckoutItemProcessed( + uint256 indexed itemIndex, + uint8 indexed itemKind, + address indexed contractAddress, + uint256 tokenId, + address seller, + address currencyAddress, + uint256 price, + uint256 quantity, + bool filled, + CheckoutFailureStage failureStage, + bytes4 reason, + bytes failureData, + uint256 totalPaid + ); + + event CheckoutCompleted( + address indexed buyer, uint256 filledCount, uint256 skippedCount, uint256 ethSpent, uint256 ethRefunded + ); + + error ContractPaused(); + error EmptyBatch(); + error BatchSizeExceeded(uint256 supplied, uint256 max); + error TokenIdsNotStrictlyAscending(uint256 index, uint256 previousTokenId, uint256 tokenId); + error NotContractOwner(address _contractAddress, address _account); + error TokenNotFound(address _contractAddress, uint256 _tokenId); + error DirectSaleNotConfigured(address _contractAddress, uint256 _tokenId); + error QuantityCannotBeZero(); + error MintLimitExceeded( + address _contractAddress, + uint256 _tokenId, + address _account, + uint256 _requestedQuantity, + uint256 _mintedQuantity, + uint256 _limit + ); + error TransactionLimitExceeded( + address _contractAddress, uint256 _tokenId, address _account, uint256 _usedTransactions, uint256 _limit + ); + error MaxMintExceeded(uint256 _requestedQuantity, uint256 _maxMints); + error SaleNotStarted(uint256 _startTime); + error PriceMismatch(uint256 _suppliedPrice, uint256 _configuredPrice); + error CurrencyMismatch(address _suppliedCurrency, address _configuredCurrency); + error SalePriceCannotBeZero(); + error SalePriceExpirationInvalid(uint256 _expirationTime, uint256 _currentTime); + error AllowListEndTimestampInvalid(uint256 _endTimestamp, uint256 _currentTime); + error InvalidERC1155Contract(address _contractAddress); + error SelfPurchaseUnsupported(address _seller); + error InsufficientTokenBalance( + address _account, + address _contractAddress, + uint256 _tokenId, + uint256 _requestedQuantity, + uint256 _availableQuantity + ); + error MarketplaceNotApproved(address _account, address _contractAddress); + error SalePriceDoesNotExist(address _contractAddress, uint256 _tokenId, address _seller); + error SalePriceExpired(address _contractAddress, uint256 _tokenId, address _seller, uint256 _expirationTime); + error QuantityExceedsSalePriceQuantity(uint256 _requestedQuantity, uint256 _availableQuantity); + error InvalidERC1155Transfer( + address _contractAddress, uint256 _tokenId, address _seller, address _buyer, uint256 _quantity + ); + error InvalidERC1155Mint(address _contractAddress, uint256 _tokenId, address _buyer, uint256 _quantity); + error AddressNotAllowlisted(address _account); + error ContractHasNoOwner(address _contractAddress); + error ApprovalManagerCannotBeZero(); + error MarketConfigAddressCannotBeZero(bytes32 _field); + error InvalidExecutionModule(); + error DirectModuleCallUnsupported(); + error ExecutionModuleDelegateCallFailed(bytes _revertData); + error UnsupportedCheckoutItemKind(uint8 _itemKind); + error CheckoutItemExecutionFailed(CheckoutFailureStage _stage, bytes _failureData); + error InsufficientCheckoutETH(uint256 _requiredAmount, uint256 _availableAmount); + error InsufficientCheckoutERC20Balance(address _currencyAddress, uint256 _requiredAmount, uint256 _availableAmount); + error InsufficientCheckoutERC20Allowance( + address _currencyAddress, uint256 _requiredAmount, uint256 _availableAmount + ); + error OfferPriceCannotBeZero(); + error OfferExpirationInvalid(uint256 _expirationTime, uint256 _currentTime); + error SelfOfferAcceptanceUnsupported(address _buyer); + error OfferDoesNotExist(address _contractAddress, uint256 _tokenId, address _buyer, address _currencyAddress); + error OfferExpired( + address _contractAddress, uint256 _tokenId, address _buyer, address _currencyAddress, uint256 _expirationTime + ); + error QuantityExceedsOfferQuantity(uint256 _requestedQuantity, uint256 _availableQuantity); + + error CurrencyNotApproved(address _currencyAddress); + error IncorrectETHAmount(uint256 _requiredAmount, uint256 _suppliedAmount); + error MsgValueUnsupportedForERC20(); + error ERC20FeeOnTransferUnsupported(address _currencyAddress, uint256 _expectedAmount, uint256 _receivedAmount); + error MsgValueMustBeZero(); + error RoyaltiesExceedSaleAmount(uint256 _royalties, uint256 _saleAmount); + error RoyaltyRecipientCannotBeZero(uint256 _index); + error PlatformCommissionExceeded(uint256 _platformCommission, uint256 _maxPlatformCommission); + error SplitRecipientsRequired(); + error SplitRecipientsExceededMax(uint256 _recipientsLength, uint256 _maxRecipients); + error SplitLengthMismatch(uint256 _recipientsLength, uint256 _ratiosLength); + error SplitRecipientCannotBeZero(uint256 _index); + error SplitRatioCannotBeZero(uint256 _index); + error SplitTotalInvalid(uint256 _totalRatio, uint256 _requiredTotal); + error PayoutFailed(bytes _revertData); + error RefundFailed(bytes _revertData); + error PayoutLengthMismatch(uint256 _recipientsLength, uint256 _amountsLength); + error PayoutTotalMismatch(uint256 _expectedAmount, uint256 _actualAmount); +} diff --git a/src/marketplace/IRareERC1155TradeExecutionModule.sol b/src/marketplace/IRareERC1155TradeExecutionModule.sol new file mode 100644 index 0000000..8f310a3 --- /dev/null +++ b/src/marketplace/IRareERC1155TradeExecutionModule.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155TradeExecutionModule +/// @notice Direct trade entrypoints executed through `RareERC1155Marketplace` delegatecalls. +interface IRareERC1155TradeExecutionModule is IRareERC1155MarketplaceTypes { + /// @notice Mints tokens from configured primary sales. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert. + function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) + external + payable; + + /// @notice Buys tokens from a seller's secondary fixed-price listings. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert. + function buyBatch( + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest[] calldata _requests + ) external payable; + + /// @notice Accepts all or part of an ERC1155 token offer. + /// @dev Intended for delegatecall from the marketplace proxy. Direct calls to the module implementation revert. + function acceptOffer( + address _contractAddress, + uint256 _tokenId, + address _buyer, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external; +} diff --git a/src/marketplace/RareERC1155CheckoutExecutionModule.sol b/src/marketplace/RareERC1155CheckoutExecutionModule.sol new file mode 100644 index 0000000..310b65f --- /dev/null +++ b/src/marketplace/RareERC1155CheckoutExecutionModule.sol @@ -0,0 +1,883 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; +import {ERC165Checker} from "openzeppelin-contracts/utils/introspection/ERC165Checker.sol"; + +import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; +import {IRareERC1155CheckoutExecutionModule} from "./IRareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155ExecutionModuleBase} from "./RareERC1155ExecutionModuleBase.sol"; +import {RareERC1155MarketplacePayments} from "./RareERC1155MarketplacePayments.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155CheckoutExecutionModule +/// @notice Delegatecall-only multi-item checkout execution module for the ERC1155 marketplace. +/// @dev Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through +/// `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy. +contract RareERC1155CheckoutExecutionModule is IRareERC1155CheckoutExecutionModule, RareERC1155ExecutionModuleBase { + using RareERC1155MarketplacePayments for MarketConfigV2.Config; + + struct CheckoutFillContext { + address seller; + uint256 grossAmount; + uint256 marketplaceFee; + uint256 maxMints; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + struct CheckoutDirectSaleMintAggregate { + address contractAddress; + uint256 tokenId; + uint256 quantity; + } + + function checkout(CheckoutItem[] calldata _items) + external + payable + onlyDelegateCall + returns (CheckoutExecution memory execution) + { + _validateCheckoutSize(_items.length); + + execution.items = new CheckoutItemResult[](_items.length); + MarketplaceStorage storage $ = _marketplaceStorage(); + CheckoutDirectSaleMintAggregate[] memory directSaleMintAggregates = + new CheckoutDirectSaleMintAggregate[](_items.length); + uint256 directSaleMintAggregateCount = 0; + uint256 remainingEth = msg.value; + for (uint256 i = 0; i < _items.length;) { + (CheckoutItemResult memory result, bool filled, uint256 newRemainingEth) = _processCheckoutItem( + $, _items[i], i, remainingEth, directSaleMintAggregates, directSaleMintAggregateCount + ); + if (filled) { + remainingEth = newRemainingEth; + _recordCheckoutDirectSaleMintTx($, _items[i], directSaleMintAggregates, directSaleMintAggregateCount); + directSaleMintAggregateCount = + _recordCheckoutDirectSaleMint(directSaleMintAggregates, directSaleMintAggregateCount, _items[i]); + execution.summary.filledCount += 1; + if (_items[i].currencyAddress == address(0)) execution.summary.ethSpent += result.totalPaid; + } else { + execution.summary.skippedCount += 1; + } + + execution.items[i] = result; + _emitCheckoutItemProcessed(result); + + unchecked { + ++i; + } + } + + execution.summary.ethRefunded = remainingEth; + if (remainingEth != 0) { + $.marketConfig.refund(address(0), payable(msg.sender), remainingEth); + } + + emit CheckoutCompleted( + msg.sender, + execution.summary.filledCount, + execution.summary.skippedCount, + execution.summary.ethSpent, + execution.summary.ethRefunded + ); + } + + function executeCheckoutItem( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable onlyDelegateCall returns (uint256 totalPaid, uint256 newRemainingEth) { + if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + return _executeCheckoutDirectSaleMint( + _item, _remainingEth, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios + ); + } + if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { + return _executeCheckoutListingBuy( + _item, _remainingEth, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios + ); + } + + revert CheckoutItemExecutionFailed( + CheckoutFailureStage.VALIDATION, + abi.encodeWithSelector(UnsupportedCheckoutItemKind.selector, _item.itemKind) + ); + } + + function executeCheckoutPayout( + CheckoutItem calldata _item, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external payable onlyDelegateCall { + _seller; + MarketplaceStorage storage $ = _marketplaceStorage(); + if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + $.marketConfig + .payoutPrimary( + _item.contractAddress, + _item.currencyAddress, + _grossAmount, + _marketplaceFee, + _splitRecipients, + _splitRatios + ); + return; + } + if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { + $.marketConfig + .payoutSecondary( + _item.contractAddress, + _item.tokenId, + _item.currencyAddress, + _grossAmount, + _marketplaceFee, + _splitRecipients, + _splitRatios + ); + return; + } + + revert UnsupportedCheckoutItemKind(_item.itemKind); + } + + function _processCheckoutItem( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + uint256 _itemIndex, + uint256 _remainingEth, + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount + ) internal returns (CheckoutItemResult memory result, bool filled, uint256 newRemainingEth) { + result = _baseCheckoutItemResult(_itemIndex, _item); + newRemainingEth = _remainingEth; + + bool directSaleMintTxAlreadyRecorded = + _checkoutDirectSaleMintAggregateQuantity( + _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId + ) != 0; + (bool valid, bytes memory failureData, CheckoutFillContext memory context) = + _validateCheckoutItem($, _item, directSaleMintTxAlreadyRecorded); + if (context.seller != address(0)) result.seller = context.seller; + if (!valid) { + _setCheckoutItemFailure(result, CheckoutFailureStage.VALIDATION, failureData); + return (result, false, newRemainingEth); + } + + bytes memory aggregateFailureData = _checkoutDirectSaleMintAggregateFailureData( + _item, _directSaleMintAggregates, _directSaleMintAggregateCount, context.maxMints + ); + if (aggregateFailureData.length != 0) { + _setCheckoutItemFailure(result, CheckoutFailureStage.VALIDATION, aggregateFailureData); + return (result, false, newRemainingEth); + } + + (bool success, bytes memory data) = + $.checkoutExecutionModule.delegatecall(_checkoutItemCallData(_item, _remainingEth, context)); + if (!success) { + (CheckoutFailureStage stage, bytes memory executionFailureData) = _checkoutExecutionFailure(data); + _setCheckoutItemFailure(result, stage, executionFailureData); + return (result, false, newRemainingEth); + } + + (uint256 totalPaid, uint256 nextRemainingEth) = abi.decode(data, (uint256, uint256)); + result.filled = true; + result.totalPaid = totalPaid; + return (result, true, nextRemainingEth); + } + + function _checkoutItemCallData( + CheckoutItem calldata _item, + uint256 _remainingEth, + CheckoutFillContext memory _context + ) internal pure returns (bytes memory) { + return abi.encodeWithSelector( + IRareERC1155CheckoutExecutionModule.executeCheckoutItem.selector, + _item, + _remainingEth, + _context.seller, + _context.grossAmount, + _context.marketplaceFee, + _context.splitRecipients, + _context.splitRatios + ); + } + + function _executeCheckoutDirectSaleMint( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal returns (uint256 totalPaid, uint256 newRemainingEth) { + newRemainingEth = _remainingEth; + MarketplaceStorage storage $ = _marketplaceStorage(); + + totalPaid = _grossAmount + _marketplaceFee; + bytes memory paymentFailureData = + _checkoutPaymentFailureData($.marketConfig, _item.currencyAddress, totalPaid, _remainingEth); + if (paymentFailureData.length != 0) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, paymentFailureData); + } + + bool mintLimitEnabled = $.tokenMintLimit[_item.contractAddress][_item.tokenId] > 0; + if (mintLimitEnabled) { + $.tokenMintsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] += _item.quantity; + } + + if (_item.currencyAddress == address(0)) { + newRemainingEth = _remainingEth - totalPaid; + } else { + _collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); + } + + _checkoutMintBatchToWithBalanceCheck( + _item.contractAddress, msg.sender, _singleUintArray(_item.tokenId), _singleUintArray(_item.quantity) + ); + + if (_grossAmount != 0) { + _executeCheckoutPayout($, _item, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios); + } + + emit MintDirectSale( + _item.contractAddress, + _item.tokenId, + msg.sender, + _seller, + _item.quantity, + _item.currencyAddress, + _item.price + ); + } + + function _executeCheckoutListingBuy( + CheckoutItem calldata _item, + uint256 _remainingEth, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal returns (uint256 totalPaid, uint256 newRemainingEth) { + newRemainingEth = _remainingEth; + MarketplaceStorage storage $ = _marketplaceStorage(); + + totalPaid = _grossAmount + _marketplaceFee; + bytes memory paymentFailureData = + _checkoutPaymentFailureData($.marketConfig, _item.currencyAddress, totalPaid, _remainingEth); + if (paymentFailureData.length != 0) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, paymentFailureData); + } + + if (_item.currencyAddress == address(0)) { + newRemainingEth = _remainingEth - totalPaid; + } else { + _collectCheckoutErc20($.marketConfig, _item.currencyAddress, totalPaid); + } + + SalePrice storage salePrice = $.salePrices[_item.contractAddress][_item.tokenId][_seller]; + salePrice.quantity -= _item.quantity; + if (salePrice.quantity == 0) { + delete $.salePrices[_item.contractAddress][_item.tokenId][_seller]; + } + + _checkoutSafeTransferFrom( + $.erc1155ApprovalManager, _item.contractAddress, _seller, msg.sender, _item.tokenId, _item.quantity + ); + + _executeCheckoutPayout($, _item, _seller, _grossAmount, _marketplaceFee, _splitRecipients, _splitRatios); + + emit Sold( + _seller, + msg.sender, + _item.contractAddress, + _item.tokenId, + _item.currencyAddress, + _item.price, + _item.quantity + ); + } + + function _validateCheckoutItem( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + bool _directSaleMintTxAlreadyRecorded + ) internal view returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) { + if (_item.itemKind == uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + return _validateCheckoutDirectSaleMint($, _item, _directSaleMintTxAlreadyRecorded); + } + if (_item.itemKind == uint8(CheckoutItemKind.LISTING_BUY)) { + return _validateCheckoutListingBuy($, _item); + } + + return (false, abi.encodeWithSelector(UnsupportedCheckoutItemKind.selector, _item.itemKind), context); + } + + function _validateCheckoutDirectSaleMint( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + bool _txLimitAlreadyConsumed + ) internal view returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) { + if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { + return (false, abi.encodeWithSelector(CurrencyNotApproved.selector, _item.currencyAddress), context); + } + if (!_checkoutValidErc1155Contract(_item.contractAddress)) { + return (false, abi.encodeWithSelector(InvalidERC1155Contract.selector, _item.contractAddress), context); + } + + (bool requestValid, bytes4 reason, PrimaryPayoutContext memory payoutContext) = _checkMintDirectSaleRequest( + $, + _item.contractAddress, + _item.currencyAddress, + msg.sender, + _item.tokenId, + _item.price, + _item.quantity, + _item.proof, + ContractHasNoOwner.selector, + _txLimitAlreadyConsumed + ); + context.seller = payoutContext.seller; + if (!requestValid) { + return ( + false, + _mintFailureData( + reason, + $, + _item.contractAddress, + _item.currencyAddress, + msg.sender, + _item.tokenId, + _item.price, + _item.quantity + ), + context + ); + } + + context.grossAmount = payoutContext.grossAmount; + if (context.grossAmount != 0) { + context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(context.grossAmount); + } + context.splitRecipients = payoutContext.splitRecipients; + context.splitRatios = payoutContext.splitRatios; + context.maxMints = payoutContext.maxMints; + + return (true, "", context); + } + + function _validateCheckoutListingBuy(MarketplaceStorage storage $, CheckoutItem calldata _item) + internal + view + returns (bool valid, bytes memory failureData, CheckoutFillContext memory context) + { + context.seller = _item.seller; + if (msg.sender == _item.seller) { + return (false, abi.encodeWithSelector(SelfPurchaseUnsupported.selector, _item.seller), context); + } + if (!_checkoutCurrencyApproved($.marketConfig, _item.currencyAddress)) { + return (false, abi.encodeWithSelector(CurrencyNotApproved.selector, _item.currencyAddress), context); + } + if (!_checkoutValidErc1155Contract(_item.contractAddress)) { + return (false, abi.encodeWithSelector(InvalidERC1155Contract.selector, _item.contractAddress), context); + } + + SecondaryPayoutContext memory payoutContext; + bytes4 reason; + (valid, reason, payoutContext) = _checkSecondaryBuyRequest( + $, _item.contractAddress, _item.seller, _item.currencyAddress, _item.tokenId, _item.price, _item.quantity + ); + if (!valid) { + return ( + false, + _secondaryFailureData( + reason, + $, + _item.contractAddress, + _item.seller, + _item.currencyAddress, + _item.tokenId, + _item.price, + _item.quantity + ), + context + ); + } + + IERC1155 erc1155 = IERC1155(_item.contractAddress); + try erc1155.isApprovedForAll(_item.seller, address($.erc1155ApprovalManager)) returns (bool isApproved) { + if (!isApproved) { + return ( + false, + abi.encodeWithSelector(MarketplaceNotApproved.selector, _item.seller, _item.contractAddress), + context + ); + } + } catch { + return ( + false, + abi.encodeWithSelector(MarketplaceNotApproved.selector, _item.seller, _item.contractAddress), + context + ); + } + + try erc1155.balanceOf(_item.seller, _item.tokenId) returns (uint256 sellerBalance) { + if (sellerBalance < _item.quantity) { + return ( + false, + abi.encodeWithSelector( + InsufficientTokenBalance.selector, + _item.seller, + _item.contractAddress, + _item.tokenId, + _item.quantity, + sellerBalance + ), + context + ); + } + } catch { + return ( + false, + abi.encodeWithSelector( + InsufficientTokenBalance.selector, + _item.seller, + _item.contractAddress, + _item.tokenId, + _item.quantity, + 0 + ), + context + ); + } + + context.grossAmount = payoutContext.grossAmount; + context.marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContext.grossAmount); + context.splitRecipients = payoutContext.splitRecipients; + context.splitRatios = payoutContext.splitRatios; + + return (true, "", context); + } + + function _executeCheckoutPayout( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + address _seller, + uint256 _grossAmount, + uint256 _marketplaceFee, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal { + (bool success, bytes memory data) = $.checkoutExecutionModule + .delegatecall( + abi.encodeWithSelector( + IRareERC1155CheckoutExecutionModule.executeCheckoutPayout.selector, + _item, + _seller, + _grossAmount, + _marketplaceFee, + _splitRecipients, + _splitRatios + ) + ); + if (!success) revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYOUT, data); + } + + function _baseCheckoutItemResult(uint256 _itemIndex, CheckoutItem calldata _item) + internal + pure + returns (CheckoutItemResult memory result) + { + result = CheckoutItemResult({ + itemIndex: _itemIndex, + itemKind: _item.itemKind, + contractAddress: _item.contractAddress, + tokenId: _item.tokenId, + seller: _item.seller, + currencyAddress: _item.currencyAddress, + price: _item.price, + quantity: _item.quantity, + filled: false, + failureStage: CheckoutFailureStage.NONE, + reason: bytes4(0), + failureData: new bytes(0), + totalPaid: 0 + }); + } + + function _setCheckoutItemFailure( + CheckoutItemResult memory _result, + CheckoutFailureStage _stage, + bytes memory _failureData + ) internal pure { + _result.failureStage = _stage; + _result.reason = _revertSelector(_failureData); + _result.failureData = _failureData; + } + + function _emitCheckoutItemProcessed(CheckoutItemResult memory _result) internal { + emit CheckoutItemProcessed( + _result.itemIndex, + _result.itemKind, + _result.contractAddress, + _result.tokenId, + _result.seller, + _result.currencyAddress, + _result.price, + _result.quantity, + _result.filled, + _result.failureStage, + _result.reason, + _result.failureData, + _result.totalPaid + ); + } + + function _checkoutExecutionFailure(bytes memory _revertData) + internal + pure + returns (CheckoutFailureStage stage, bytes memory failureData) + { + (bool decoded, CheckoutFailureStage decodedStage, bytes memory decodedFailureData) = + _decodeCheckoutItemExecutionFailed(_revertData); + if (decoded) return (decodedStage, decodedFailureData); + return (CheckoutFailureStage.UNKNOWN, _revertData); + } + + function _decodeCheckoutItemExecutionFailed(bytes memory _revertData) + internal + pure + returns (bool decoded, CheckoutFailureStage stage, bytes memory failureData) + { + // CheckoutItemExecutionFailed(CheckoutFailureStage,bytes): + // selector | stage | offset | bytes length | bytes data + if (_revertSelector(_revertData) != CheckoutItemExecutionFailed.selector || _revertData.length < 100) { + return (false, CheckoutFailureStage.NONE, ""); + } + + uint256 stageValue; + uint256 failureDataOffset; + uint256 failureDataLength; + assembly { + stageValue := mload(add(_revertData, 36)) + failureDataOffset := mload(add(_revertData, 68)) + failureDataLength := mload(add(_revertData, 100)) + } + if (stageValue > uint256(uint8(CheckoutFailureStage.UNKNOWN)) || failureDataOffset != 64) { + return (false, CheckoutFailureStage.NONE, ""); + } + + if (failureDataLength > _revertData.length - 100) return (false, CheckoutFailureStage.NONE, ""); + + assembly { + failureData := add(_revertData, 100) + } + return (true, CheckoutFailureStage(stageValue), failureData); + } + + function _checkoutDirectSaleMintAggregateFailureData( + CheckoutItem calldata _item, + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount, + uint256 _maxMints + ) internal pure returns (bytes memory) { + if (_item.itemKind != uint8(CheckoutItemKind.DIRECT_SALE_MINT) || _maxMints == 0) return ""; + + uint256 filledQuantity = _checkoutDirectSaleMintAggregateQuantity( + _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId + ); + uint256 aggregateQuantity = filledQuantity + _item.quantity; + if (aggregateQuantity <= _maxMints) return ""; + + return abi.encodeWithSelector(MaxMintExceeded.selector, aggregateQuantity, _maxMints); + } + + function _checkoutDirectSaleMintAggregateQuantity( + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount, + address _contractAddress, + uint256 _tokenId + ) internal pure returns (uint256) { + for (uint256 i = 0; i < _directSaleMintAggregateCount;) { + if ( + _directSaleMintAggregates[i].contractAddress == _contractAddress + && _directSaleMintAggregates[i].tokenId == _tokenId + ) { + return _directSaleMintAggregates[i].quantity; + } + + unchecked { + ++i; + } + } + + return 0; + } + + function _recordCheckoutDirectSaleMintTx( + MarketplaceStorage storage $, + CheckoutItem calldata _item, + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount + ) internal { + if (_item.itemKind != uint8(CheckoutItemKind.DIRECT_SALE_MINT)) return; + if ($.tokenTxLimit[_item.contractAddress][_item.tokenId] == 0) return; + if ( + _checkoutDirectSaleMintAggregateQuantity( + _directSaleMintAggregates, _directSaleMintAggregateCount, _item.contractAddress, _item.tokenId + ) != 0 + ) { + return; + } + + $.tokenTxsPerAddress[_item.contractAddress][_item.tokenId][msg.sender] += 1; + } + + function _recordCheckoutDirectSaleMint( + CheckoutDirectSaleMintAggregate[] memory _directSaleMintAggregates, + uint256 _directSaleMintAggregateCount, + CheckoutItem calldata _item + ) internal pure returns (uint256) { + if (_item.itemKind != uint8(CheckoutItemKind.DIRECT_SALE_MINT)) { + return _directSaleMintAggregateCount; + } + + for (uint256 i = 0; i < _directSaleMintAggregateCount;) { + if ( + _directSaleMintAggregates[i].contractAddress == _item.contractAddress + && _directSaleMintAggregates[i].tokenId == _item.tokenId + ) { + _directSaleMintAggregates[i].quantity += _item.quantity; + return _directSaleMintAggregateCount; + } + + unchecked { + ++i; + } + } + + _directSaleMintAggregates[_directSaleMintAggregateCount] = CheckoutDirectSaleMintAggregate({ + contractAddress: _item.contractAddress, tokenId: _item.tokenId, quantity: _item.quantity + }); + return _directSaleMintAggregateCount + 1; + } + + function _checkoutCurrencyApproved(MarketConfigV2.Config storage _config, address _currencyAddress) + internal + view + returns (bool) + { + if (_currencyAddress == address(0)) return true; + + try _config.approvedTokenRegistry.isApprovedToken(_currencyAddress) returns (bool approved) { + return approved; + } catch { + return false; + } + } + + function _checkoutValidErc1155Contract(address _contractAddress) internal view returns (bool) { + return _contractAddress.code.length != 0 + && ERC165Checker.supportsInterface(_contractAddress, type(IERC1155).interfaceId); + } + + function _checkoutPaymentFailureData( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount, + uint256 _remainingEth + ) internal view returns (bytes memory failureData) { + if (_amount == 0) return ""; + if (_currencyAddress == address(0)) { + if (_remainingEth >= _amount) return ""; + return abi.encodeWithSelector(InsufficientCheckoutETH.selector, _amount, _remainingEth); + } + + IERC20 erc20 = IERC20(_currencyAddress); + try erc20.balanceOf(msg.sender) returns (uint256 balance) { + if (balance < _amount) { + return + abi.encodeWithSelector( + InsufficientCheckoutERC20Balance.selector, _currencyAddress, _amount, balance + ); + } + } catch { + return abi.encodeWithSelector(InsufficientCheckoutERC20Balance.selector, _currencyAddress, _amount, 0); + } + + try erc20.allowance(msg.sender, address(_config.erc20ApprovalManager)) returns (uint256 allowance) { + if (allowance < _amount) { + return abi.encodeWithSelector( + InsufficientCheckoutERC20Allowance.selector, _currencyAddress, _amount, allowance + ); + } + } catch { + return abi.encodeWithSelector(InsufficientCheckoutERC20Allowance.selector, _currencyAddress, _amount, 0); + } + + return ""; + } + + function _collectCheckoutErc20(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) + internal + { + if (_amount == 0) return; + + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore; + try erc20.balanceOf(address(this)) returns (uint256 balance) { + balanceBefore = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, revertData); + } + + try _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount) {} + catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, revertData); + } + + uint256 balanceAfter; + try erc20.balanceOf(address(this)) returns (uint256 balance) { + balanceAfter = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.PAYMENT_COLLECTION, revertData); + } + + uint256 receivedAmount = balanceAfter >= balanceBefore ? balanceAfter - balanceBefore : 0; + if (receivedAmount != _amount) { + revert CheckoutItemExecutionFailed( + CheckoutFailureStage.PAYMENT_COLLECTION, + abi.encodeWithSelector( + ERC20FeeOnTransferUnsupported.selector, _currencyAddress, _amount, receivedAmount + ) + ); + } + } + + function _checkoutSafeTransferFrom( + IERC1155ApprovalManager _erc1155ApprovalManager, + address _contractAddress, + address _seller, + address _buyer, + uint256 _tokenId, + uint256 _amount + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + uint256 sellerBalanceBefore; + try erc1155.balanceOf(_seller, _tokenId) returns (uint256 balance) { + sellerBalanceBefore = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.TRANSFER, revertData); + } + if (sellerBalanceBefore < _amount) { + revert CheckoutItemExecutionFailed( + CheckoutFailureStage.TRANSFER, + abi.encodeWithSelector( + InsufficientTokenBalance.selector, _seller, _contractAddress, _tokenId, _amount, sellerBalanceBefore + ) + ); + } + + uint256 buyerBalanceBefore; + try erc1155.balanceOf(_buyer, _tokenId) returns (uint256 balance) { + buyerBalanceBefore = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.TRANSFER, revertData); + } + + try _erc1155ApprovalManager.safeTransferFrom(_contractAddress, _seller, _buyer, _tokenId, _amount, "") {} + catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.TRANSFER, revertData); + } + + uint256 sellerBalanceAfter; + try erc1155.balanceOf(_seller, _tokenId) returns (uint256 balance) { + sellerBalanceAfter = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.TRANSFER, revertData); + } + + uint256 buyerBalanceAfter; + try erc1155.balanceOf(_buyer, _tokenId) returns (uint256 balance) { + buyerBalanceAfter = balance; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.TRANSFER, revertData); + } + + if (sellerBalanceAfter != sellerBalanceBefore - _amount || buyerBalanceAfter != buyerBalanceBefore + _amount) { + revert CheckoutItemExecutionFailed( + CheckoutFailureStage.TRANSFER, + abi.encodeWithSelector( + InvalidERC1155Transfer.selector, _contractAddress, _tokenId, _seller, _buyer, _amount + ) + ); + } + } + + function _checkoutMintBatchToWithBalanceCheck( + address _contractAddress, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + address[] memory balanceAccounts = _balanceAccounts(_buyer, _tokenIds.length); + uint256[] memory balancesBeforeMint; + + try erc1155.balanceOfBatch(balanceAccounts, _tokenIds) returns (uint256[] memory balances) { + balancesBeforeMint = balances; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.MINT, revertData); + } + + try IRareERC1155(_contractAddress).mintBatchTo(_buyer, _tokenIds, _amounts) {} + catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.MINT, revertData); + } + + uint256[] memory balancesAfterMint; + try erc1155.balanceOfBatch(balanceAccounts, _tokenIds) returns (uint256[] memory balances) { + balancesAfterMint = balances; + } catch (bytes memory revertData) { + revert CheckoutItemExecutionFailed(CheckoutFailureStage.MINT, revertData); + } + + for (uint256 i = 0; i < _tokenIds.length;) { + if (balancesAfterMint[i] != balancesBeforeMint[i] + _amounts[i]) { + revert CheckoutItemExecutionFailed( + CheckoutFailureStage.MINT, + abi.encodeWithSelector( + InvalidERC1155Mint.selector, _contractAddress, _tokenIds[i], _buyer, _amounts[i] + ) + ); + } + + unchecked { + ++i; + } + } + } + + function _balanceAccounts(address _account, uint256 _length) internal pure returns (address[] memory accounts) { + accounts = new address[](_length); + for (uint256 i = 0; i < _length;) { + accounts[i] = _account; + + unchecked { + ++i; + } + } + } +} diff --git a/src/marketplace/RareERC1155ExecutionModuleBase.sol b/src/marketplace/RareERC1155ExecutionModuleBase.sol new file mode 100644 index 0000000..1e528da --- /dev/null +++ b/src/marketplace/RareERC1155ExecutionModuleBase.sol @@ -0,0 +1,368 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {Math} from "openzeppelin-contracts/utils/math/Math.sol"; + +import {RareERC1155MarketplaceStorage} from "./RareERC1155MarketplaceStorage.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155ExecutionModuleBase +/// @notice Shared validation helpers for delegatecall-only ERC1155 marketplace execution modules. +/// @dev Storage invariant: execution modules must remain storage-less except for immutables. Any persistent state added +/// to a module would be written into the marketplace proxy during delegatecall; add persistent fields to the ERC-7201 +/// `MarketplaceStorage` namespace instead. +abstract contract RareERC1155ExecutionModuleBase is RareERC1155MarketplaceStorage { + address private immutable SELF = address(this); + + struct PrimaryPayoutContext { + uint256 tokenId; + uint256 grossAmount; + uint256 marketplaceFee; + uint256 maxMints; + address seller; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + struct SecondaryPayoutContext { + uint256 tokenId; + uint256 grossAmount; + uint256 marketplaceFee; + address payable[] splitRecipients; + uint8[] splitRatios; + } + + modifier onlyDelegateCall() { + _onlyDelegateCall(); + _; + } + + function _onlyDelegateCall() internal view { + if (address(this) == SELF) revert DirectModuleCallUnsupported(); + } + + function _mintFailureData( + bytes4 _reason, + MarketplaceStorage storage $, + address _contractAddress, + address _currencyAddress, + address _buyer, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) internal view returns (bytes memory) { + DirectSaleConfig storage directSaleConfig = $.directSaleConfigs[_contractAddress][_tokenId]; + + if (_reason == DirectSaleNotConfigured.selector) { + return abi.encodeWithSelector(DirectSaleNotConfigured.selector, _contractAddress, _tokenId); + } + if (_reason == ContractHasNoOwner.selector) { + return abi.encodeWithSelector(ContractHasNoOwner.selector, _contractAddress); + } + if (_reason == NotContractOwner.selector) { + return abi.encodeWithSelector(NotContractOwner.selector, _contractAddress, directSaleConfig.seller); + } + if (_reason == AddressNotAllowlisted.selector) { + return abi.encodeWithSelector(AddressNotAllowlisted.selector, _buyer); + } + if (_reason == QuantityCannotBeZero.selector) return abi.encodeWithSelector(QuantityCannotBeZero.selector); + if (_reason == MintLimitExceeded.selector) { + uint256 mintLimit = $.tokenMintLimit[_contractAddress][_tokenId]; + uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][_tokenId][_buyer]; + return abi.encodeWithSelector( + MintLimitExceeded.selector, _contractAddress, _tokenId, _buyer, _quantity, currentMints, mintLimit + ); + } + if (_reason == TransactionLimitExceeded.selector) { + uint256 txLimit = $.tokenTxLimit[_contractAddress][_tokenId]; + uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][_tokenId][_buyer]; + return abi.encodeWithSelector( + TransactionLimitExceeded.selector, _contractAddress, _tokenId, _buyer, currentTxs, txLimit + ); + } + if (_reason == MaxMintExceeded.selector) { + return abi.encodeWithSelector(MaxMintExceeded.selector, _quantity, directSaleConfig.maxMints); + } + if (_reason == SaleNotStarted.selector) { + return abi.encodeWithSelector(SaleNotStarted.selector, directSaleConfig.startTime); + } + if (_reason == PriceMismatch.selector) { + return abi.encodeWithSelector(PriceMismatch.selector, _price, directSaleConfig.price); + } + if (_reason == CurrencyMismatch.selector) { + return abi.encodeWithSelector(CurrencyMismatch.selector, _currencyAddress, directSaleConfig.currencyAddress); + } + + return ""; + } + + function _secondaryFailureData( + bytes4 _reason, + MarketplaceStorage storage $, + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) internal view returns (bytes memory) { + SalePrice storage salePrice = $.salePrices[_contractAddress][_tokenId][_seller]; + + if (_reason == QuantityCannotBeZero.selector) return abi.encodeWithSelector(QuantityCannotBeZero.selector); + if (_reason == SalePriceDoesNotExist.selector) { + return abi.encodeWithSelector(SalePriceDoesNotExist.selector, _contractAddress, _tokenId, _seller); + } + if (_reason == SalePriceExpired.selector) { + return abi.encodeWithSelector( + SalePriceExpired.selector, _contractAddress, _tokenId, _seller, salePrice.expirationTime + ); + } + if (_reason == CurrencyMismatch.selector) { + return abi.encodeWithSelector(CurrencyMismatch.selector, _currencyAddress, salePrice.currencyAddress); + } + if (_reason == PriceMismatch.selector) { + return abi.encodeWithSelector(PriceMismatch.selector, _price, salePrice.price); + } + if (_reason == QuantityExceedsSalePriceQuantity.selector) { + return abi.encodeWithSelector(QuantityExceedsSalePriceQuantity.selector, _quantity, salePrice.quantity); + } + + return ""; + } + + function _checkContractOwner(address _contractAddress, address _account) + internal + view + returns (bool readable, bool isOwner) + { + (bool success, bytes memory data) = _contractAddress.staticcall(abi.encodeWithSignature("owner()")); + if (!success || data.length < 32) return (false, false); + return (true, abi.decode(data, (address)) == _account); + } + + function _checkTokenAllowList( + MarketplaceStorage storage $, + address _contractAddress, + uint256 _tokenId, + address _account, + bytes32[] calldata _proof + ) internal view returns (bool) { + AllowListConfig memory allowListConfig = $.tokenAllowlistRoots[_contractAddress][_tokenId]; + if (allowListConfig.root == bytes32(0) || block.timestamp >= allowListConfig.endTimestamp) return true; + return _verifyProof(keccak256(abi.encodePacked(_account)), allowListConfig.root, _proof); + } + + function _singleUintArray(uint256 _value) internal pure returns (uint256[] memory values) { + values = new uint256[](1); + values[0] = _value; + } + + function _revertSelector(bytes memory _revertData) internal pure returns (bytes4 selector) { + if (_revertData.length < 4) return bytes4(0); + + assembly { + selector := mload(add(_revertData, 32)) + } + } + + function _revertBytes(bytes memory _revertData) internal pure { + assembly { + revert(add(_revertData, 32), mload(_revertData)) + } + } + + function _validateMintDirectSaleRequest( + address _contractAddress, + address _currencyAddress, + address _buyer, + MintRequest calldata _request + ) internal view returns (PrimaryPayoutContext memory payoutContext) { + MarketplaceStorage storage $ = _marketplaceStorage(); + (bool valid, bytes4 reason, PrimaryPayoutContext memory checkedContext) = _checkMintDirectSaleRequest( + $, + _contractAddress, + _currencyAddress, + _buyer, + _request.tokenId, + _request.price, + _request.quantity, + _request.proof, + ContractHasNoOwner.selector, + false + ); + if (!valid) _revertMintDirectSaleRequest(reason, $, _contractAddress, _currencyAddress, _buyer, _request); + return checkedContext; + } + + function _validateSecondaryBuyRequest( + MarketplaceStorage storage $, + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest calldata _request + ) internal view returns (SecondaryPayoutContext memory payoutContext) { + (bool valid, bytes4 reason, SecondaryPayoutContext memory checkedContext) = _checkSecondaryBuyRequest( + $, _contractAddress, _seller, _currencyAddress, _request.tokenId, _request.price, _request.quantity + ); + if (!valid) _revertSecondaryBuyRequest(reason, $, _contractAddress, _seller, _currencyAddress, _request); + return checkedContext; + } + + function _checkMintDirectSaleRequest( + MarketplaceStorage storage $, + address _contractAddress, + address _currencyAddress, + address _buyer, + uint256 _tokenId, + uint256 _price, + uint256 _quantity, + bytes32[] calldata _proof, + bytes4 _ownerLookupFailureReason, + bool _skipTxLimitCheck + ) internal view returns (bool valid, bytes4 reason, PrimaryPayoutContext memory payoutContext) { + DirectSaleConfig memory directSaleConfig = $.directSaleConfigs[_contractAddress][_tokenId]; + payoutContext.tokenId = _tokenId; + payoutContext.seller = directSaleConfig.seller; + payoutContext.maxMints = directSaleConfig.maxMints; + + if (directSaleConfig.seller == address(0)) return (false, DirectSaleNotConfigured.selector, payoutContext); + + (bool ownerReadable, bool isOwner) = _checkContractOwner(_contractAddress, directSaleConfig.seller); + if (!ownerReadable) return (false, _ownerLookupFailureReason, payoutContext); + if (!isOwner) return (false, NotContractOwner.selector, payoutContext); + if (!_checkTokenAllowList($, _contractAddress, _tokenId, _buyer, _proof)) { + return (false, AddressNotAllowlisted.selector, payoutContext); + } + if (_quantity == 0) return (false, QuantityCannotBeZero.selector, payoutContext); + + uint256 mintLimit = $.tokenMintLimit[_contractAddress][_tokenId]; + uint256 currentMints = $.tokenMintsPerAddress[_contractAddress][_tokenId][_buyer]; + if (mintLimit != 0 && currentMints + _quantity > mintLimit) { + return (false, MintLimitExceeded.selector, payoutContext); + } + + if (!_skipTxLimitCheck) { + uint256 txLimit = $.tokenTxLimit[_contractAddress][_tokenId]; + uint256 currentTxs = $.tokenTxsPerAddress[_contractAddress][_tokenId][_buyer]; + if (txLimit != 0 && currentTxs + 1 > txLimit) { + return (false, TransactionLimitExceeded.selector, payoutContext); + } + } + + if (directSaleConfig.maxMints != 0 && _quantity > directSaleConfig.maxMints) { + return (false, MaxMintExceeded.selector, payoutContext); + } + if (directSaleConfig.startTime > block.timestamp) return (false, SaleNotStarted.selector, payoutContext); + if (_price != directSaleConfig.price) return (false, PriceMismatch.selector, payoutContext); + if (directSaleConfig.currencyAddress != _currencyAddress) { + return (false, CurrencyMismatch.selector, payoutContext); + } + + payoutContext.grossAmount = _quantity * _price; + payoutContext.splitRecipients = directSaleConfig.splitRecipients; + payoutContext.splitRatios = directSaleConfig.splitRatios; + + return (true, bytes4(0), payoutContext); + } + + function _checkSecondaryBuyRequest( + MarketplaceStorage storage $, + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) internal view returns (bool valid, bytes4 reason, SecondaryPayoutContext memory payoutContext) { + payoutContext.tokenId = _tokenId; + if (_quantity == 0) return (false, QuantityCannotBeZero.selector, payoutContext); + + SalePrice storage salePrice = $.salePrices[_contractAddress][_tokenId][_seller]; + if (salePrice.quantity == 0) return (false, SalePriceDoesNotExist.selector, payoutContext); + if (salePrice.expirationTime != 0 && salePrice.expirationTime <= block.timestamp) { + return (false, SalePriceExpired.selector, payoutContext); + } + if (salePrice.currencyAddress != _currencyAddress) return (false, CurrencyMismatch.selector, payoutContext); + if (salePrice.price != _price) return (false, PriceMismatch.selector, payoutContext); + if (salePrice.quantity < _quantity) { + return (false, QuantityExceedsSalePriceQuantity.selector, payoutContext); + } + + payoutContext.grossAmount = _quantity * _price; + payoutContext.splitRecipients = salePrice.splitRecipients; + payoutContext.splitRatios = salePrice.splitRatios; + + return (true, bytes4(0), payoutContext); + } + + function _revertMintDirectSaleRequest( + bytes4 _reason, + MarketplaceStorage storage $, + address _contractAddress, + address _currencyAddress, + address _buyer, + MintRequest calldata _request + ) internal view { + _revertBytes( + _mintFailureData( + _reason, + $, + _contractAddress, + _currencyAddress, + _buyer, + _request.tokenId, + _request.price, + _request.quantity + ) + ); + } + + function _revertSecondaryBuyRequest( + bytes4 _reason, + MarketplaceStorage storage $, + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest calldata _request + ) internal view { + _revertBytes( + _secondaryFailureData( + _reason, + $, + _contractAddress, + _seller, + _currencyAddress, + _request.tokenId, + _request.price, + _request.quantity + ) + ); + } + + function _allocateOfferFees(Offer storage _offer, uint256 _quantity) internal returns (uint256 marketplaceFee) { + uint256 remainingQuantity = _offer.quantity; + if (_quantity == remainingQuantity) { + marketplaceFee = _offer.marketplaceFeeRemaining; + delete _offer.currencyAddress; + delete _offer.price; + delete _offer.quantity; + delete _offer.initialQuantity; + delete _offer.marketplaceFeeRemaining; + delete _offer.marketplaceFeeTotal; + delete _offer.expirationTime; + return marketplaceFee; + } + + uint256 marketplaceFeeTotal = _offer.marketplaceFeeTotal; + uint256 initialQuantity = _offer.initialQuantity; + uint256 filledQuantityBefore = initialQuantity - remainingQuantity; + uint256 filledQuantityAfter = filledQuantityBefore + _quantity; + uint256 marketplaceFeePaidBefore = marketplaceFeeTotal - _offer.marketplaceFeeRemaining; + uint256 marketplaceFeeDueAfter = Math.mulDiv(marketplaceFeeTotal, filledQuantityAfter, initialQuantity); + + marketplaceFee = marketplaceFeeDueAfter - marketplaceFeePaidBefore; + + _offer.quantity = remainingQuantity - _quantity; + _offer.marketplaceFeeRemaining -= marketplaceFee; + } +} diff --git a/src/marketplace/RareERC1155Marketplace.sol b/src/marketplace/RareERC1155Marketplace.sol new file mode 100644 index 0000000..3a9d158 --- /dev/null +++ b/src/marketplace/RareERC1155Marketplace.sol @@ -0,0 +1,620 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {OwnableUpgradeable} from "openzeppelin-contracts-upgradeable/access/OwnableUpgradeable.sol"; +import {ReentrancyGuardUpgradeable} from "openzeppelin-contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; +import {UUPSUpgradeable} from "openzeppelin-contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; + +import {IApprovedTokenRegistry} from "../registry/interfaces/IApprovedTokenRegistry.sol"; +import {IPayments} from "../payments/IPayments.sol"; +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IERC20ApprovalManager} from "../v2/approver/ERC20/IERC20ApprovalManager.sol"; +import {IERC721ApprovalManager} from "../v2/approver/ERC721/IERC721ApprovalManager.sol"; +import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; +import {IMarketplaceSettings} from "./IMarketplaceSettings.sol"; +import {IRareERC1155CheckoutExecutionModule} from "./IRareERC1155CheckoutExecutionModule.sol"; +import {IRareERC1155Marketplace} from "./IRareERC1155Marketplace.sol"; +import {IRareERC1155TradeExecutionModule} from "./IRareERC1155TradeExecutionModule.sol"; +import {RareERC1155MarketplacePayments} from "./RareERC1155MarketplacePayments.sol"; +import {RareERC1155MarketplaceStorage} from "./RareERC1155MarketplaceStorage.sol"; +import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155Marketplace +/// @notice ERC1155 marketplace state, escrow, configuration, and execution module router. +/// @dev The marketplace is the UUPS proxy-facing contract and owns all marketplace storage. Trade and checkout +/// execution are routed through delegatecall so modules read and write the marketplace proxy's ERC-7201 namespace. +contract RareERC1155Marketplace is + IRareERC1155Marketplace, + RareERC1155MarketplaceStorage, + OwnableUpgradeable, + ReentrancyGuardUpgradeable, + UUPSUpgradeable +{ + using MarketConfigV2 for MarketConfigV2.Config; + using RareERC1155MarketplacePayments for MarketConfigV2.Config; + + modifier notPaused() { + _notPaused(); + _; + } + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + function initialize( + address _networkBeneficiary, + address _marketplaceSettings, + address _royaltyEngine, + address _payments, + address _approvedTokenRegistry, + address _erc20ApprovalManager, + address _erc721ApprovalManager, + address _erc1155ApprovalManager, + address _tradeExecutionModule, + address _checkoutExecutionModule + ) external initializer { + _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); + _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); + _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); + _validateMarketConfigAddress(_payments, PAYMENTS_FIELD); + _validateMarketConfigAddress(_approvedTokenRegistry, APPROVED_TOKEN_REGISTRY_FIELD); + _validateApprovalManager(_erc20ApprovalManager); + _validateApprovalManager(_erc721ApprovalManager); + _validateApprovalManager(_erc1155ApprovalManager); + _validateExecutionModule(_tradeExecutionModule); + _validateExecutionModule(_checkoutExecutionModule); + + MarketplaceStorage storage $ = _marketplaceStorage(); + MarketConfigV2.Config storage config = $.marketConfig; + config.networkBeneficiary = _networkBeneficiary; + config.marketplaceSettings = IMarketplaceSettings(_marketplaceSettings); + config.royaltyEngine = IRoyaltyEngineV1(_royaltyEngine); + config.payments = IPayments(_payments); + config.approvedTokenRegistry = IApprovedTokenRegistry(_approvedTokenRegistry); + config.erc20ApprovalManager = IERC20ApprovalManager(_erc20ApprovalManager); + config.erc721ApprovalManager = IERC721ApprovalManager(_erc721ApprovalManager); + $.erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); + $.tradeExecutionModule = _tradeExecutionModule; + $.checkoutExecutionModule = _checkoutExecutionModule; + + __Ownable_init(); + __ReentrancyGuard_init(); + __UUPSUpgradeable_init(); + } + + function _authorizeUpgrade(address _newImplementation) internal view override onlyOwner { + _newImplementation; + } + + function prepareMintDirectSales( + address _contractAddress, + address _currencyAddress, + DirectSaleRequest[] calldata _requests, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external nonReentrant notPaused { + _validateERC1155Contract(_contractAddress); + if (!_isContractOwner(_contractAddress, msg.sender)) { + revert NotContractOwner(_contractAddress, msg.sender); + } + _validateDirectSaleRequests(_requests); + _marketplaceStorage().marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + RareERC1155MarketplacePayments.checkSplits(_splitRecipients, _splitRatios); + + MarketplaceStorage storage $ = _marketplaceStorage(); + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + _revertIfTokenNotFound(_contractAddress, tokenId); + + $.directSaleConfigs[_contractAddress][tokenId] = DirectSaleConfig({ + seller: msg.sender, + currencyAddress: _currencyAddress, + price: _requests[i].price, + startTime: _requests[i].startTime, + maxMints: _requests[i].maxMints, + splitRecipients: _splitRecipients, + splitRatios: _splitRatios + }); + + emit PrepareMintDirectSale( + _contractAddress, + tokenId, + msg.sender, + _currencyAddress, + _requests[i].price, + _requests[i].startTime, + _requests[i].maxMints, + _splitRecipients, + _splitRatios + ); + } + } + + function cancelMintDirectSales(address _contractAddress, uint256[] calldata _tokenIds) external nonReentrant { + if (!_isContractOwner(_contractAddress, msg.sender)) { + revert NotContractOwner(_contractAddress, msg.sender); + } + _validateTokenIds(_tokenIds); + + MarketplaceStorage storage $ = _marketplaceStorage(); + for (uint256 i = 0; i < _tokenIds.length; i++) { + uint256 tokenId = _tokenIds[i]; + if ($.directSaleConfigs[_contractAddress][tokenId].seller == address(0)) { + continue; + } + + delete $.directSaleConfigs[_contractAddress][tokenId]; + emit MintDirectSaleCancelled(_contractAddress, tokenId); + } + } + + function setTokenAllowListConfigs(address _contractAddress, AllowListConfigRequest[] calldata _requests) + external + nonReentrant + notPaused + { + if (!_isContractOwner(_contractAddress, msg.sender)) { + revert NotContractOwner(_contractAddress, msg.sender); + } + _validateAllowListConfigRequests(_requests); + + MarketplaceStorage storage $ = _marketplaceStorage(); + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + bytes32 root = _requests[i].root; + uint256 endTimestamp = _requests[i].endTimestamp; + + _revertIfTokenNotFound(_contractAddress, tokenId); + if (root != bytes32(0) && endTimestamp <= block.timestamp) { + revert AllowListEndTimestampInvalid(endTimestamp, block.timestamp); + } + + $.tokenAllowlistRoots[_contractAddress][tokenId] = AllowListConfig({root: root, endTimestamp: endTimestamp}); + emit SetTokenAllowListConfig(_contractAddress, tokenId, root, endTimestamp); + } + } + + function setTokenMintLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) + external + nonReentrant + notPaused + { + if (!_isContractOwner(_contractAddress, msg.sender)) { + revert NotContractOwner(_contractAddress, msg.sender); + } + _validateTokenLimitRequests(_requests); + + MarketplaceStorage storage $ = _marketplaceStorage(); + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + _revertIfTokenNotFound(_contractAddress, tokenId); + $.tokenMintLimit[_contractAddress][tokenId] = _requests[i].limit; + emit TokenMintLimitSet(_contractAddress, tokenId, _requests[i].limit); + } + } + + function setTokenTxLimits(address _contractAddress, TokenLimitRequest[] calldata _requests) + external + nonReentrant + notPaused + { + if (!_isContractOwner(_contractAddress, msg.sender)) { + revert NotContractOwner(_contractAddress, msg.sender); + } + _validateTokenLimitRequests(_requests); + + MarketplaceStorage storage $ = _marketplaceStorage(); + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + _revertIfTokenNotFound(_contractAddress, tokenId); + $.tokenTxLimit[_contractAddress][tokenId] = _requests[i].limit; + emit TokenTxLimitSet(_contractAddress, tokenId, _requests[i].limit); + } + } + + function setSalePrices( + address _contractAddress, + address _currencyAddress, + SalePriceRequest[] calldata _requests, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external nonReentrant notPaused { + _validateSalePriceRequests(_requests); + _marketplaceStorage().marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + RareERC1155MarketplacePayments.checkSplits(_splitRecipients, _splitRatios); + _validateERC1155Contract(_contractAddress); + + IERC1155 erc1155 = IERC1155(_contractAddress); + if (!erc1155.isApprovedForAll(msg.sender, address(_marketplaceStorage().erc1155ApprovalManager))) { + revert MarketplaceNotApproved(msg.sender, _contractAddress); + } + + for (uint256 i = 0; i < _requests.length; i++) { + uint256 tokenId = _requests[i].tokenId; + uint256 price = _requests[i].price; + uint256 quantity = _requests[i].quantity; + uint256 expirationTime = _requests[i].expirationTime; + + if (price == 0) revert SalePriceCannotBeZero(); + if (quantity == 0) revert QuantityCannotBeZero(); + if (expirationTime != 0 && expirationTime <= block.timestamp) { + revert SalePriceExpirationInvalid(expirationTime, block.timestamp); + } + + uint256 sellerBalance = erc1155.balanceOf(msg.sender, tokenId); + if (sellerBalance < quantity) { + revert InsufficientTokenBalance(msg.sender, _contractAddress, tokenId, quantity, sellerBalance); + } + + _marketplaceStorage().salePrices[_contractAddress][tokenId][msg.sender] = SalePrice({ + currencyAddress: _currencyAddress, + price: price, + quantity: quantity, + expirationTime: expirationTime, + splitRecipients: _splitRecipients, + splitRatios: _splitRatios + }); + + emit SalePriceSet( + msg.sender, + _contractAddress, + tokenId, + _currencyAddress, + price, + quantity, + expirationTime, + _splitRecipients, + _splitRatios + ); + } + } + + function cancelSalePrices(address _contractAddress, uint256[] calldata _tokenIds) external nonReentrant { + _validateTokenIds(_tokenIds); + + MarketplaceStorage storage $ = _marketplaceStorage(); + for (uint256 i = 0; i < _tokenIds.length; i++) { + uint256 tokenId = _tokenIds[i]; + if ($.salePrices[_contractAddress][tokenId][msg.sender].quantity == 0) { + continue; + } + + delete $.salePrices[_contractAddress][tokenId][msg.sender]; + emit SalePriceCancelled(msg.sender, _contractAddress, tokenId); + } + } + + function makeOffer( + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + uint256 _expirationTime + ) external payable nonReentrant notPaused { + _validateERC1155Contract(_contractAddress); + MarketplaceStorage storage $ = _marketplaceStorage(); + $.marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + if (_price == 0) revert OfferPriceCannotBeZero(); + if (_quantity == 0) revert QuantityCannotBeZero(); + if (_expirationTime != 0 && _expirationTime <= block.timestamp) { + revert OfferExpirationInvalid(_expirationTime, block.timestamp); + } + + uint256 grossAmount = _price * _quantity; + uint256 marketplaceFee = $.marketConfig.marketplaceSettings.calculateMarketplaceFee(grossAmount); + $.marketConfig.checkAmountAndTransfer(_currencyAddress, grossAmount + marketplaceFee); + + Offer memory previousOffer = $.offers[_contractAddress][_tokenId][msg.sender][_currencyAddress]; + $.offers[_contractAddress][_tokenId][msg.sender][_currencyAddress] = Offer({ + currencyAddress: _currencyAddress, + price: _price, + quantity: _quantity, + initialQuantity: _quantity, + marketplaceFeeRemaining: marketplaceFee, + marketplaceFeeTotal: marketplaceFee, + expirationTime: _expirationTime + }); + + emit OfferMade( + msg.sender, _contractAddress, _tokenId, _currencyAddress, _price, _quantity, marketplaceFee, _expirationTime + ); + + $.marketConfig + .refundRemainingOffer( + _currencyAddress, + msg.sender, + previousOffer.price, + previousOffer.quantity, + previousOffer.marketplaceFeeRemaining + ); + } + + function cancelOffer(address _contractAddress, uint256 _tokenId, address _currencyAddress) external nonReentrant { + MarketplaceStorage storage $ = _marketplaceStorage(); + Offer memory offer = $.offers[_contractAddress][_tokenId][msg.sender][_currencyAddress]; + if (offer.quantity == 0) return; + + delete $.offers[_contractAddress][_tokenId][msg.sender][_currencyAddress]; + + emit OfferCancelled( + msg.sender, + _contractAddress, + _tokenId, + _currencyAddress, + offer.price, + offer.quantity, + offer.marketplaceFeeRemaining + ); + + $.marketConfig + .refundRemainingOffer( + _currencyAddress, msg.sender, offer.price, offer.quantity, offer.marketplaceFeeRemaining + ); + } + + function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) + external + payable + nonReentrant + notPaused + { + _delegateToModule( + _marketplaceStorage().tradeExecutionModule, + abi.encodeWithSelector( + IRareERC1155TradeExecutionModule.mintDirectSaleBatch.selector, + _contractAddress, + _currencyAddress, + _requests + ) + ); + } + + function buyBatch( + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest[] calldata _requests + ) external payable nonReentrant notPaused { + _delegateToModule( + _marketplaceStorage().tradeExecutionModule, + abi.encodeWithSelector( + IRareERC1155TradeExecutionModule.buyBatch.selector, + _contractAddress, + _seller, + _currencyAddress, + _requests + ) + ); + } + + function acceptOffer( + address _contractAddress, + uint256 _tokenId, + address _buyer, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external nonReentrant notPaused { + _delegateToModule( + _marketplaceStorage().tradeExecutionModule, + abi.encodeWithSelector( + IRareERC1155TradeExecutionModule.acceptOffer.selector, + _contractAddress, + _tokenId, + _buyer, + _currencyAddress, + _price, + _quantity, + _splitRecipients, + _splitRatios + ) + ); + } + + function checkout(CheckoutItem[] calldata _items) + external + payable + nonReentrant + notPaused + returns (CheckoutExecution memory) + { + return abi.decode( + _delegateToModule( + _marketplaceStorage().checkoutExecutionModule, + abi.encodeWithSelector(IRareERC1155CheckoutExecutionModule.checkout.selector, _items) + ), + (CheckoutExecution) + ); + } + + function getDirectSaleConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (DirectSaleConfig memory) + { + return _marketplaceStorage().directSaleConfigs[_contractAddress][_tokenId]; + } + + function getTokenAllowListConfig(address _contractAddress, uint256 _tokenId) + external + view + returns (AllowListConfig memory) + { + return _marketplaceStorage().tokenAllowlistRoots[_contractAddress][_tokenId]; + } + + function getTokenMintLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { + return _marketplaceStorage().tokenMintLimit[_contractAddress][_tokenId]; + } + + function getTokenMintsPerAddress(address _contractAddress, uint256 _tokenId, address _account) + external + view + returns (uint256) + { + return _marketplaceStorage().tokenMintsPerAddress[_contractAddress][_tokenId][_account]; + } + + function getTokenTxLimit(address _contractAddress, uint256 _tokenId) external view returns (uint256) { + return _marketplaceStorage().tokenTxLimit[_contractAddress][_tokenId]; + } + + function getTokenTxsPerAddress(address _contractAddress, uint256 _tokenId, address _account) + external + view + returns (uint256) + { + return _marketplaceStorage().tokenTxsPerAddress[_contractAddress][_tokenId][_account]; + } + + function getSalePrice(address _contractAddress, uint256 _tokenId, address _seller) + external + view + returns (SalePrice memory) + { + return _marketplaceStorage().salePrices[_contractAddress][_tokenId][_seller]; + } + + function getOffer(address _contractAddress, uint256 _tokenId, address _buyer, address _currencyAddress) + external + view + returns (Offer memory) + { + return _marketplaceStorage().offers[_contractAddress][_tokenId][_buyer][_currencyAddress]; + } + + function getMarketConfig() external view returns (MarketConfigV2.Config memory) { + return _marketplaceStorage().marketConfig; + } + + function getERC1155ApprovalManager() external view returns (address) { + return address(_marketplaceStorage().erc1155ApprovalManager); + } + + function getTradeExecutionModule() external view returns (address) { + return _marketplaceStorage().tradeExecutionModule; + } + + function getCheckoutExecutionModule() external view returns (address) { + return _marketplaceStorage().checkoutExecutionModule; + } + + function isPaused() external view returns (bool) { + return _marketplaceStorage().paused; + } + + function setNetworkBeneficiary(address _networkBeneficiary) external onlyOwner { + _validateMarketConfigAddress(_networkBeneficiary, NETWORK_BENEFICIARY_FIELD); + _marketplaceStorage().marketConfig.updateNetworkBeneficiary(_networkBeneficiary); + emit MarketplaceDependencyUpdated(NETWORK_BENEFICIARY_FIELD, _networkBeneficiary); + } + + function setMarketplaceSettings(address _marketplaceSettings) external onlyOwner { + _validateMarketConfigAddress(_marketplaceSettings, MARKETPLACE_SETTINGS_FIELD); + _marketplaceStorage().marketConfig.updateMarketplaceSettings(_marketplaceSettings); + emit MarketplaceDependencyUpdated(MARKETPLACE_SETTINGS_FIELD, _marketplaceSettings); + } + + function setRoyaltyEngine(address _royaltyEngine) external onlyOwner { + _validateMarketConfigAddress(_royaltyEngine, ROYALTY_ENGINE_FIELD); + _marketplaceStorage().marketConfig.updateRoyaltyEngine(_royaltyEngine); + emit MarketplaceDependencyUpdated(ROYALTY_ENGINE_FIELD, _royaltyEngine); + } + + function setPayments(address _payments) external onlyOwner { + _validateMarketConfigAddress(_payments, PAYMENTS_FIELD); + _marketplaceStorage().marketConfig.updatePayments(_payments); + emit MarketplaceDependencyUpdated(PAYMENTS_FIELD, _payments); + } + + function setApprovedTokenRegistry(address _approvedTokenRegistry) external onlyOwner { + _validateMarketConfigAddress(_approvedTokenRegistry, APPROVED_TOKEN_REGISTRY_FIELD); + _marketplaceStorage().marketConfig.updateApprovedTokenRegistry(_approvedTokenRegistry); + emit MarketplaceDependencyUpdated(APPROVED_TOKEN_REGISTRY_FIELD, _approvedTokenRegistry); + } + + function setERC20ApprovalManager(address _erc20ApprovalManager) external onlyOwner { + _validateApprovalManager(_erc20ApprovalManager); + _marketplaceStorage().marketConfig.updateERC20ApprovalManager(_erc20ApprovalManager); + emit MarketplaceDependencyUpdated(ERC20_APPROVAL_MANAGER_FIELD, _erc20ApprovalManager); + } + + function setERC721ApprovalManager(address _erc721ApprovalManager) external onlyOwner { + _validateApprovalManager(_erc721ApprovalManager); + _marketplaceStorage().marketConfig.updateERC721ApprovalManager(_erc721ApprovalManager); + emit MarketplaceDependencyUpdated(ERC721_APPROVAL_MANAGER_FIELD, _erc721ApprovalManager); + } + + function setERC1155ApprovalManager(address _erc1155ApprovalManager) external onlyOwner { + _validateApprovalManager(_erc1155ApprovalManager); + _marketplaceStorage().erc1155ApprovalManager = IERC1155ApprovalManager(_erc1155ApprovalManager); + emit MarketplaceDependencyUpdated(ERC1155_APPROVAL_MANAGER_FIELD, _erc1155ApprovalManager); + } + + function setTradeExecutionModule(address _tradeExecutionModule) external onlyOwner { + _validateExecutionModule(_tradeExecutionModule); + _marketplaceStorage().tradeExecutionModule = _tradeExecutionModule; + emit MarketplaceDependencyUpdated(TRADE_EXECUTION_MODULE_FIELD, _tradeExecutionModule); + } + + function setCheckoutExecutionModule(address _checkoutExecutionModule) external onlyOwner { + _validateExecutionModule(_checkoutExecutionModule); + _marketplaceStorage().checkoutExecutionModule = _checkoutExecutionModule; + emit MarketplaceDependencyUpdated(CHECKOUT_EXECUTION_MODULE_FIELD, _checkoutExecutionModule); + } + + function setContractPaused(bool _isPaused) external onlyOwner { + _marketplaceStorage().paused = _isPaused; + emit ContractPausedUpdated(_isPaused); + } + + function _delegateToModule(address _module, bytes memory _callData) private returns (bytes memory) { + (bool success, bytes memory data) = _module.delegatecall(_callData); + if (!success) { + if (data.length == 0) revert ExecutionModuleDelegateCallFailed(data); + assembly { + revert(add(data, 32), mload(data)) + } + } + return data; + } + + function _notPaused() internal view { + if (_marketplaceStorage().paused) revert ContractPaused(); + } + + function _validateDirectSaleRequests(DirectSaleRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + + function _validateAllowListConfigRequests(AllowListConfigRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + + function _validateTokenLimitRequests(TokenLimitRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + + function _validateSalePriceRequests(SalePriceRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } +} diff --git a/src/marketplace/RareERC1155MarketplacePayments.sol b/src/marketplace/RareERC1155MarketplacePayments.sol new file mode 100644 index 0000000..6775c60 --- /dev/null +++ b/src/marketplace/RareERC1155MarketplacePayments.sol @@ -0,0 +1,292 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; +import {SafeERC20} from "openzeppelin-contracts/token/ERC20/utils/SafeERC20.sol"; + +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155MarketplacePayments +/// @notice Shared payment, refund, royalty, staking fee, and split payout helpers for ERC1155 marketplaces. +library RareERC1155MarketplacePayments { + using SafeERC20 for IERC20; + + uint256 private constant MAX_ROYALTY_RECIPIENTS = 5; + + function checkIfCurrencyIsApproved(MarketConfigV2.Config storage _config, address _currencyAddress) public view { + if (_currencyAddress != address(0) && !_config.approvedTokenRegistry.isApprovedToken(_currencyAddress)) { + revert IRareERC1155MarketplaceTypes.CurrencyNotApproved(_currencyAddress); + } + } + + function checkBatchPayment(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) + public + { + if (_amount == 0) { + if (msg.value != 0) revert IRareERC1155MarketplaceTypes.MsgValueMustBeZero(); + return; + } + + checkAmountAndTransfer(_config, _currencyAddress, _amount); + } + + function checkAmountAndTransfer(MarketConfigV2.Config storage _config, address _currencyAddress, uint256 _amount) + public + { + if (_currencyAddress == address(0)) { + if (msg.value != _amount) revert IRareERC1155MarketplaceTypes.IncorrectETHAmount(_amount, msg.value); + return; + } + + if (msg.value != 0) revert IRareERC1155MarketplaceTypes.MsgValueUnsupportedForERC20(); + + IERC20 erc20 = IERC20(_currencyAddress); + uint256 balanceBefore = erc20.balanceOf(address(this)); + + _config.erc20ApprovalManager.transferFrom(_currencyAddress, msg.sender, address(this), _amount); + + uint256 receivedAmount = erc20.balanceOf(address(this)) - balanceBefore; + if (receivedAmount != _amount) { + revert IRareERC1155MarketplaceTypes.ERC20FeeOnTransferUnsupported(_currencyAddress, _amount, receivedAmount); + } + } + + function checkSplits(address payable[] calldata _splitRecipients, uint8[] calldata _splitRatios) public pure { + if (_splitRecipients.length == 0) revert IRareERC1155MarketplaceTypes.SplitRecipientsRequired(); + if (_splitRecipients.length > 5) { + revert IRareERC1155MarketplaceTypes.SplitRecipientsExceededMax(_splitRecipients.length, 5); + } + if (_splitRecipients.length != _splitRatios.length) { + revert IRareERC1155MarketplaceTypes.SplitLengthMismatch(_splitRecipients.length, _splitRatios.length); + } + + uint256 totalRatio = 0; + for (uint256 i = 0; i < _splitRatios.length; i++) { + if (_splitRecipients[i] == address(0)) { + revert IRareERC1155MarketplaceTypes.SplitRecipientCannotBeZero(i); + } + if (_splitRatios[i] == 0) revert IRareERC1155MarketplaceTypes.SplitRatioCannotBeZero(i); + totalRatio += _splitRatios[i]; + } + + if (totalRatio != 100) revert IRareERC1155MarketplaceTypes.SplitTotalInvalid(totalRatio, 100); + } + + function payoutPrimary( + MarketConfigV2.Config storage _config, + address _contractAddress, + address _currencyAddress, + uint256 _amount, + uint256 _marketplaceFee, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) public { + uint256 remainingAmount = _amount; + + payoutMarketplaceFee(_config, _currencyAddress, _marketplaceFee); + + uint256 platformCommission = + _config.marketplaceSettings.getERC721ContractPrimarySaleFeePercentage(_contractAddress); + if (platformCommission > 100) { + revert IRareERC1155MarketplaceTypes.PlatformCommissionExceeded(platformCommission, 100); + } + + uint256 platformFee = (_amount * platformCommission) / 100; + if (platformFee > 0) { + remainingAmount -= platformFee; + + address payable[] memory platformRecipients = new address payable[](1); + platformRecipients[0] = payable(_config.networkBeneficiary); + uint256[] memory platformAmounts = new uint256[](1); + platformAmounts[0] = platformFee; + + performPayouts(_config, _currencyAddress, platformFee, platformRecipients, platformAmounts); + } + + payoutSplits(_config, _currencyAddress, remainingAmount, _splitRecipients, _splitRatios); + } + + function payoutSecondary( + MarketConfigV2.Config storage _config, + address _contractAddress, + uint256 _tokenId, + address _currencyAddress, + uint256 _amount, + uint256 _marketplaceFee, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) public { + uint256 remainingAmount = _amount; + + payoutMarketplaceFee(_config, _currencyAddress, _marketplaceFee); + + (address payable[] memory receivers, uint256[] memory royalties) = + _config.royaltyEngine.getRoyalty(_contractAddress, _tokenId, _amount); + (receivers, royalties) = _truncateRoyaltyRecipients(receivers, royalties); + + uint256 totalRoyalties = 0; + for (uint256 i = 0; i < royalties.length; i++) { + totalRoyalties += royalties[i]; + } + + if (totalRoyalties > remainingAmount) { + revert IRareERC1155MarketplaceTypes.RoyaltiesExceedSaleAmount(totalRoyalties, remainingAmount); + } + + if (totalRoyalties > 0) { + remainingAmount -= totalRoyalties; + performPayouts(_config, _currencyAddress, totalRoyalties, receivers, royalties); + } + + payoutSplits(_config, _currencyAddress, remainingAmount, _splitRecipients, _splitRatios); + } + + function payoutMarketplaceFee( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _marketplaceFee + ) public { + if (_marketplaceFee == 0) { + return; + } + + address payable[] memory recipients = new address payable[](1); + recipients[0] = payable(_config.networkBeneficiary); + + uint256[] memory amounts = new uint256[](1); + amounts[0] = _marketplaceFee; + + performPayouts(_config, _currencyAddress, _marketplaceFee, recipients, amounts); + } + + function refundRemainingOffer( + MarketConfigV2.Config storage _config, + address _currencyAddress, + address _buyer, + uint256 _price, + uint256 _quantity, + uint256 _marketplaceFeeRemaining + ) public { + if (_quantity == 0) { + return; + } + + refund(_config, _currencyAddress, payable(_buyer), (_price * _quantity) + _marketplaceFeeRemaining); + } + + function refund( + MarketConfigV2.Config storage _config, + address _currencyAddress, + address payable _recipient, + uint256 _amount + ) public { + if (_amount == 0) { + return; + } + + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: _amount}( + abi.encodeWithSelector(_config.payments.refund.selector, _recipient, _amount) + ); + if (!success) revert IRareERC1155MarketplaceTypes.RefundFailed(data); + return; + } + + IERC20(_currencyAddress).safeTransfer(_recipient, _amount); + } + + function _truncateRoyaltyRecipients(address payable[] memory _receivers, uint256[] memory _royalties) + private + pure + returns (address payable[] memory receivers, uint256[] memory royalties) + { + if (_receivers.length != _royalties.length) { + revert IRareERC1155MarketplaceTypes.PayoutLengthMismatch(_receivers.length, _royalties.length); + } + + uint256 royaltyRecipientCount = + _receivers.length > MAX_ROYALTY_RECIPIENTS ? MAX_ROYALTY_RECIPIENTS : _receivers.length; + for (uint256 i = 0; i < royaltyRecipientCount; i++) { + if (_receivers[i] == address(0) && _royalties[i] != 0) { + revert IRareERC1155MarketplaceTypes.RoyaltyRecipientCannotBeZero(i); + } + } + + if (_receivers.length <= MAX_ROYALTY_RECIPIENTS) { + return (_receivers, _royalties); + } + + receivers = new address payable[](MAX_ROYALTY_RECIPIENTS); + royalties = new uint256[](MAX_ROYALTY_RECIPIENTS); + for (uint256 i = 0; i < MAX_ROYALTY_RECIPIENTS; i++) { + receivers[i] = _receivers[i]; + royalties[i] = _royalties[i]; + } + } + + function payoutSplits( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount, + address payable[] memory _splitRecipients, + uint8[] memory _splitRatios + ) public { + if (_splitRecipients.length != _splitRatios.length) { + revert IRareERC1155MarketplaceTypes.SplitLengthMismatch(_splitRecipients.length, _splitRatios.length); + } + + uint256[] memory amounts = new uint256[](_splitRecipients.length); + uint256 remainingPayout = _amount; + + for (uint256 i = 0; i < _splitRecipients.length; i++) { + if (i == _splitRecipients.length - 1) { + amounts[i] = remainingPayout; + } else { + amounts[i] = (_amount * _splitRatios[i]) / 100; + remainingPayout -= amounts[i]; + } + } + + performPayouts(_config, _currencyAddress, _amount, _splitRecipients, amounts); + } + + function performPayouts( + MarketConfigV2.Config storage _config, + address _currencyAddress, + uint256 _amount, + address payable[] memory _recipients, + uint256[] memory _amounts + ) public { + if (_recipients.length != _amounts.length) { + revert IRareERC1155MarketplaceTypes.PayoutLengthMismatch(_recipients.length, _amounts.length); + } + + uint256 totalAmount = 0; + for (uint256 i = 0; i < _amounts.length; i++) { + totalAmount += _amounts[i]; + } + if (totalAmount != _amount) revert IRareERC1155MarketplaceTypes.PayoutTotalMismatch(_amount, totalAmount); + + if (_amount == 0) { + return; + } + + if (_currencyAddress == address(0)) { + (bool success, bytes memory data) = address(_config.payments).call{value: _amount}( + abi.encodeWithSelector(_config.payments.payout.selector, _recipients, _amounts) + ); + if (!success) revert IRareERC1155MarketplaceTypes.PayoutFailed(data); + return; + } + + IERC20 erc20 = IERC20(_currencyAddress); + for (uint256 i = 0; i < _recipients.length; i++) { + if (_amounts[i] == 0) { + continue; + } + erc20.safeTransfer(_recipients[i], _amounts[i]); + } + } +} diff --git a/src/marketplace/RareERC1155MarketplaceStorage.sol b/src/marketplace/RareERC1155MarketplaceStorage.sol new file mode 100644 index 0000000..09a4c49 --- /dev/null +++ b/src/marketplace/RareERC1155MarketplaceStorage.sol @@ -0,0 +1,146 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {ERC165Checker} from "openzeppelin-contracts/utils/introspection/ERC165Checker.sol"; + +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; +import {IERC1155ApprovalManager} from "../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; +import {IRareERC1155MarketplaceTypes} from "./IRareERC1155MarketplaceTypes.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155MarketplaceStorage +/// @notice ERC-7201 storage namespace and validation helpers for the ERC1155 marketplace. +/// @dev This is not a deployable marketplace. `RareERC1155Marketplace` owns this storage behind the proxy, and +/// execution modules use the same namespace when executed through delegatecall from the marketplace. +abstract contract RareERC1155MarketplaceStorage is IRareERC1155MarketplaceTypes { + uint256 public constant MAX_BATCH_SIZE = 75; + uint256 public constant MAX_CHECKOUT_SIZE = 50; + + bytes32 internal constant NETWORK_BENEFICIARY_FIELD = "NETWORK_BENEFICIARY"; + bytes32 internal constant MARKETPLACE_SETTINGS_FIELD = "MARKETPLACE_SETTINGS"; + bytes32 internal constant ROYALTY_ENGINE_FIELD = "ROYALTY_ENGINE"; + bytes32 internal constant PAYMENTS_FIELD = "PAYMENTS"; + bytes32 internal constant APPROVED_TOKEN_REGISTRY_FIELD = "APPROVED_TOKEN_REGISTRY"; + bytes32 internal constant ERC20_APPROVAL_MANAGER_FIELD = "ERC20_APPROVAL_MANAGER"; + bytes32 internal constant ERC721_APPROVAL_MANAGER_FIELD = "ERC721_APPROVAL_MANAGER"; + bytes32 internal constant ERC1155_APPROVAL_MANAGER_FIELD = "ERC1155_APPROVAL_MANAGER"; + bytes32 internal constant TRADE_EXECUTION_MODULE_FIELD = "TRADE_EXECUTION_MODULE"; + bytes32 internal constant CHECKOUT_EXECUTION_MODULE_FIELD = "CHECKOUT_EXECUTION_MODULE"; + + /// @custom:storage-location erc7201:superrare.storage.RareERC1155Marketplace + /// @dev Append new persistent marketplace fields to this struct only. Marketplace and execution modules must share + /// this exact layout because modules run against marketplace proxy storage through delegatecall. Do not add ordinary + /// contract-level state variables to the marketplace or execution modules; use this namespace instead. + struct MarketplaceStorage { + /// @notice Shared V2 marketplace dependency bundle. + MarketConfigV2.Config marketConfig; + /// @notice ERC1155 approval manager used for seller token transfers. + IERC1155ApprovalManager erc1155ApprovalManager; + /// @notice Delegatecall target used for direct sale mint, listing buy, and offer acceptance. + address tradeExecutionModule; + /// @notice Delegatecall target used for multi-item checkout. + address checkoutExecutionModule; + /// @notice Primary mint sale configs keyed by collection and token id. + mapping(address => mapping(uint256 => DirectSaleConfig)) directSaleConfigs; + /// @notice Active mint allowlist configs keyed by collection and token id. + mapping(address => mapping(uint256 => AllowListConfig)) tokenAllowlistRoots; + /// @notice Per-address mint quantity limits keyed by collection and token id. + mapping(address => mapping(uint256 => uint256)) tokenMintLimit; + /// @notice Mint quantity consumed by account while a token's mint limit is enabled. + mapping(address => mapping(uint256 => mapping(address => uint256))) tokenMintsPerAddress; + /// @notice Per-address mint transaction limits keyed by collection and token id. + mapping(address => mapping(uint256 => uint256)) tokenTxLimit; + /// @notice Mint transactions consumed by account while a token's tx limit is enabled. + mapping(address => mapping(uint256 => mapping(address => uint256))) tokenTxsPerAddress; + /// @notice Secondary fixed-price listings keyed by collection, token id, and seller. + mapping(address => mapping(uint256 => mapping(address => SalePrice))) salePrices; + /// @notice Escrowed offers keyed by collection, token id, buyer, and currency. + mapping(address => mapping(uint256 => mapping(address => mapping(address => Offer)))) offers; + /// @notice Pauses marketplace writes and execution module entrypoints. + bool paused; + } + + /// @dev cast index-erc7201 superrare.storage.RareERC1155Marketplace + bytes32 internal constant MARKETPLACE_STORAGE_LOCATION = + 0x5e94cc2b8b9fd616c1ffff3497627b534929331e1f3b26d7dc3360464546d500; + + function _marketplaceStorage() internal pure returns (MarketplaceStorage storage $) { + assembly { + $.slot := MARKETPLACE_STORAGE_LOCATION + } + } + + function _validateMarketConfigAddress(address _address, bytes32 _field) internal pure { + if (_address == address(0)) revert MarketConfigAddressCannotBeZero(_field); + } + + function _validateApprovalManager(address _approvalManager) internal pure { + if (_approvalManager == address(0)) revert ApprovalManagerCannotBeZero(); + } + + function _validateExecutionModule(address _module) internal view { + if (_module == address(0) || _module.code.length == 0) revert InvalidExecutionModule(); + } + + function _validateERC1155Contract(address _contractAddress) internal view { + if ( + _contractAddress.code.length == 0 + || !ERC165Checker.supportsInterface(_contractAddress, type(IERC1155).interfaceId) + ) { + revert InvalidERC1155Contract(_contractAddress); + } + } + + function _revertIfTokenNotFound(address _contractAddress, uint256 _tokenId) internal view { + if (IRareERC1155(_contractAddress).maxSupplyForToken(_tokenId) == 0) { + revert TokenNotFound(_contractAddress, _tokenId); + } + } + + function _isContractOwner(address _contractAddress, address _account) internal view returns (bool) { + (bool success, bytes memory data) = _contractAddress.staticcall(abi.encodeWithSignature("owner()")); + if (!success || data.length < 32) revert ContractHasNoOwner(_contractAddress); + return abi.decode(data, (address)) == _account; + } + + function _validateTokenIds(uint256[] calldata _tokenIds) internal pure { + _validateBatchSize(_tokenIds.length); + for (uint256 i = 1; i < _tokenIds.length; i++) { + if (_tokenIds[i] <= _tokenIds[i - 1]) { + revert TokenIdsNotStrictlyAscending(i, _tokenIds[i - 1], _tokenIds[i]); + } + } + } + + function _validateBatchSize(uint256 _length) internal pure { + if (_length == 0) revert EmptyBatch(); + if (_length > MAX_BATCH_SIZE) revert BatchSizeExceeded(_length, MAX_BATCH_SIZE); + } + + function _validateCheckoutSize(uint256 _length) internal pure { + if (_length == 0) revert EmptyBatch(); + if (_length > MAX_CHECKOUT_SIZE) revert BatchSizeExceeded(_length, MAX_CHECKOUT_SIZE); + } + + function _validateStrictAscending(uint256 _index, uint256 _previousTokenId, uint256 _tokenId) internal pure { + if (_tokenId <= _previousTokenId) { + revert TokenIdsNotStrictlyAscending(_index, _previousTokenId, _tokenId); + } + } + + function _verifyProof(bytes32 _leaf, bytes32 _root, bytes32[] calldata _proof) internal pure returns (bool) { + bytes32 currentHash = _leaf; + + for (uint256 i = 0; i < _proof.length; i++) { + currentHash = _parentHash(currentHash, _proof[i]); + } + + return currentHash == _root; + } + + function _parentHash(bytes32 a, bytes32 b) internal pure returns (bytes32) { + return a <= b ? keccak256(abi.encodePacked(a, b)) : keccak256(abi.encodePacked(b, a)); + } +} diff --git a/src/marketplace/RareERC1155TradeExecutionModule.sol b/src/marketplace/RareERC1155TradeExecutionModule.sol new file mode 100644 index 0000000..20c34d2 --- /dev/null +++ b/src/marketplace/RareERC1155TradeExecutionModule.sol @@ -0,0 +1,431 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; + +import {IRareERC1155} from "../token/ERC1155/IRareERC1155.sol"; +import {MarketConfigV2} from "../v2/utils/MarketConfigV2.sol"; +import {IRareERC1155TradeExecutionModule} from "./IRareERC1155TradeExecutionModule.sol"; +import {RareERC1155ExecutionModuleBase} from "./RareERC1155ExecutionModuleBase.sol"; +import {RareERC1155MarketplacePayments} from "./RareERC1155MarketplacePayments.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155TradeExecutionModule +/// @notice Delegatecall-only direct trade execution module for the ERC1155 marketplace. +/// @dev Direct calls revert because this contract has no standalone marketplace state or escrow. It must run through +/// `RareERC1155Marketplace` so `address(this)`, `msg.sender`, `msg.value`, and storage all resolve to the marketplace proxy. +contract RareERC1155TradeExecutionModule is IRareERC1155TradeExecutionModule, RareERC1155ExecutionModuleBase { + using RareERC1155MarketplacePayments for MarketConfigV2.Config; + + struct AcceptOfferInput { + address contractAddress; + uint256 tokenId; + address buyer; + address currencyAddress; + uint256 price; + uint256 quantity; + } + + function mintDirectSaleBatch(address _contractAddress, address _currencyAddress, MintRequest[] calldata _requests) + external + payable + onlyDelegateCall + { + _validateMintRequests(_requests); + MarketplaceStorage storage $ = _marketplaceStorage(); + $.marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + _validateERC1155Contract(_contractAddress); + + uint256 requestCount = _requests.length; + uint256[] memory tokenIds = new uint256[](requestCount); + uint256[] memory amounts = new uint256[](requestCount); + PrimaryPayoutContext[] memory payoutContexts = new PrimaryPayoutContext[](requestCount); + uint256 buyerTotal = 0; + + for (uint256 i = 0; i < requestCount;) { + payoutContexts[i] = + _validateMintDirectSaleRequest(_contractAddress, _currencyAddress, msg.sender, _requests[i]); + if (payoutContexts[i].grossAmount != 0) { + payoutContexts[i].marketplaceFee = + $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); + buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; + } + + tokenIds[i] = payoutContexts[i].tokenId; + amounts[i] = _requests[i].quantity; + + unchecked { + ++i; + } + } + + $.marketConfig.checkBatchPayment(_currencyAddress, buyerTotal); + + for (uint256 i = 0; i < requestCount;) { + uint256 tokenId = _requests[i].tokenId; + + if ($.tokenMintLimit[_contractAddress][tokenId] > 0) { + $.tokenMintsPerAddress[_contractAddress][tokenId][msg.sender] += _requests[i].quantity; + } + + if ($.tokenTxLimit[_contractAddress][tokenId] > 0) { + $.tokenTxsPerAddress[_contractAddress][tokenId][msg.sender] += 1; + } + + unchecked { + ++i; + } + } + + _mintBatchToWithBalanceCheck(_contractAddress, msg.sender, tokenIds, amounts); + + for (uint256 i = 0; i < requestCount;) { + if (payoutContexts[i].grossAmount != 0) { + $.marketConfig + .payoutPrimary( + _contractAddress, + _currencyAddress, + payoutContexts[i].grossAmount, + payoutContexts[i].marketplaceFee, + payoutContexts[i].splitRecipients, + payoutContexts[i].splitRatios + ); + } + + emit MintDirectSale( + _contractAddress, + payoutContexts[i].tokenId, + msg.sender, + payoutContexts[i].seller, + _requests[i].quantity, + _currencyAddress, + _requests[i].price + ); + + unchecked { + ++i; + } + } + } + + function buyBatch( + address _contractAddress, + address _seller, + address _currencyAddress, + BuyRequest[] calldata _requests + ) external payable onlyDelegateCall { + _validateBuyRequests(_requests); + if (msg.sender == _seller) revert SelfPurchaseUnsupported(_seller); + + MarketplaceStorage storage $ = _marketplaceStorage(); + $.marketConfig.checkIfCurrencyIsApproved(_currencyAddress); + _validateERC1155Contract(_contractAddress); + + IERC1155 erc1155 = IERC1155(_contractAddress); + if (!erc1155.isApprovedForAll(_seller, address($.erc1155ApprovalManager))) { + revert MarketplaceNotApproved(_seller, _contractAddress); + } + + uint256 requestCount = _requests.length; + uint256[] memory tokenIds = new uint256[](requestCount); + uint256[] memory amounts = new uint256[](requestCount); + SecondaryPayoutContext[] memory payoutContexts = new SecondaryPayoutContext[](requestCount); + uint256 buyerTotal = 0; + + for (uint256 i = 0; i < requestCount;) { + payoutContexts[i] = + _validateSecondaryBuyRequest($, _contractAddress, _seller, _currencyAddress, _requests[i]); + + tokenIds[i] = _requests[i].tokenId; + amounts[i] = _requests[i].quantity; + + uint256 sellerBalance = erc1155.balanceOf(_seller, tokenIds[i]); + if (sellerBalance < amounts[i]) { + revert InsufficientTokenBalance(_seller, _contractAddress, tokenIds[i], amounts[i], sellerBalance); + } + + payoutContexts[i].marketplaceFee = + $.marketConfig.marketplaceSettings.calculateMarketplaceFee(payoutContexts[i].grossAmount); + buyerTotal += payoutContexts[i].grossAmount + payoutContexts[i].marketplaceFee; + + unchecked { + ++i; + } + } + + $.marketConfig.checkBatchPayment(_currencyAddress, buyerTotal); + + for (uint256 i = 0; i < requestCount;) { + SalePrice storage salePrice = $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; + salePrice.quantity -= _requests[i].quantity; + if (salePrice.quantity == 0) { + delete $.salePrices[_contractAddress][_requests[i].tokenId][_seller]; + } + + unchecked { + ++i; + } + } + + _safeBatchTransferFrom(_contractAddress, _seller, msg.sender, tokenIds, amounts); + + for (uint256 i = 0; i < requestCount;) { + $.marketConfig + .payoutSecondary( + _contractAddress, + payoutContexts[i].tokenId, + _currencyAddress, + payoutContexts[i].grossAmount, + payoutContexts[i].marketplaceFee, + payoutContexts[i].splitRecipients, + payoutContexts[i].splitRatios + ); + + emit Sold( + _seller, + msg.sender, + _contractAddress, + payoutContexts[i].tokenId, + _currencyAddress, + _requests[i].price, + _requests[i].quantity + ); + + unchecked { + ++i; + } + } + } + + function acceptOffer( + address _contractAddress, + uint256 _tokenId, + address _buyer, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) external onlyDelegateCall { + AcceptOfferInput memory input = AcceptOfferInput({ + contractAddress: _contractAddress, + tokenId: _tokenId, + buyer: _buyer, + currencyAddress: _currencyAddress, + price: _price, + quantity: _quantity + }); + _acceptOffer(input, _splitRecipients, _splitRatios); + } + + function _acceptOffer( + AcceptOfferInput memory _input, + address payable[] calldata _splitRecipients, + uint8[] calldata _splitRatios + ) internal { + if (msg.sender == _input.buyer) { + revert SelfOfferAcceptanceUnsupported(_input.buyer); + } + _validateERC1155Contract(_input.contractAddress); + _marketplaceStorage().marketConfig.checkIfCurrencyIsApproved(_input.currencyAddress); + RareERC1155MarketplacePayments.checkSplits(_splitRecipients, _splitRatios); + if (_input.quantity == 0) revert QuantityCannotBeZero(); + + (uint256 grossAmount, uint256 marketplaceFee) = _validateAndApplyOfferFill(_input); + + MarketplaceStorage storage $ = _marketplaceStorage(); + IERC1155 erc1155 = IERC1155(_input.contractAddress); + if (!erc1155.isApprovedForAll(msg.sender, address($.erc1155ApprovalManager))) { + revert MarketplaceNotApproved(msg.sender, _input.contractAddress); + } + + _safeTransferFrom(_input.contractAddress, msg.sender, _input.buyer, _input.tokenId, _input.quantity); + + $.marketConfig + .payoutSecondary( + _input.contractAddress, + _input.tokenId, + _input.currencyAddress, + grossAmount, + marketplaceFee, + _splitRecipients, + _splitRatios + ); + + emit OfferAccepted( + msg.sender, + _input.buyer, + _input.contractAddress, + _input.tokenId, + _input.currencyAddress, + _input.price, + _input.quantity + ); + } + + function _validateAndApplyOfferFill(AcceptOfferInput memory _input) + internal + returns (uint256 grossAmount, uint256 marketplaceFee) + { + Offer storage offer = _marketplaceStorage() + .offers[_input.contractAddress][_input.tokenId][_input.buyer][_input.currencyAddress]; + + if (offer.quantity == 0) { + revert OfferDoesNotExist(_input.contractAddress, _input.tokenId, _input.buyer, _input.currencyAddress); + } + if (offer.expirationTime != 0 && offer.expirationTime <= block.timestamp) { + revert OfferExpired( + _input.contractAddress, _input.tokenId, _input.buyer, _input.currencyAddress, offer.expirationTime + ); + } + if (offer.currencyAddress != _input.currencyAddress) { + revert CurrencyMismatch(_input.currencyAddress, offer.currencyAddress); + } + if (offer.price != _input.price) revert PriceMismatch(_input.price, offer.price); + if (_input.quantity > offer.quantity) revert QuantityExceedsOfferQuantity(_input.quantity, offer.quantity); + + grossAmount = _input.price * _input.quantity; + marketplaceFee = _allocateOfferFees(offer, _input.quantity); + } + + function _safeTransferFrom( + address _contractAddress, + address _seller, + address _buyer, + uint256 _tokenId, + uint256 _amount + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + uint256 sellerBalanceBefore = erc1155.balanceOf(_seller, _tokenId); + if (sellerBalanceBefore < _amount) { + revert InsufficientTokenBalance(_seller, _contractAddress, _tokenId, _amount, sellerBalanceBefore); + } + uint256 buyerBalanceBefore = erc1155.balanceOf(_buyer, _tokenId); + + _marketplaceStorage().erc1155ApprovalManager + .safeTransferFrom(_contractAddress, _seller, _buyer, _tokenId, _amount, ""); + + uint256 sellerBalanceAfter = erc1155.balanceOf(_seller, _tokenId); + uint256 buyerBalanceAfter = erc1155.balanceOf(_buyer, _tokenId); + if (sellerBalanceAfter != sellerBalanceBefore - _amount || buyerBalanceAfter != buyerBalanceBefore + _amount) { + revert InvalidERC1155Transfer(_contractAddress, _tokenId, _seller, _buyer, _amount); + } + } + + function _safeBatchTransferFrom( + address _contractAddress, + address _seller, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + uint256 requestCount = _tokenIds.length; + address[] memory balanceAccounts = new address[](requestCount * 2); + uint256[] memory balanceTokenIds = new uint256[](requestCount * 2); + + for (uint256 i = 0; i < requestCount;) { + uint256 balanceIndex = i * 2; + balanceAccounts[balanceIndex] = _seller; + balanceAccounts[balanceIndex + 1] = _buyer; + balanceTokenIds[balanceIndex] = _tokenIds[i]; + balanceTokenIds[balanceIndex + 1] = _tokenIds[i]; + + unchecked { + ++i; + } + } + + uint256[] memory balancesBeforeTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); + for (uint256 i = 0; i < requestCount;) { + uint256 sellerBalanceIndex = i * 2; + if (balancesBeforeTransfer[sellerBalanceIndex] < _amounts[i]) { + revert InsufficientTokenBalance( + _seller, _contractAddress, _tokenIds[i], _amounts[i], balancesBeforeTransfer[sellerBalanceIndex] + ); + } + + unchecked { + ++i; + } + } + + _marketplaceStorage().erc1155ApprovalManager + .safeBatchTransferFrom(_contractAddress, _seller, _buyer, _tokenIds, _amounts, ""); + + uint256[] memory balancesAfterTransfer = erc1155.balanceOfBatch(balanceAccounts, balanceTokenIds); + for (uint256 i = 0; i < requestCount;) { + uint256 balanceIndex = i * 2; + if ( + balancesAfterTransfer[balanceIndex] != balancesBeforeTransfer[balanceIndex] - _amounts[i] + || balancesAfterTransfer[balanceIndex + 1] != balancesBeforeTransfer[balanceIndex + 1] + _amounts[i] + ) { + revert InvalidERC1155Transfer(_contractAddress, _tokenIds[i], _seller, _buyer, _amounts[i]); + } + + unchecked { + ++i; + } + } + } + + function _mintBatchToWithBalanceCheck( + address _contractAddress, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts + ) internal { + IERC1155 erc1155 = IERC1155(_contractAddress); + address[] memory balanceAccounts = _balanceAccounts(_buyer, _tokenIds.length); + uint256[] memory balancesBeforeMint = erc1155.balanceOfBatch(balanceAccounts, _tokenIds); + + IRareERC1155(_contractAddress).mintBatchTo(_buyer, _tokenIds, _amounts); + + uint256[] memory balancesAfterMint = erc1155.balanceOfBatch(balanceAccounts, _tokenIds); + _validateMintBalanceDeltas(_contractAddress, _buyer, _tokenIds, _amounts, balancesBeforeMint, balancesAfterMint); + } + + function _balanceAccounts(address _account, uint256 _length) internal pure returns (address[] memory accounts) { + accounts = new address[](_length); + for (uint256 i = 0; i < _length;) { + accounts[i] = _account; + + unchecked { + ++i; + } + } + } + + function _validateMintBalanceDeltas( + address _contractAddress, + address _buyer, + uint256[] memory _tokenIds, + uint256[] memory _amounts, + uint256[] memory _balancesBeforeMint, + uint256[] memory _balancesAfterMint + ) internal pure { + for (uint256 i = 0; i < _tokenIds.length;) { + if (_balancesAfterMint[i] != _balancesBeforeMint[i] + _amounts[i]) { + revert InvalidERC1155Mint(_contractAddress, _tokenIds[i], _buyer, _amounts[i]); + } + + unchecked { + ++i; + } + } + } + + function _validateMintRequests(MintRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } + + function _validateBuyRequests(BuyRequest[] calldata _requests) internal pure { + _validateBatchSize(_requests.length); + for (uint256 i = 1; i < _requests.length; i++) { + _validateStrictAscending(i, _requests[i - 1].tokenId, _requests[i].tokenId); + } + } +} diff --git a/src/test/marketplace/RareERC1155MarketplaceGas.t.sol b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol new file mode 100644 index 0000000..85e96d5 --- /dev/null +++ b/src/test/marketplace/RareERC1155MarketplaceGas.t.sol @@ -0,0 +1,562 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; + +import {ERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {IERC165} from "openzeppelin-contracts/utils/introspection/IERC165.sol"; + +import {Payments} from "../../payments/Payments.sol"; +import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; +import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {IRareERC1155MarketplaceTypes} from "../../marketplace/IRareERC1155MarketplaceTypes.sol"; +import {RareERC1155CheckoutExecutionModule} from "../../marketplace/RareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155TradeExecutionModule} from "../../marketplace/RareERC1155TradeExecutionModule.sol"; +import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; + +contract CheckoutGasCurrency is ERC20 { + constructor(address _buyer) ERC20("Checkout Gas Currency", "CGAS") { + _mint(_buyer, 1_000_000_000 ether); + } +} + +contract CheckoutGasApprovedTokenRegistry { + function isApprovedToken(address) external pure returns (bool) { + return true; + } +} + +contract CheckoutGasMarketplaceSettings { + function calculateMarketplaceFee(uint256 _amount) external pure returns (uint256) { + return (_amount * 3) / 100; + } + + function getERC721ContractPrimarySaleFeePercentage(address) external pure returns (uint8) { + return 10; + } +} + +contract CheckoutGasRoyaltyEngine is IRoyaltyEngineV1 { + uint256 private immutable royaltyRecipientCount; + + constructor(uint256 _royaltyRecipientCount) { + royaltyRecipientCount = _royaltyRecipientCount; + } + + function getRoyalty( + address, + uint256, + uint256 _value + ) external view returns (address payable[] memory recipients, uint256[] memory amounts) { + return _royalties(_value); + } + + function getRoyaltyView( + address, + uint256, + uint256 _value + ) external view returns (address payable[] memory recipients, uint256[] memory amounts) { + return _royalties(_value); + } + + function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { + return _interfaceId == type(IRoyaltyEngineV1).interfaceId || _interfaceId == type(IERC165).interfaceId; + } + + function _royalties( + uint256 _value + ) private view returns (address payable[] memory recipients, uint256[] memory amounts) { + recipients = new address payable[](royaltyRecipientCount); + amounts = new uint256[](royaltyRecipientCount); + for (uint256 i = 0; i < royaltyRecipientCount; i++) { + recipients[i] = payable(address(uint160(0xA000 + i))); + amounts[i] = (_value * 10) / 100 / royaltyRecipientCount; + } + } +} + +/// @dev Run with `forge test --match-contract RareERC1155MarketplaceGasTest -vv` to print sweep gas logs. +contract RareERC1155MarketplaceGasTest is Test { + uint256 private constant PRICE = 1 ether; + uint256 private constant MAX_BATCH_BENCH_ITEMS = 75; + uint256 private constant MAX_CHECKOUT_BENCH_ITEMS = 50; + uint256 private constant MAX_SPLIT_RECIPIENTS = 5; + uint256 private constant MAX_ROYALTY_RECIPIENTS = 5; + uint256 private constant BLOCK_GAS_CEILING = 30_000_000; + + RareERC1155Marketplace private marketplace; + RareERC1155 private token; + CheckoutGasCurrency private currency; + RareERC1155ContractFactory private tokenFactory; + ERC20ApprovalManager private erc20ApprovalManager; + ERC721ApprovalManager private erc721ApprovalManager; + ERC1155ApprovalManager private erc1155ApprovalManager; + + address private deployer = address(0x1000); + address private seller = address(0x2000); + address private buyer = address(0x3000); + address private networkBeneficiary = address(0x4000); + address private rewardAccumulator = address(0x5000); + + function testGas_checkoutPrimaryEthMaxSplits_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(0); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _preparePrimaryCheckoutItems(count); + _measureCheckout("checkout_primary_eth_max_splits", count, items, _withFee(PRICE) * count, count, 0); + } + } + + function testGas_checkoutSecondaryEthMaxSplitsAndRoyalties_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _prepareSecondaryCheckoutItems( + count, + address(0), + PRICE + ); + _measureCheckout( + "checkout_secondary_eth_max_splits_max_royalties", + count, + items, + _withFee(PRICE) * count, + count, + 0 + ); + } + } + + function testGas_checkoutSecondaryErc20MaxSplitsAndRoyalties_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _prepareSecondaryCheckoutItems( + count, + address(currency), + PRICE + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(PRICE) * count); + + _measureCheckout("checkout_secondary_erc20_max_splits_max_royalties", count, items, 0, count, 0); + } + } + + function testGas_checkoutMixedPrimaryAndSecondaryEth_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + + uint256 primaryCount = count / 2; + uint256 secondaryCount = count - primaryCount; + IRareERC1155MarketplaceTypes.CheckoutItem[] memory primaryItems = _preparePrimaryCheckoutItems(primaryCount); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory secondaryItems = _prepareSecondaryCheckoutItems( + secondaryCount, + address(0), + PRICE + ); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _concatCheckoutItems(primaryItems, secondaryItems); + + _measureCheckout("checkout_mixed_primary_secondary_eth", count, items, _withFee(PRICE) * count, count, 0); + } + } + + function testGas_checkoutSkippedSecondaryStaleBalanceThenPrimaryEth_sweep() public { + uint256[] memory counts = _checkoutBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + + uint256 skippedCount = count - 1; + IRareERC1155MarketplaceTypes.CheckoutItem[] memory skippedItems = _prepareStaleBalanceSecondaryCheckoutItems( + skippedCount, + address(0) + ); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory primaryItems = _preparePrimaryCheckoutItems(1); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _concatCheckoutItems(skippedItems, primaryItems); + + _measureCheckout( + "checkout_skipped_secondary_stale_balance_then_primary_eth", + count, + items, + _withFee(PRICE), + 1, + skippedCount + ); + } + } + + function testGas_checkoutAllSkippedFiftyItemCartUnderBlockGas() public { + _deployFixture(0); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _prepareStaleBalanceSecondaryCheckoutItems( + MAX_CHECKOUT_BENCH_ITEMS, + address(0) + ); + + uint256 gasUsed = _measureCheckout( + "checkout_all_skipped_secondary_stale_balance_eth", + MAX_CHECKOUT_BENCH_ITEMS, + items, + _withFee(PRICE) * MAX_CHECKOUT_BENCH_ITEMS, + 0, + MAX_CHECKOUT_BENCH_ITEMS + ); + + _assertBelowBlockGas(gasUsed); + } + + function testGas_checkoutFiftyItemFiveRoyaltyRecipientCartUnderBlockGas() public { + _deployFixture(MAX_ROYALTY_RECIPIENTS); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _prepareSecondaryCheckoutItems( + MAX_CHECKOUT_BENCH_ITEMS, + address(0), + PRICE + ); + + uint256 gasUsed = _measureCheckout( + "checkout_secondary_eth_50_items_5_royalty_recipients", + MAX_CHECKOUT_BENCH_ITEMS, + items, + _withFee(PRICE) * MAX_CHECKOUT_BENCH_ITEMS, + MAX_CHECKOUT_BENCH_ITEMS, + 0 + ); + + _assertBelowBlockGas(gasUsed); + } + + function testGas_mintDirectSaleBatchEthMaxSplits_sweep() public { + uint256[] memory counts = _batchBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(0); + uint256[] memory tokenIds = _preparePrimarySales(count); + IRareERC1155MarketplaceTypes.MintRequest[] memory requests = _mintRequests(tokenIds, PRICE); + + vm.prank(buyer); + uint256 gasBefore = gasleft(); + marketplace.mintDirectSaleBatch{value: _withFee(PRICE) * count}(address(token), address(0), requests); + _recordGas("mint_direct_sale_batch_eth_max_splits", count, gasBefore - gasleft()); + } + } + + function testGas_buyBatchEthMaxSplitsAndRoyalties_sweep() public { + uint256[] memory counts = _batchBenchmarkCounts(); + for (uint256 i = 0; i < counts.length; i++) { + uint256 count = counts[i]; + _deployFixture(MAX_ROYALTY_RECIPIENTS); + uint256[] memory tokenIds = _prepareSecondaryListings(count, address(0)); + IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = _buyRequests(tokenIds, PRICE); + + vm.prank(buyer); + uint256 gasBefore = gasleft(); + marketplace.buyBatch{value: _withFee(PRICE) * count}(address(token), seller, address(0), requests); + _recordGas("buy_batch_eth_max_splits_max_royalties", count, gasBefore - gasleft()); + } + } + + function _deployFixture(uint256 _royaltyRecipientCount) private { + deal(deployer, 1_000_000 ether); + deal(seller, 1_000_000 ether); + deal(buyer, 1_000_000 ether); + + vm.startPrank(deployer); + currency = new CheckoutGasCurrency(buyer); + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + erc1155ApprovalManager = new ERC1155ApprovalManager(); + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + + address marketplaceSettings = address(new CheckoutGasMarketplaceSettings()); + address royaltyEngine = address(new CheckoutGasRoyaltyEngine(_royaltyRecipientCount)); + address approvedTokenRegistry = address(new CheckoutGasApprovedTokenRegistry()); + + marketplace = RareERC1155Marketplace( + address( + new ERC1967Proxy( + address(new RareERC1155Marketplace()), + abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + royaltyEngine, + address(new Payments()), + approvedTokenRegistry, + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager), + address(tradeExecutionModule), + address(checkoutExecutionModule) + ) + ) + ) + ); + erc20ApprovalManager.grantOperatorRole(address(marketplace)); + erc1155ApprovalManager.grantOperatorRole(address(marketplace)); + + tokenFactory = new RareERC1155ContractFactory(); + tokenFactory.setDefaultMinter(address(marketplace)); + vm.stopPrank(); + + vm.prank(seller); + token = RareERC1155(tokenFactory.createRareERC1155Contract("Gas Editions", "GAS", "ipfs://gas/{id}.json")); + } + + function _preparePrimaryCheckoutItems( + uint256 _count + ) private returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { + uint256[] memory tokenIds = _preparePrimarySales(_count); + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); + for (uint256 i = 0; i < _count; i++) { + items[i] = _directSaleCheckoutItem(tokenIds[i], PRICE); + } + } + + function _prepareSecondaryCheckoutItems( + uint256 _count, + address _currencyAddress, + uint256 _itemPrice + ) private returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { + uint256[] memory tokenIds = _prepareSecondaryListings(_count, _currencyAddress); + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); + for (uint256 i = 0; i < _count; i++) { + items[i] = _listingCheckoutItem(tokenIds[i], _currencyAddress, _itemPrice); + } + } + + function _prepareStaleBalanceSecondaryCheckoutItems( + uint256 _count, + address _currencyAddress + ) private returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { + uint256[] memory tokenIds = _prepareSecondaryListings(_count, _currencyAddress); + if (_count != 0) { + vm.prank(seller); + token.safeBatchTransferFrom(seller, address(0x6000), tokenIds, _amounts(_count, 1), ""); + } + + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_count); + for (uint256 i = 0; i < _count; i++) { + items[i] = _listingCheckoutItem(tokenIds[i], _currencyAddress, PRICE); + } + } + + function _preparePrimarySales(uint256 _count) private returns (uint256[] memory tokenIds) { + tokenIds = _createTokenIds(_count, 10); + if (_count == 0) return tokenIds; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _directSaleRequests(tokenIds, PRICE), + _splitRecipients(MAX_SPLIT_RECIPIENTS), + _splitRatios(MAX_SPLIT_RECIPIENTS) + ); + } + + function _prepareSecondaryListings( + uint256 _count, + address _currencyAddress + ) private returns (uint256[] memory tokenIds) { + tokenIds = _createTokenIds(_count, 10); + if (_count == 0) return tokenIds; + + uint256[] memory amounts = _amounts(_count, 1); + vm.startPrank(seller); + token.mintBatchTo(seller, tokenIds, amounts); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + _currencyAddress, + _salePriceRequests(tokenIds, PRICE), + _splitRecipients(MAX_SPLIT_RECIPIENTS), + _splitRatios(MAX_SPLIT_RECIPIENTS) + ); + vm.stopPrank(); + } + + function _createTokenIds(uint256 _count, uint256 _maxSupply) private returns (uint256[] memory tokenIds) { + tokenIds = new uint256[](_count); + vm.startPrank(seller); + for (uint256 i = 0; i < _count; i++) { + tokenIds[i] = token.createToken("ipfs://gas-token.json", _maxSupply, seller); + } + vm.stopPrank(); + } + + function _measureCheckout( + string memory _scenario, + uint256 _count, + IRareERC1155MarketplaceTypes.CheckoutItem[] memory _items, + uint256 _value, + uint256 _expectedFilled, + uint256 _expectedSkipped + ) private returns (uint256 gasUsed) { + vm.prank(buyer); + uint256 gasBefore = gasleft(); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _value}(_items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + gasUsed = gasBefore - gasleft(); + + assertEq(summary.filledCount, _expectedFilled); + assertEq(summary.skippedCount, _expectedSkipped); + _recordGas(_scenario, _count, gasUsed); + } + + function _assertBelowBlockGas(uint256 _gasUsed) private { + assertLt(_gasUsed, BLOCK_GAS_CEILING); + } + + function _recordGas(string memory _scenario, uint256 _count, uint256 _gasUsed) private { + emit log_string(_scenario); + emit log_named_uint("items", _count); + emit log_named_uint("gas", _gasUsed); + emit log_named_uint("gas_per_item", _gasUsed / _count); + } + + function _checkoutBenchmarkCounts() private pure returns (uint256[] memory counts) { + counts = new uint256[](5); + counts[0] = 1; + counts[1] = 5; + counts[2] = 10; + counts[3] = 20; + counts[4] = MAX_CHECKOUT_BENCH_ITEMS; + } + + function _batchBenchmarkCounts() private pure returns (uint256[] memory counts) { + counts = new uint256[](6); + counts[0] = 1; + counts[1] = 5; + counts[2] = 10; + counts[3] = 20; + counts[4] = 50; + counts[5] = MAX_BATCH_BENCH_ITEMS; + } + + function _concatCheckoutItems( + IRareERC1155MarketplaceTypes.CheckoutItem[] memory _first, + IRareERC1155MarketplaceTypes.CheckoutItem[] memory _second + ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](_first.length + _second.length); + for (uint256 i = 0; i < _first.length; i++) { + items[i] = _first[i]; + } + for (uint256 i = 0; i < _second.length; i++) { + items[_first.length + i] = _second[i]; + } + } + + function _directSaleCheckoutItem( + uint256 _tokenId, + uint256 _price + ) private view returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), + contractAddress: address(token), + seller: address(0), + currencyAddress: address(0), + tokenId: _tokenId, + price: _price, + quantity: 1, + proof: new bytes32[](0) + }); + } + + function _listingCheckoutItem( + uint256 _tokenId, + address _currencyAddress, + uint256 _price + ) private view returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), + contractAddress: address(token), + seller: seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: 1, + proof: new bytes32[](0) + }); + } + + function _directSaleRequests( + uint256[] memory _tokenIds, + uint256 _price + ) private pure returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.DirectSaleRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenIds[i], _price, 0, 0); + } + } + + function _salePriceRequests( + uint256[] memory _tokenIds, + uint256 _price + ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenIds[i], _price, 1, 0); + } + } + + function _mintRequests( + uint256[] memory _tokenIds, + uint256 _price + ) private pure returns (IRareERC1155MarketplaceTypes.MintRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.MintRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.MintRequest(_tokenIds[i], _price, 1, new bytes32[](0)); + } + } + + function _buyRequests( + uint256[] memory _tokenIds, + uint256 _price + ) private pure returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.BuyRequest[](_tokenIds.length); + for (uint256 i = 0; i < _tokenIds.length; i++) { + requests[i] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenIds[i], _price, 1); + } + } + + function _splitRecipients(uint256 _count) private pure returns (address payable[] memory recipients) { + recipients = new address payable[](_count); + for (uint256 i = 0; i < _count; i++) { + recipients[i] = payable(address(uint160(0xB000 + i))); + } + } + + function _splitRatios(uint256 _count) private pure returns (uint8[] memory ratios) { + ratios = new uint8[](_count); + uint8 ratio = uint8(100 / _count); + for (uint256 i = 0; i < _count; i++) { + ratios[i] = ratio; + } + ratios[_count - 1] += uint8(100 - (ratio * _count)); + } + + function _amounts(uint256 _count, uint256 _amount) private pure returns (uint256[] memory amounts) { + amounts = new uint256[](_count); + for (uint256 i = 0; i < _count; i++) { + amounts[i] = _amount; + } + } + + function _withFee(uint256 _amount) private pure returns (uint256) { + return _amount + ((_amount * 3) / 100); + } +} diff --git a/src/test/marketplace/RareERC1155MarketplaceInvariants.t.sol b/src/test/marketplace/RareERC1155MarketplaceInvariants.t.sol new file mode 100644 index 0000000..6aab729 --- /dev/null +++ b/src/test/marketplace/RareERC1155MarketplaceInvariants.t.sol @@ -0,0 +1,973 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/StdInvariant.sol"; +import "forge-std/Test.sol"; + +import {ERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; +import {IERC1155Receiver} from "openzeppelin-contracts/token/ERC1155/IERC1155Receiver.sol"; +import {IERC165} from "openzeppelin-contracts/utils/introspection/IERC165.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import {IApprovedTokenRegistry} from "../../registry/interfaces/IApprovedTokenRegistry.sol"; +import {IMarketplaceSettings} from "../../marketplace/IMarketplaceSettings.sol"; +import {Payments} from "../../payments/Payments.sol"; +import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; +import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {IRareERC1155MarketplaceTypes} from "../../marketplace/IRareERC1155MarketplaceTypes.sol"; +import {RareERC1155CheckoutExecutionModule} from "../../marketplace/RareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155TradeExecutionModule} from "../../marketplace/RareERC1155TradeExecutionModule.sol"; +import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; + +contract MarketplaceInvariantCurrency is ERC20 { + constructor() ERC20("Invariant Currency", "ICUR") {} + + function mint(address _to, uint256 _amount) external { + _mint(_to, _amount); + } +} + +contract RejectingERC1155Receiver is IERC1155Receiver { + receive() external payable { + revert("reject eth"); + } + + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) { + revert("reject erc1155"); + } + + function onERC1155BatchReceived( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) external pure returns (bytes4) { + revert("reject erc1155 batch"); + } + + function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155Receiver).interfaceId; + } +} + +contract RejectingPayoutRecipient { + receive() external payable { + revert("reject eth"); + } +} + +contract RareERC1155MarketplaceHandler is Test { + struct OfferKey { + uint256 tokenId; + address buyer; + address currencyAddress; + } + + struct ListingKey { + uint256 tokenId; + address seller; + } + + RareERC1155Marketplace public marketplace; + RareERC1155 public token; + MarketplaceInvariantCurrency public currency; + + address private collectionOwner; + address private rejectingPayoutRecipient; + address private marketplaceSettings; + address private royaltyEngine; + + address[3] private buyers; + address[2] private sellers; + uint256[3] private tokenIds; + + OfferKey[] private offerKeys; + ListingKey[] private listingKeys; + mapping(bytes32 => uint256) private offerKeyIndexPlusOne; + mapping(bytes32 => uint256) private listingKeyIndexPlusOne; + + uint256 public ghostEthEscrowOwed; + mapping(address => uint256) public ghostErc20EscrowOwed; + uint256 public ghostTokensReceivedByBuyers; + uint256 public ghostTokensRemovedFromSellers; + uint256 public ghostTokensMinted; + + uint256 public initialBuyerTokenBalanceSum; + uint256 public initialSellerTokenBalanceSum; + uint256 public initialTokenSupplySum; + + constructor( + RareERC1155Marketplace _marketplace, + RareERC1155 _token, + MarketplaceInvariantCurrency _currencyToken, + address _collectionOwner, + address _rejectingPayoutRecipient, + address _marketplaceSettings, + address _royaltyEngine, + address[3] memory _buyers, + address[2] memory _sellers, + uint256[3] memory _tokenIds + ) { + marketplace = _marketplace; + token = _token; + currency = _currencyToken; + collectionOwner = _collectionOwner; + rejectingPayoutRecipient = _rejectingPayoutRecipient; + marketplaceSettings = _marketplaceSettings; + royaltyEngine = _royaltyEngine; + buyers = _buyers; + sellers = _sellers; + tokenIds = _tokenIds; + + initialBuyerTokenBalanceSum = buyerTokenBalanceSum(); + initialSellerTokenBalanceSum = sellerTokenBalanceSum(); + initialTokenSupplySum = tokenSupplySum(); + } + + function makeOffer( + uint256 _buyerSeed, + uint256 _currencySeed, + uint256 _tokenSeed, + uint256 _priceSeed, + uint256 _qtySeed + ) external { + address buyer = _buyerForSeed(_buyerSeed); + address currencyAddress = _currencyForSeed(_currencySeed); + uint256 tokenId = _tokenIdForSeed(_tokenSeed); + uint256 price = _priceForSeed(_priceSeed); + uint256 quantity = _quantityForSeed(_qtySeed); + uint256 grossAmount = price * quantity; + + _mockOfferFees(grossAmount); + + vm.prank(buyer); + if (currencyAddress == address(0)) { + try + marketplace.makeOffer{value: _withFee(grossAmount)}( + address(token), + tokenId, + currencyAddress, + price, + quantity, + 0 + ) + { + _trackOffer(tokenId, buyer, currencyAddress); + _syncEscrowGhosts(); + } catch {} + } else { + try marketplace.makeOffer(address(token), tokenId, currencyAddress, price, quantity, 0) { + _trackOffer(tokenId, buyer, currencyAddress); + _syncEscrowGhosts(); + } catch {} + } + } + + function acceptOffer(uint256 _sellerSeed, uint256 _offerSeed, uint256 _qtySeed, uint256 _splitSeed) external { + (bool found, uint256 keyIndex) = _activeOfferIndex(_offerSeed); + if (!found) return; + + OfferKey memory key = offerKeys[keyIndex]; + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer( + address(token), + key.tokenId, + key.buyer, + key.currencyAddress + ); + address seller = _sellerForSeed(_sellerSeed); + uint256 sellerBalance = token.balanceOf(seller, key.tokenId); + if (sellerBalance == 0) return; + + uint256 quantity = _bounded(_qtySeed, 1, _min(offer.quantity, sellerBalance)); + uint256 grossAmount = offer.price * quantity; + _mockSecondaryPayout(key.tokenId, grossAmount, seller); + + uint256 buyerBalanceBefore = token.balanceOf(key.buyer, key.tokenId); + uint256 sellerBalanceBefore = token.balanceOf(seller, key.tokenId); + + vm.prank(seller); + try + marketplace.acceptOffer( + address(token), + key.tokenId, + key.buyer, + key.currencyAddress, + offer.price, + quantity, + _splitRecipients(seller, _splitSeed), + _splitRatios() + ) + { + _recordSecondaryTransfer(key.buyer, seller, key.tokenId, buyerBalanceBefore, sellerBalanceBefore); + _syncEscrowGhosts(); + } catch {} + } + + function cancelOffer(uint256 _offerSeed) external { + if (offerKeys.length == 0) return; + + OfferKey memory key = offerKeys[_offerSeed % offerKeys.length]; + vm.prank(key.buyer); + try marketplace.cancelOffer(address(token), key.tokenId, key.currencyAddress) { + _syncEscrowGhosts(); + } catch {} + } + + function setListing( + uint256 _sellerSeed, + uint256 _currencySeed, + uint256 _tokenSeed, + uint256 _priceSeed, + uint256 _qtySeed, + uint256 _splitSeed + ) external { + address seller = _sellerForSeed(_sellerSeed); + uint256 tokenId = _tokenIdForSeed(_tokenSeed); + uint256 balance = token.balanceOf(seller, tokenId); + if (balance == 0) return; + + uint256 quantity = _bounded(_qtySeed, 1, _min(balance, 5)); + uint256 price = _priceForSeed(_priceSeed); + address currencyAddress = _currencyForSeed(_currencySeed); + + vm.prank(seller); + try + marketplace.setSalePrices( + address(token), + currencyAddress, + _singleSalePriceRequest(tokenId, price, quantity), + _splitRecipients(seller, _splitSeed), + _splitRatios() + ) + { + _trackListing(tokenId, seller); + } catch {} + } + + function cancelListing(uint256 _listingSeed) external { + if (listingKeys.length == 0) return; + + ListingKey memory key = listingKeys[_listingSeed % listingKeys.length]; + vm.prank(key.seller); + try marketplace.cancelSalePrices(address(token), _singleTokenIds(key.tokenId)) {} catch {} + } + + function buyBatch(uint256 _buyerSeed, uint256 _listingSeed, uint256 _qtySeed) external { + (bool found, uint256 keyIndex) = _activeListingIndex(_listingSeed); + if (!found) return; + + ListingKey memory key = listingKeys[keyIndex]; + IRareERC1155MarketplaceTypes.SalePrice memory salePrice = marketplace.getSalePrice( + address(token), + key.tokenId, + key.seller + ); + address buyer = _buyerForSeed(_buyerSeed); + uint256 sellerBalance = token.balanceOf(key.seller, key.tokenId); + if (sellerBalance == 0) return; + + uint256 quantity = _bounded(_qtySeed, 1, _min(salePrice.quantity, sellerBalance)); + uint256 grossAmount = salePrice.price * quantity; + _mockSecondaryPayout(key.tokenId, grossAmount, key.seller); + + uint256 buyerBalanceBefore = token.balanceOf(buyer, key.tokenId); + uint256 sellerBalanceBefore = token.balanceOf(key.seller, key.tokenId); + + vm.prank(buyer); + if (salePrice.currencyAddress == address(0)) { + try + marketplace.buyBatch{value: _withFee(grossAmount)}( + address(token), + key.seller, + salePrice.currencyAddress, + _singleBuyRequest(key.tokenId, salePrice.price, quantity) + ) + { + _recordSecondaryTransfer(buyer, key.seller, key.tokenId, buyerBalanceBefore, sellerBalanceBefore); + } catch {} + } else { + try + marketplace.buyBatch( + address(token), + key.seller, + salePrice.currencyAddress, + _singleBuyRequest(key.tokenId, salePrice.price, quantity) + ) + { + _recordSecondaryTransfer(buyer, key.seller, key.tokenId, buyerBalanceBefore, sellerBalanceBefore); + } catch {} + } + } + + function prepareDirectSale( + uint256 _currencySeed, + uint256 _tokenSeed, + uint256 _priceSeed, + uint256 _maxMintSeed, + uint256 _splitSeed + ) external { + _prepareDirectSaleConfig( + _tokenIdForSeed(_tokenSeed), + _currencyForSeed(_currencySeed), + _priceForSeed(_priceSeed), + _bounded(_maxMintSeed, 1, 4), + _splitSeed + ); + } + + function cancelDirectSale(uint256 _tokenSeed) external { + vm.prank(collectionOwner); + try marketplace.cancelMintDirectSales(address(token), _singleTokenIds(_tokenIdForSeed(_tokenSeed))) {} catch {} + } + + function checkoutMixedCart( + uint256 _buyerSeed, + uint256 _sellerSeed, + uint256 _tokenSeed, + uint256 _priceSeed, + uint256 _qtySeed, + uint256 _splitSeed + ) external { + address buyer = _buyerForSeed(_buyerSeed); + uint256 listingTokenId = _tokenIdForSeed(_tokenSeed); + (bool listed, address seller, uint256 sellerBalance) = _sellerWithBalance(_sellerSeed, listingTokenId); + if (!listed) return; + + address listingCurrency = _currencyForSeed(_priceSeed); + address directCurrency = listingCurrency == address(0) ? address(currency) : address(0); + uint256 listingQuantity = _bounded(_qtySeed, 1, _min(sellerBalance, 2)); + uint256 listingPrice = _priceForSeed(_priceSeed); + + vm.prank(seller); + try + marketplace.setSalePrices( + address(token), + listingCurrency, + _singleSalePriceRequest(listingTokenId, listingPrice, listingQuantity), + _splitRecipients(seller, _splitSeed), + _splitRatios() + ) + { + _trackListing(listingTokenId, seller); + } catch { + return; + } + + uint256 directTokenId = _tokenIdForSeed(_tokenSeed + 1); + uint256 directPrice = _priceForSeed(_priceSeed + 1); + uint256 directQuantity = _bounded(_qtySeed + 1, 1, 2); + _prepareDirectSaleConfig(directTokenId, directCurrency, directPrice, directQuantity, _splitSeed + 1); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](3); + items[0] = _listingCheckoutItem(listingTokenId, seller, listingCurrency, listingPrice, listingQuantity); + items[1] = _directSaleCheckoutItem(directTokenId, directCurrency, directPrice, directQuantity); + items[2] = _unsupportedCheckoutItem(); + + uint256 ethValue = 0; + if (listingCurrency == address(0)) ethValue += _withFee(listingPrice * listingQuantity); + if (directCurrency == address(0)) ethValue += _withFee(directPrice * directQuantity); + ethValue += 1 wei; + + vm.prank(buyer); + try marketplace.checkout{value: ethValue}(items) returns ( + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution + ) { + _recordCheckoutFills(execution, buyer); + _syncEscrowGhosts(); + } catch {} + } + + function trackedOfferCount() external view returns (uint256) { + return offerKeys.length; + } + + function trackedOfferKey( + uint256 _index + ) external view returns (uint256 tokenId, address buyer, address currencyAddress) { + OfferKey memory key = offerKeys[_index]; + return (key.tokenId, key.buyer, key.currencyAddress); + } + + function trackedListingCount() external view returns (uint256) { + return listingKeys.length; + } + + function trackedListingKey(uint256 _index) external view returns (uint256 tokenId, address seller) { + ListingKey memory key = listingKeys[_index]; + return (key.tokenId, key.seller); + } + + function buyerTokenBalanceSum() public view returns (uint256 sum) { + for (uint256 i = 0; i < buyers.length; i++) { + for (uint256 j = 0; j < tokenIds.length; j++) { + sum += token.balanceOf(buyers[i], tokenIds[j]); + } + } + } + + function sellerTokenBalanceSum() public view returns (uint256 sum) { + for (uint256 i = 0; i < sellers.length; i++) { + for (uint256 j = 0; j < tokenIds.length; j++) { + sum += token.balanceOf(sellers[i], tokenIds[j]); + } + } + } + + function tokenSupplySum() public view returns (uint256 sum) { + for (uint256 i = 0; i < tokenIds.length; i++) { + sum += token.totalSupply(tokenIds[i]); + } + } + + function _recordCheckoutFills( + IRareERC1155MarketplaceTypes.CheckoutExecution memory _execution, + address _buyer + ) private { + for (uint256 i = 0; i < _execution.items.length; i++) { + IRareERC1155MarketplaceTypes.CheckoutItemResult memory result = _execution.items[i]; + if (!result.filled) continue; + + if (result.itemKind == uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT)) { + ghostTokensMinted += result.quantity; + ghostTokensReceivedByBuyers += result.quantity; + _buyer; + continue; + } + + if (result.itemKind == uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY)) { + ghostTokensRemovedFromSellers += result.quantity; + ghostTokensReceivedByBuyers += result.quantity; + } + } + } + + function _recordSecondaryTransfer( + address _buyer, + address _seller, + uint256 _tokenId, + uint256 _buyerBalanceBefore, + uint256 _sellerBalanceBefore + ) private { + uint256 buyerDelta = token.balanceOf(_buyer, _tokenId) - _buyerBalanceBefore; + uint256 sellerDelta = _sellerBalanceBefore - token.balanceOf(_seller, _tokenId); + ghostTokensReceivedByBuyers += buyerDelta; + ghostTokensRemovedFromSellers += sellerDelta; + } + + function _syncEscrowGhosts() private { + ghostEthEscrowOwed = 0; + ghostErc20EscrowOwed[address(currency)] = 0; + + for (uint256 i = 0; i < offerKeys.length; i++) { + OfferKey memory key = offerKeys[i]; + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer( + address(token), + key.tokenId, + key.buyer, + key.currencyAddress + ); + uint256 escrowOwed = (offer.price * offer.quantity) + offer.marketplaceFeeRemaining; + if (key.currencyAddress == address(0)) { + ghostEthEscrowOwed += escrowOwed; + } else { + ghostErc20EscrowOwed[key.currencyAddress] += escrowOwed; + } + } + } + + function _trackOffer(uint256 _tokenId, address _buyer, address _currencyAddress) private { + bytes32 keyHash = keccak256(abi.encode(_tokenId, _buyer, _currencyAddress)); + if (offerKeyIndexPlusOne[keyHash] != 0) return; + + offerKeys.push(OfferKey({tokenId: _tokenId, buyer: _buyer, currencyAddress: _currencyAddress})); + offerKeyIndexPlusOne[keyHash] = offerKeys.length; + } + + function _trackListing(uint256 _tokenId, address _seller) private { + bytes32 keyHash = keccak256(abi.encode(_tokenId, _seller)); + if (listingKeyIndexPlusOne[keyHash] != 0) return; + + listingKeys.push(ListingKey({tokenId: _tokenId, seller: _seller})); + listingKeyIndexPlusOne[keyHash] = listingKeys.length; + } + + function _activeOfferIndex(uint256 _seed) private view returns (bool found, uint256 keyIndex) { + uint256 activeCount = 0; + for (uint256 i = 0; i < offerKeys.length; i++) { + OfferKey memory key = offerKeys[i]; + if (marketplace.getOffer(address(token), key.tokenId, key.buyer, key.currencyAddress).quantity != 0) { + activeCount++; + } + } + if (activeCount == 0) return (false, 0); + + uint256 target = _seed % activeCount; + uint256 current = 0; + for (uint256 i = 0; i < offerKeys.length; i++) { + OfferKey memory key = offerKeys[i]; + if (marketplace.getOffer(address(token), key.tokenId, key.buyer, key.currencyAddress).quantity == 0) { + continue; + } + if (current == target) return (true, i); + current++; + } + } + + function _activeListingIndex(uint256 _seed) private view returns (bool found, uint256 keyIndex) { + uint256 activeCount = 0; + for (uint256 i = 0; i < listingKeys.length; i++) { + ListingKey memory key = listingKeys[i]; + if (marketplace.getSalePrice(address(token), key.tokenId, key.seller).quantity != 0) activeCount++; + } + if (activeCount == 0) return (false, 0); + + uint256 target = _seed % activeCount; + uint256 current = 0; + for (uint256 i = 0; i < listingKeys.length; i++) { + ListingKey memory key = listingKeys[i]; + if (marketplace.getSalePrice(address(token), key.tokenId, key.seller).quantity == 0) continue; + if (current == target) return (true, i); + current++; + } + } + + function _sellerWithBalance( + uint256 _sellerSeed, + uint256 _tokenId + ) private view returns (bool found, address seller, uint256 balance) { + for (uint256 i = 0; i < sellers.length; i++) { + seller = sellers[(_sellerSeed + i) % sellers.length]; + balance = token.balanceOf(seller, _tokenId); + if (balance != 0) return (true, seller, balance); + } + } + + function _prepareDirectSaleConfig( + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _maxMints, + uint256 _splitSeed + ) private { + vm.prank(collectionOwner); + try + marketplace.prepareMintDirectSales( + address(token), + _currencyAddress, + _singleDirectSaleRequest(_tokenId, _price, 0, _maxMints), + _splitRecipients(collectionOwner, _splitSeed), + _splitRatios() + ) + {} catch {} + } + + function _mockOfferFees(uint256 _amount) private { + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), + abi.encode(_fee(_amount)) + ); + } + + function _mockSecondaryPayout(uint256 _tokenId, uint256 _amount, address _seller) private { + _seller; + _mockOfferFees(_amount); + + address payable[] memory receivers = new address payable[](0); + uint256[] memory royalties = new uint256[](0); + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), _tokenId, _amount), + abi.encode(receivers, royalties) + ); + } + + function _mockPrimaryPayout(uint256 _amount, address _seller) private { + _seller; + _mockOfferFees(_amount); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.getERC721ContractPrimarySaleFeePercentage.selector, address(token)), + abi.encode(uint256(10)) + ); + } + + function _directSaleCheckoutItem( + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity + ) private returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + _mockPrimaryPayout(_price * _quantity, collectionOwner); + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), + contractAddress: address(token), + seller: collectionOwner, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _listingCheckoutItem( + uint256 _tokenId, + address _seller, + address _currencyAddress, + uint256 _price, + uint256 _quantity + ) private returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + _mockSecondaryPayout(_tokenId, _price * _quantity, _seller); + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), + contractAddress: address(token), + seller: _seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _unsupportedCheckoutItem() private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: type(uint8).max, + contractAddress: address(0), + seller: address(0), + currencyAddress: address(0), + tokenId: 0, + price: 0, + quantity: 0, + proof: new bytes32[](0) + }); + } + + function _singleSalePriceRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, 0); + } + + function _singleDirectSaleRequest( + uint256 _tokenId, + uint256 _price, + uint256 _startTime, + uint256 _maxMints + ) private pure returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.DirectSaleRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenId, _price, _startTime, _maxMints); + } + + function _singleBuyRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenId, _price, _quantity); + } + + function _singleTokenIds(uint256 _tokenId) private pure returns (uint256[] memory tokenIdList) { + tokenIdList = new uint256[](1); + tokenIdList[0] = _tokenId; + } + + function _splitRecipients( + address _seller, + uint256 _splitSeed + ) private view returns (address payable[] memory recipients) { + recipients = new address payable[](1); + recipients[0] = payable(_splitSeed % 4 == 0 ? rejectingPayoutRecipient : _seller); + } + + function _splitRatios() private pure returns (uint8[] memory ratios) { + ratios = new uint8[](1); + ratios[0] = 100; + } + + function _buyerForSeed(uint256 _seed) private view returns (address) { + return buyers[_seed % buyers.length]; + } + + function _sellerForSeed(uint256 _seed) private view returns (address) { + return sellers[_seed % sellers.length]; + } + + function _tokenIdForSeed(uint256 _seed) private view returns (uint256) { + return tokenIds[_seed % tokenIds.length]; + } + + function _currencyForSeed(uint256 _seed) private view returns (address) { + return _seed % 2 == 0 ? address(0) : address(currency); + } + + function _priceForSeed(uint256 _seed) private pure returns (uint256) { + return 0.001 ether + ((_seed % 50) * 0.001 ether); + } + + function _quantityForSeed(uint256 _seed) private pure returns (uint256) { + return _bounded(_seed, 1, 3); + } + + function _withFee(uint256 _amount) private pure returns (uint256) { + return _amount + _fee(_amount); + } + + function _fee(uint256 _amount) private pure returns (uint256) { + return (_amount * 3) / 100; + } + + function _bounded(uint256 _seed, uint256 _minValue, uint256 _maxValue) private pure returns (uint256) { + return _minValue + (_seed % (_maxValue - _minValue + 1)); + } + + function _min(uint256 _a, uint256 _b) private pure returns (uint256) { + return _a < _b ? _a : _b; + } +} + +contract RareERC1155MarketplaceInvariantTest is StdInvariant, Test { + RareERC1155Marketplace private marketplace; + RareERC1155MarketplaceHandler private handler; + RareERC1155 private token; + MarketplaceInvariantCurrency private currency; + RareERC1155ContractFactory private tokenFactory; + ERC20ApprovalManager private erc20ApprovalManager; + ERC721ApprovalManager private erc721ApprovalManager; + ERC1155ApprovalManager private erc1155ApprovalManager; + + address private deployer = address(0x1000); + address private seller = address(0x2000); + address private sellerTwo = address(0x2001); + address private buyer = address(0x3000); + address private buyerTwo = address(0x3001); + address private networkBeneficiary = address(0x5000); + + address private marketplaceSettings = address(0x7100); + address private royaltyEngine = address(0x7400); + address private approvedTokenRegistry = address(0x7600); + + uint256[3] private tokenIds; + + function setUp() public { + RejectingERC1155Receiver rejectingBuyer = new RejectingERC1155Receiver(); + RejectingPayoutRecipient rejectingPayoutRecipient = new RejectingPayoutRecipient(); + + deal(deployer, 1_000 ether); + deal(seller, 1_000 ether); + deal(sellerTwo, 1_000 ether); + deal(buyer, 1_000 ether); + deal(buyerTwo, 1_000 ether); + deal(address(rejectingBuyer), 1_000 ether); + + vm.startPrank(deployer); + currency = new MarketplaceInvariantCurrency(); + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + erc1155ApprovalManager = new ERC1155ApprovalManager(); + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + Payments payments = new Payments(); + marketplace = RareERC1155Marketplace( + address( + new ERC1967Proxy( + address(new RareERC1155Marketplace()), + _initData(address(payments), address(tradeExecutionModule), address(checkoutExecutionModule)) + ) + ) + ); + erc20ApprovalManager.grantOperatorRole(address(marketplace)); + erc1155ApprovalManager.grantOperatorRole(address(marketplace)); + + tokenFactory = new RareERC1155ContractFactory(); + tokenFactory.setDefaultMinter(address(marketplace)); + vm.stopPrank(); + + vm.prank(seller); + token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); + + vm.startPrank(seller); + tokenIds[0] = token.createToken("ipfs://token/1.json", 10_000, seller); + tokenIds[1] = token.createToken("ipfs://token/2.json", 10_000, seller); + tokenIds[2] = token.createToken("ipfs://token/3.json", 10_000, seller); + for (uint256 i = 0; i < tokenIds.length; i++) { + token.mintTo(seller, tokenIds[i], 120); + token.mintTo(sellerTwo, tokenIds[i], 120); + } + token.setApprovalForAll(address(erc1155ApprovalManager), true); + vm.stopPrank(); + + vm.prank(sellerTwo); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _fundAndApproveCurrency(buyer); + _fundAndApproveCurrency(buyerTwo); + _fundAndApproveCurrency(address(rejectingBuyer)); + + vm.etch(marketplaceSettings, address(marketplace).code); + vm.etch(royaltyEngine, address(marketplace).code); + vm.etch(approvedTokenRegistry, address(marketplace).code); + + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(currency)), + abi.encode(true) + ); + + address[3] memory buyers = [buyer, buyerTwo, address(rejectingBuyer)]; + address[2] memory sellers = [seller, sellerTwo]; + handler = new RareERC1155MarketplaceHandler( + marketplace, + token, + currency, + seller, + address(rejectingPayoutRecipient), + marketplaceSettings, + royaltyEngine, + buyers, + sellers, + tokenIds + ); + + targetContract(address(handler)); + bytes4[] memory selectors = new bytes4[](9); + selectors[0] = RareERC1155MarketplaceHandler.makeOffer.selector; + selectors[1] = RareERC1155MarketplaceHandler.acceptOffer.selector; + selectors[2] = RareERC1155MarketplaceHandler.cancelOffer.selector; + selectors[3] = RareERC1155MarketplaceHandler.setListing.selector; + selectors[4] = RareERC1155MarketplaceHandler.cancelListing.selector; + selectors[5] = RareERC1155MarketplaceHandler.buyBatch.selector; + selectors[6] = RareERC1155MarketplaceHandler.prepareDirectSale.selector; + selectors[7] = RareERC1155MarketplaceHandler.cancelDirectSale.selector; + selectors[8] = RareERC1155MarketplaceHandler.checkoutMixedCart.selector; + targetSelector(FuzzSelector({addr: address(handler), selectors: selectors})); + } + + function invariant_ethEscrowConserved() public { + assertGe(address(marketplace).balance, handler.ghostEthEscrowOwed()); + } + + function invariant_erc20EscrowConserved() public { + assertGe(currency.balanceOf(address(marketplace)), handler.ghostErc20EscrowOwed(address(currency))); + } + + function invariant_tokensMatchPayments() public { + assertEq( + handler.ghostTokensReceivedByBuyers(), + handler.ghostTokensRemovedFromSellers() + handler.ghostTokensMinted() + ); + + assertEq( + handler.buyerTokenBalanceSum(), + handler.initialBuyerTokenBalanceSum() + handler.ghostTokensReceivedByBuyers() + ); + + uint256 sellerBalanceSum = handler.sellerTokenBalanceSum(); + assertGe(handler.initialSellerTokenBalanceSum(), sellerBalanceSum); + assertEq(handler.initialSellerTokenBalanceSum() - sellerBalanceSum, handler.ghostTokensRemovedFromSellers()); + + assertEq(handler.tokenSupplySum(), handler.initialTokenSupplySum() + handler.ghostTokensMinted()); + } + + function invariant_noZeroQuantityListings() public { + uint256 listingCount = handler.trackedListingCount(); + for (uint256 i = 0; i < listingCount; i++) { + (uint256 tokenId, address listedSeller) = handler.trackedListingKey(i); + IRareERC1155MarketplaceTypes.SalePrice memory salePrice = marketplace.getSalePrice( + address(token), + tokenId, + listedSeller + ); + + if (salePrice.quantity == 0) { + assertEq(salePrice.price, 0); + assertEq(salePrice.expirationTime, 0); + assertEq(salePrice.splitRecipients.length, 0); + assertEq(salePrice.splitRatios.length, 0); + } else { + assertGt(salePrice.price, 0); + } + } + } + + function invariant_offerStructConsistency() public { + uint256 offerCount = handler.trackedOfferCount(); + uint256 ethEscrowOwed = 0; + uint256 erc20EscrowOwed = 0; + + for (uint256 i = 0; i < offerCount; i++) { + (uint256 tokenId, address offerBuyer, address currencyAddress) = handler.trackedOfferKey(i); + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer( + address(token), + tokenId, + offerBuyer, + currencyAddress + ); + + if (offer.quantity == 0) { + assertEq(offer.currencyAddress, address(0)); + assertEq(offer.price, 0); + assertEq(offer.initialQuantity, 0); + assertEq(offer.marketplaceFeeRemaining, 0); + assertEq(offer.marketplaceFeeTotal, 0); + assertEq(offer.expirationTime, 0); + continue; + } + + assertEq(offer.currencyAddress, currencyAddress); + assertGt(offer.price, 0); + assertGe(offer.initialQuantity, offer.quantity); + assertLe(offer.marketplaceFeeRemaining, offer.marketplaceFeeTotal); + + uint256 escrowOwed = (offer.price * offer.quantity) + offer.marketplaceFeeRemaining; + if (currencyAddress == address(0)) { + ethEscrowOwed += escrowOwed; + } else { + erc20EscrowOwed += escrowOwed; + } + } + + assertEq(ethEscrowOwed, handler.ghostEthEscrowOwed()); + assertEq(erc20EscrowOwed, handler.ghostErc20EscrowOwed(address(currency))); + } + + function _fundAndApproveCurrency(address _account) private { + currency.mint(_account, 1_000_000 ether); + vm.prank(_account); + currency.approve(address(erc20ApprovalManager), type(uint256).max); + } + + function _initData( + address _payments, + address _tradeExecutionModule, + address _checkoutExecutionModule + ) private view returns (bytes memory) { + return + abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + royaltyEngine, + _payments, + approvedTokenRegistry, + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager), + _tradeExecutionModule, + _checkoutExecutionModule + ); + } +} diff --git a/src/test/marketplace/RareERC1155MarketplaceReentrancy.t.sol b/src/test/marketplace/RareERC1155MarketplaceReentrancy.t.sol new file mode 100644 index 0000000..2782a8e --- /dev/null +++ b/src/test/marketplace/RareERC1155MarketplaceReentrancy.t.sol @@ -0,0 +1,596 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; + +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {IERC1155Receiver} from "openzeppelin-contracts/token/ERC1155/IERC1155Receiver.sol"; +import {IERC165} from "openzeppelin-contracts/utils/introspection/IERC165.sol"; + +import {Payments} from "../../payments/Payments.sol"; +import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; +import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {IRareERC1155MarketplaceTypes} from "../../marketplace/IRareERC1155MarketplaceTypes.sol"; +import {RareERC1155CheckoutExecutionModule} from "../../marketplace/RareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155TradeExecutionModule} from "../../marketplace/RareERC1155TradeExecutionModule.sol"; +import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; + +contract ReentrancyMarketplaceSettings { + function calculateMarketplaceFee(uint256 _amount) external pure returns (uint256) { + return (_amount * 3) / 100; + } + + function getERC721ContractPrimarySaleFeePercentage(address) external pure returns (uint8) { + return 10; + } +} + +contract ReentrancyApprovedTokenRegistry { + mapping(address => bool) private approvedTokens; + + function setApprovedToken(address _token, bool _approved) external { + approvedTokens[_token] = _approved; + } + + function isApprovedToken(address _token) external view returns (bool) { + return approvedTokens[_token]; + } +} + +contract ReenteringERC1155Receiver is IERC1155Receiver { + RareERC1155Marketplace private immutable target; + bytes private reentryCall; + uint256 private reentryValue; + + bool public reentryReverted; + + constructor(RareERC1155Marketplace _target) { + target = _target; + } + + receive() external payable { + _attemptReentry(); + } + + function setReentry(bytes calldata _reentryCall, uint256 _reentryValue) external { + reentryCall = _reentryCall; + reentryValue = _reentryValue; + reentryReverted = false; + } + + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external returns (bytes4) { + _attemptReentry(); + return this.onERC1155Received.selector; + } + + function onERC1155BatchReceived( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) external returns (bytes4) { + _attemptReentry(); + return this.onERC1155BatchReceived.selector; + } + + function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155Receiver).interfaceId; + } + + function _attemptReentry() private { + if (reentryCall.length == 0) return; + + (bool success, ) = address(target).call{value: reentryValue}(reentryCall); + reentryReverted = !success; + } +} + +contract ReenteringRoyaltyEngine is IRoyaltyEngineV1, IERC1155Receiver { + RareERC1155Marketplace private target; + bytes private reentryCall; + bool private revertAfterReentry; + + function setTarget(RareERC1155Marketplace _target) external { + target = _target; + } + + function setReentry(bytes calldata _reentryCall, bool _revertAfterReentry) external { + reentryCall = _reentryCall; + revertAfterReentry = _revertAfterReentry; + } + + function getRoyalty( + address, + uint256, + uint256 + ) external returns (address payable[] memory recipients, uint256[] memory amounts) { + if (reentryCall.length != 0) { + (bool success, ) = address(target).call(reentryCall); + if (revertAfterReentry) { + if (!success) revert("royalty reentry blocked"); + revert("royalty reentry unexpectedly succeeded"); + } + } + + recipients = new address payable[](0); + amounts = new uint256[](0); + } + + function getRoyaltyView( + address, + uint256, + uint256 + ) external pure returns (address payable[] memory recipients, uint256[] memory amounts) { + recipients = new address payable[](0); + amounts = new uint256[](0); + } + + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) { + return this.onERC1155Received.selector; + } + + function onERC1155BatchReceived( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) external pure returns (bytes4) { + return this.onERC1155BatchReceived.selector; + } + + function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { + return + _interfaceId == type(IERC165).interfaceId || + _interfaceId == type(IRoyaltyEngineV1).interfaceId || + _interfaceId == type(IERC1155Receiver).interfaceId; + } +} + +contract ReenteringERC20 is IERC1155Receiver { + enum Hook { + NONE, + BALANCE_OF_REVERT, + ALLOWANCE_REVERT + } + + string public constant name = "Reentering ERC20"; + string public constant symbol = "RE20"; + uint8 public constant decimals = 18; + uint256 public totalSupply; + + RareERC1155Marketplace private target; + bytes private reentryCall; + Hook private hook; + + mapping(address => uint256) private balances; + mapping(address => mapping(address => uint256)) private allowances; + + function setReentry(RareERC1155Marketplace _target, bytes calldata _reentryCall, Hook _hook) external { + target = _target; + reentryCall = _reentryCall; + hook = _hook; + } + + function mint(address _account, uint256 _amount) external { + balances[_account] += _amount; + totalSupply += _amount; + } + + function approve(address _spender, uint256 _amount) external returns (bool) { + allowances[msg.sender][_spender] = _amount; + return true; + } + + function balanceOf(address _account) external returns (uint256) { + if (hook == Hook.BALANCE_OF_REVERT) { + _reenterAndRevert("balanceOf reentry blocked"); + } + + return balances[_account]; + } + + function allowance(address _owner, address _spender) external returns (uint256) { + if (hook == Hook.ALLOWANCE_REVERT) { + _reenterAndRevert("allowance reentry blocked"); + } + + return allowances[_owner][_spender]; + } + + function transfer(address _to, uint256 _amount) external returns (bool) { + balances[msg.sender] -= _amount; + balances[_to] += _amount; + return true; + } + + function transferFrom(address _from, address _to, uint256 _amount) external returns (bool) { + uint256 currentAllowance = allowances[_from][msg.sender]; + require(currentAllowance >= _amount, "ERC20: insufficient allowance"); + + allowances[_from][msg.sender] = currentAllowance - _amount; + balances[_from] -= _amount; + balances[_to] += _amount; + return true; + } + + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) { + return this.onERC1155Received.selector; + } + + function onERC1155BatchReceived( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) external pure returns (bytes4) { + return this.onERC1155BatchReceived.selector; + } + + function supportsInterface(bytes4 _interfaceId) external pure returns (bool) { + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155Receiver).interfaceId; + } + + function _reenterAndRevert(string memory _reason) private { + (bool success, ) = address(target).call(reentryCall); + if (success) revert("reentry unexpectedly succeeded"); + revert(_reason); + } +} + +contract RareERC1155MarketplaceReentrancyTest is Test { + RareERC1155Marketplace private marketplace; + Payments private payments; + RareERC1155 private token; + RareERC1155ContractFactory private tokenFactory; + ERC20ApprovalManager private erc20ApprovalManager; + ERC721ApprovalManager private erc721ApprovalManager; + ERC1155ApprovalManager private erc1155ApprovalManager; + ReentrancyApprovedTokenRegistry private approvedTokenRegistry; + ReenteringRoyaltyEngine private royaltyEngine; + + address private deployer = address(0x1000); + address private seller = address(0x2000); + address private buyer = address(0x3000); + address private networkBeneficiary = address(0x5000); + + ReentrancyMarketplaceSettings private marketplaceSettings; + uint256 private tokenId; + uint256 private tokenIdTwo; + uint256 private tokenIdThree; + + function setUp() public { + deal(deployer, 100 ether); + deal(seller, 100 ether); + deal(buyer, 100 ether); + + vm.startPrank(deployer); + marketplaceSettings = new ReentrancyMarketplaceSettings(); + approvedTokenRegistry = new ReentrancyApprovedTokenRegistry(); + royaltyEngine = new ReenteringRoyaltyEngine(); + + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + erc1155ApprovalManager = new ERC1155ApprovalManager(); + RareERC1155TradeExecutionModule tradeExecutionModule = new RareERC1155TradeExecutionModule(); + RareERC1155CheckoutExecutionModule checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + payments = new Payments(); + + marketplace = RareERC1155Marketplace( + address( + new ERC1967Proxy( + address(new RareERC1155Marketplace()), + _initData(address(tradeExecutionModule), address(checkoutExecutionModule)) + ) + ) + ); + royaltyEngine.setTarget(marketplace); + erc20ApprovalManager.grantOperatorRole(address(marketplace)); + erc1155ApprovalManager.grantOperatorRole(address(marketplace)); + + tokenFactory = new RareERC1155ContractFactory(); + tokenFactory.setDefaultMinter(address(marketplace)); + vm.stopPrank(); + + vm.prank(seller); + token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); + + vm.startPrank(seller); + tokenId = token.createToken("ipfs://token/1.json", 100, seller); + tokenIdTwo = token.createToken("ipfs://token/2.json", 100, seller); + tokenIdThree = token.createToken("ipfs://token/3.json", 100, seller); + token.mintTo(seller, tokenId, 10); + token.mintTo(seller, tokenIdTwo, 10); + token.mintTo(seller, tokenIdThree, 10); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + vm.stopPrank(); + } + + function test_reentry_mintHookCannotReenterCheckout() public { + uint256 supplyBefore = token.totalSupply(tokenId); + ReenteringERC1155Receiver receiver = new ReenteringERC1155Receiver(marketplace); + + _prepareDirectSale(tokenId, 0, 2, payable(seller)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory reentryItems = _singleCheckoutItem( + _directSaleCheckoutItem(tokenId, 0, 1) + ); + receiver.setReentry(abi.encodeWithSelector(marketplace.checkout.selector, reentryItems), 0); + + vm.prank(address(receiver)); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(reentryItems); + + assertEq(execution.summary.filledCount, 1); + assertTrue(receiver.reentryReverted()); + assertEq(token.balanceOf(address(receiver), tokenId), 1); + assertEq(token.totalSupply(tokenId), supplyBefore + 1); + assertEq(address(marketplace).balance, 0); + } + + function test_reentry_ethPayoutRecipientCannotReenter() public { + uint256 price = 1 ether; + ReenteringERC1155Receiver payoutRecipient = new ReenteringERC1155Receiver(marketplace); + + _prepareDirectSale(tokenIdTwo, 0, 2, payable(seller)); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory reentryItems = _singleCheckoutItem( + _directSaleCheckoutItem(tokenIdTwo, 0, 1) + ); + payoutRecipient.setReentry(abi.encodeWithSelector(marketplace.checkout.selector, reentryItems), 0); + + _setListing(tokenId, address(0), price, 1, payable(address(payoutRecipient))); + + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, 1) + ); + + assertTrue(payoutRecipient.reentryReverted()); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(address(payoutRecipient), tokenIdTwo), 0); + assertEq(token.totalSupply(tokenIdTwo), 10); + assertEq(address(marketplace).balance, 0); + } + + function test_reentry_maliciousERC20BalanceOfCannotMutateState() public { + uint256 price = 1 ether; + ReenteringERC20 maliciousCurrency = new ReenteringERC20(); + approvedTokenRegistry.setApprovedToken(address(maliciousCurrency), true); + maliciousCurrency.mint(buyer, 100 ether); + + vm.prank(buyer); + maliciousCurrency.approve(address(erc20ApprovalManager), type(uint256).max); + + _prepareDirectSale(tokenIdTwo, 0, 2, payable(seller)); + IRareERC1155MarketplaceTypes.CheckoutItem[] memory reentryItems = _singleCheckoutItem( + _directSaleCheckoutItem(tokenIdTwo, 0, 1) + ); + maliciousCurrency.setReentry( + marketplace, + abi.encodeWithSelector(marketplace.checkout.selector, reentryItems), + ReenteringERC20.Hook.BALANCE_OF_REVERT + ); + + _setListing(tokenId, address(maliciousCurrency), price, 1, payable(seller)); + + vm.expectRevert("balanceOf reentry blocked"); + vm.prank(buyer); + marketplace.buyBatch(address(token), seller, address(maliciousCurrency), _singleBuyRequest(tokenId, price, 1)); + + IRareERC1155MarketplaceTypes.SalePrice memory salePrice = marketplace.getSalePrice(address(token), tokenId, seller); + assertEq(salePrice.quantity, 1); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(address(maliciousCurrency), tokenIdTwo), 0); + + maliciousCurrency.setReentry( + marketplace, + abi.encodeWithSelector(marketplace.checkout.selector, reentryItems), + ReenteringERC20.Hook.ALLOWANCE_REVERT + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = _singleCheckoutItem( + _listingCheckoutItem(tokenId, seller, address(maliciousCurrency), price, 1) + ); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq( + uint8(execution.items[0].failureStage), + uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYMENT_COLLECTION) + ); + assertEq(execution.items[0].reason, IRareERC1155MarketplaceTypes.InsufficientCheckoutERC20Allowance.selector); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(address(maliciousCurrency), tokenIdTwo), 0); + assertEq(maliciousCurrency.balanceOf(address(marketplace)), 0); + } + + function test_reentry_royaltyEngineCannotReenter() public { + uint256 price = 1 ether; + bytes memory royaltyRevertData = abi.encodeWithSignature("Error(string)", "royalty reentry blocked"); + + _setListing(tokenId, address(0), price, 1, payable(seller)); + _prepareDirectSale(tokenIdTwo, 0, 1, payable(seller)); + _prepareDirectSale(tokenIdThree, 0, 1, payable(seller)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory royaltyReentryItems = _singleCheckoutItem( + _directSaleCheckoutItem(tokenIdThree, 0, 1) + ); + royaltyEngine.setReentry(abi.encodeWithSelector(marketplace.checkout.selector, royaltyReentryItems), true); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(tokenId, seller, address(0), price, 1); + items[1] = _directSaleCheckoutItem(tokenIdTwo, 0, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethRefunded, _withFee(price)); + assertEq(uint8(execution.items[0].failureStage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT)); + assertEq(execution.items[0].reason, bytes4(0x08c379a0)); + assertEq(execution.items[0].failureData, royaltyRevertData); + + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(seller, tokenId), 10); + assertEq(token.balanceOf(buyer, tokenIdTwo), 1); + assertEq(token.balanceOf(address(royaltyEngine), tokenIdThree), 0); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + assertEq(address(marketplace).balance, 0); + } + + function _prepareDirectSale( + uint256 _tokenId, + uint256 _price, + uint256 _maxMints, + address payable _splitRecipient + ) private { + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(_tokenId, _price, 0, _maxMints), + _singleSplitRecipients(_splitRecipient), + _singleSplitRatios() + ); + } + + function _setListing( + uint256 _tokenId, + address _currencyAddress, + uint256 _price, + uint256 _quantity, + address payable _splitRecipient + ) private { + vm.prank(seller); + marketplace.setSalePrices( + address(token), + _currencyAddress, + _singleSalePriceRequest(_tokenId, _price, _quantity), + _singleSplitRecipients(_splitRecipient), + _singleSplitRatios() + ); + } + + function _directSaleCheckoutItem( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private view returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), + contractAddress: address(token), + seller: seller, + currencyAddress: address(0), + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _listingCheckoutItem( + uint256 _tokenId, + address _seller, + address _currencyAddress, + uint256 _price, + uint256 _quantity + ) private view returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), + contractAddress: address(token), + seller: _seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _singleCheckoutItem( + IRareERC1155MarketplaceTypes.CheckoutItem memory _item + ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem[] memory items) { + items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _item; + } + + function _singleDirectSaleRequest( + uint256 _tokenId, + uint256 _price, + uint256 _startTime, + uint256 _maxMints + ) private pure returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.DirectSaleRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenId, _price, _startTime, _maxMints); + } + + function _singleSalePriceRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, 0); + } + + function _singleBuyRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory requests) { + requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenId, _price, _quantity); + } + + function _singleSplitRecipients( + address payable _recipient + ) private pure returns (address payable[] memory recipients) { + recipients = new address payable[](1); + recipients[0] = _recipient; + } + + function _singleSplitRatios() private pure returns (uint8[] memory ratios) { + ratios = new uint8[](1); + ratios[0] = 100; + } + + function _withFee(uint256 _amount) private pure returns (uint256) { + return _amount + ((_amount * 3) / 100); + } + + function _initData( + address _tradeExecutionModule, + address _checkoutExecutionModule + ) private view returns (bytes memory) { + return + abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + address(marketplaceSettings), + address(royaltyEngine), + address(payments), + address(approvedTokenRegistry), + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager), + _tradeExecutionModule, + _checkoutExecutionModule + ); + } +} diff --git a/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol new file mode 100644 index 0000000..d8ba832 --- /dev/null +++ b/src/test/marketplace/RareERC1155MarketplaceSettlement.t.sol @@ -0,0 +1,2719 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; + +import {ERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; +import {IERC1155} from "openzeppelin-contracts/token/ERC1155/IERC1155.sol"; +import {IERC165} from "openzeppelin-contracts/utils/introspection/IERC165.sol"; +import {ERC1967Proxy} from "openzeppelin-contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +import {IApprovedTokenRegistry} from "../../registry/interfaces/IApprovedTokenRegistry.sol"; +import {IMarketplaceSettings} from "../../marketplace/IMarketplaceSettings.sol"; +import {Payments} from "../../payments/Payments.sol"; +import {RareERC1155} from "../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../token/ERC1155/RareERC1155ContractFactory.sol"; +import {ERC20ApprovalManager} from "../../v2/approver/ERC20/ERC20ApprovalManager.sol"; +import {ERC721ApprovalManager} from "../../v2/approver/ERC721/ERC721ApprovalManager.sol"; +import {ERC1155ApprovalManager} from "../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {IRareERC1155CheckoutExecutionModule} from "../../marketplace/IRareERC1155CheckoutExecutionModule.sol"; +import {IRareERC1155MarketplaceTypes} from "../../marketplace/IRareERC1155MarketplaceTypes.sol"; +import {RareERC1155CheckoutExecutionModule} from "../../marketplace/RareERC1155CheckoutExecutionModule.sol"; +import {RareERC1155Marketplace} from "../../marketplace/RareERC1155Marketplace.sol"; +import {RareERC1155TradeExecutionModule} from "../../marketplace/RareERC1155TradeExecutionModule.sol"; +import {IRoyaltyEngineV1} from "royalty-registry/IRoyaltyEngineV1.sol"; + +contract CheckoutCurrency is ERC20 { + constructor() ERC20("Checkout Currency", "CCUR") { + _mint(msg.sender, 1_000_000_000 ether); + } +} + +contract CheckoutRejectZeroTransferCurrency is CheckoutCurrency { + function transfer(address _to, uint256 _amount) public override returns (bool) { + if (_amount == 0) revert("zero transfer"); + return super.transfer(_to, _amount); + } +} + +contract CheckoutNoOpERC1155 is IERC1155 { + mapping(address => mapping(uint256 => uint256)) private balances; + mapping(address => mapping(address => bool)) private operatorApprovals; + + function supportsInterface(bytes4 _interfaceId) external pure override returns (bool) { + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155).interfaceId; + } + + function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { + balances[_account][_tokenId] = _amount; + } + + function balanceOf(address _account, uint256 _tokenId) external view override returns (uint256) { + return balances[_account][_tokenId]; + } + + function balanceOfBatch( + address[] calldata _accounts, + uint256[] calldata _ids + ) external view override returns (uint256[] memory) { + uint256[] memory batchBalances = new uint256[](_accounts.length); + for (uint256 i = 0; i < _accounts.length; i++) { + batchBalances[i] = balances[_accounts[i]][_ids[i]]; + } + return batchBalances; + } + + function setApprovalForAll(address _operator, bool _approved) external override { + operatorApprovals[msg.sender][_operator] = _approved; + } + + function isApprovedForAll(address _account, address _operator) external view override returns (bool) { + return operatorApprovals[_account][_operator]; + } + + function safeTransferFrom(address, address, uint256, uint256, bytes calldata) external override {} + + function safeBatchTransferFrom( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) external override {} +} + +contract CheckoutToggleERC1155 is IERC1155 { + mapping(address => mapping(uint256 => uint256)) private balances; + mapping(address => mapping(address => bool)) private operatorApprovals; + + address private contractOwner; + bool private revertOwner; + bool private revertSupportsInterface; + bool private revertApproval; + bool private revertBalance; + + constructor(address _owner) { + contractOwner = _owner; + } + + function setRevertOwner(bool _revertOwner) external { + revertOwner = _revertOwner; + } + + function setRevertSupportsInterface(bool _revertSupportsInterface) external { + revertSupportsInterface = _revertSupportsInterface; + } + + function setRevertApproval(bool _revertApproval) external { + revertApproval = _revertApproval; + } + + function setRevertBalance(bool _revertBalance) external { + revertBalance = _revertBalance; + } + + function owner() external view returns (address) { + if (revertOwner) revert("owner unavailable"); + return contractOwner; + } + + function maxSupplyForToken(uint256) external pure returns (uint256) { + return 100; + } + + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public virtual { + for (uint256 i = 0; i < _tokenIds.length; i++) { + balances[_receiver][_tokenIds[i]] += _amounts[i]; + } + } + + function setBalance(address _account, uint256 _tokenId, uint256 _amount) external { + balances[_account][_tokenId] = _amount; + } + + function supportsInterface(bytes4 _interfaceId) external view override returns (bool) { + if (revertSupportsInterface) revert("supports unavailable"); + return _interfaceId == type(IERC165).interfaceId || _interfaceId == type(IERC1155).interfaceId; + } + + function balanceOf(address _account, uint256 _tokenId) external view override returns (uint256) { + if (revertBalance) revert("balance unavailable"); + return balances[_account][_tokenId]; + } + + function balanceOfBatch( + address[] calldata _accounts, + uint256[] calldata _ids + ) external view override returns (uint256[] memory batchBalances) { + batchBalances = new uint256[](_accounts.length); + for (uint256 i = 0; i < _accounts.length; i++) { + batchBalances[i] = balances[_accounts[i]][_ids[i]]; + } + } + + function setApprovalForAll(address _operator, bool _approved) external override { + operatorApprovals[msg.sender][_operator] = _approved; + } + + function isApprovedForAll(address _account, address _operator) external view override returns (bool) { + if (revertApproval) revert("approval unavailable"); + return operatorApprovals[_account][_operator]; + } + + function safeTransferFrom( + address _from, + address _to, + uint256 _id, + uint256 _amount, + bytes calldata + ) external override { + balances[_from][_id] -= _amount; + balances[_to][_id] += _amount; + } + + function safeBatchTransferFrom( + address _from, + address _to, + uint256[] calldata _ids, + uint256[] calldata _amounts, + bytes calldata + ) external override { + for (uint256 i = 0; i < _ids.length; i++) { + balances[_from][_ids[i]] -= _amounts[i]; + balances[_to][_ids[i]] += _amounts[i]; + } + } +} + +contract CheckoutReentrantERC1155 is CheckoutToggleERC1155 { + RareERC1155Marketplace private marketplace; + bool public reentryBlocked; + + constructor(address _owner, RareERC1155Marketplace _marketplace) CheckoutToggleERC1155(_owner) { + marketplace = _marketplace; + } + + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public override { + IRareERC1155MarketplaceTypes.CheckoutItem[] + memory unsupportedItems = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + unsupportedItems[0] = IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: type(uint8).max, + contractAddress: address(0), + seller: address(0), + currencyAddress: address(0), + tokenId: 0, + price: 0, + quantity: 0, + proof: new bytes32[](0) + }); + (bool success, ) = address(marketplace).call( + abi.encodeWithSelector(marketplace.checkout.selector, unsupportedItems) + ); + reentryBlocked = !success; + super.mintBatchTo(_receiver, _tokenIds, _amounts); + } +} + +contract CheckoutNoOpMintERC1155 is CheckoutToggleERC1155 { + constructor(address _owner) CheckoutToggleERC1155(_owner) {} + + function mintBatchTo(address, uint256[] calldata, uint256[] calldata) public pure override {} +} + +contract CheckoutPaymentObservingERC1155 is CheckoutToggleERC1155 { + ERC20 private currency; + address private marketplace; + + uint256 public marketplaceCurrencyBalanceAtMint; + + constructor(address _owner, ERC20 _currency, address _marketplace) CheckoutToggleERC1155(_owner) { + currency = _currency; + marketplace = _marketplace; + } + + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) public override { + marketplaceCurrencyBalanceAtMint = currency.balanceOf(marketplace); + super.mintBatchTo(_receiver, _tokenIds, _amounts); + } +} + +contract RejectETH { + receive() external payable { + revert("reject eth"); + } +} + +contract CheckoutFailureDecoderHarness is RareERC1155CheckoutExecutionModule { + function checkoutExecutionFailure( + bytes memory _revertData + ) external pure returns (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) { + return _checkoutExecutionFailure(_revertData); + } +} + +contract RareERC1155MarketplaceSettlementTest is Test { + event MintDirectSaleCancelled(address indexed contractAddress, uint256 indexed tokenId); + + RareERC1155Marketplace private marketplace; + RareERC1155TradeExecutionModule private tradeExecutionModule; + RareERC1155CheckoutExecutionModule private checkoutExecutionModule; + Payments private payments; + RareERC1155 private token; + CheckoutCurrency private currency; + RareERC1155ContractFactory private tokenFactory; + ERC20ApprovalManager private erc20ApprovalManager; + ERC721ApprovalManager private erc721ApprovalManager; + ERC1155ApprovalManager private erc1155ApprovalManager; + + address private deployer = address(0x1000); + address private seller = address(0x2000); + address private sellerTwo = address(0x2500); + address private buyer = address(0x3000); + address private royaltyReceiver = address(0x4000); + address private networkBeneficiary = address(0x5000); + address private rewardAccumulator = address(0x6000); + + address private marketplaceSettings = address(0x7100); + address private royaltyEngine = address(0x7400); + address private approvedTokenRegistry = address(0x7600); + + uint256 private tokenId; + + function setUp() public { + deal(deployer, 100 ether); + deal(seller, 100 ether); + deal(sellerTwo, 100 ether); + deal(buyer, 100 ether); + + vm.startPrank(deployer); + currency = new CheckoutCurrency(); + currency.transfer(buyer, 1_000_000 ether); + erc20ApprovalManager = new ERC20ApprovalManager(); + erc721ApprovalManager = new ERC721ApprovalManager(); + erc1155ApprovalManager = new ERC1155ApprovalManager(); + tradeExecutionModule = new RareERC1155TradeExecutionModule(); + checkoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + payments = new Payments(); + marketplace = RareERC1155Marketplace( + address( + new ERC1967Proxy( + address(new RareERC1155Marketplace()), + _initData(address(payments), address(tradeExecutionModule), address(checkoutExecutionModule)) + ) + ) + ); + erc20ApprovalManager.grantOperatorRole(address(marketplace)); + erc1155ApprovalManager.grantOperatorRole(address(marketplace)); + + tokenFactory = new RareERC1155ContractFactory(); + tokenFactory.setDefaultMinter(address(marketplace)); + vm.stopPrank(); + + vm.prank(seller); + token = RareERC1155(tokenFactory.createRareERC1155Contract("Rare Editions", "RED", "ipfs://base/{id}.json")); + + vm.prank(seller); + tokenId = token.createToken("ipfs://token/1.json", 20, seller); + + vm.etch(marketplaceSettings, address(marketplace).code); + vm.etch(royaltyEngine, address(marketplace).code); + vm.etch(approvedTokenRegistry, address(marketplace).code); + } + + function testBuyListingThroughTradeExecutionModule() public { + uint256 price = 1 ether; + uint256 quantity = 2; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(quantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, quantity), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayout(price * quantity, seller); + + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price * quantity)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, quantity) + ); + + assertEq(token.balanceOf(buyer, tokenId), quantity); + assertEq(token.balanceOf(seller, tokenId), 0); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); + } + + function testBuyListingAcceptsMaxRoyaltyRecipients() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), + tokenId, + price, + seller, + _royaltyReceivers(5), + _royaltyAmounts(price, 5) + ); + + uint256 sellerBalanceBefore = seller.balance; + uint256 firstRoyaltyBalanceBefore = address(0x4101).balance; + + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, 1) + ); + + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(seller.balance, sellerBalanceBefore + ((price * 85) / 100)); + assertEq(address(0x4101).balance, firstRoyaltyBalanceBefore + ((price * 1) / 100)); + } + + function testCheckoutListingTruncatesRoyaltyRecipientsAndFills() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), + tokenId, + price, + seller, + _royaltyReceivers(6), + _royaltyAmounts(price, 6) + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + uint256 sellerBalanceBefore = seller.balance; + uint256 firstRoyaltyBalanceBefore = address(0x4101).balance; + uint256 fifthRoyaltyBalanceBefore = address(0x4105).balance; + uint256 sixthRoyaltyBalanceBefore = address(0x4106).balance; + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 0); + assertTrue(execution.items[0].filled); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(seller.balance, sellerBalanceBefore + ((price * 85) / 100)); + assertEq(address(0x4101).balance, firstRoyaltyBalanceBefore + ((price * 1) / 100)); + assertEq(address(0x4105).balance, fifthRoyaltyBalanceBefore + ((price * 5) / 100)); + assertEq(address(0x4106).balance, sixthRoyaltyBalanceBefore); + } + + function testBuyListingRejectsZeroAddressEthRoyaltyRecipient() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), + tokenId, + price, + seller, + _zeroAddressRoyaltyReceivers(), + _singleRoyaltyAmounts(price) + ); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.RoyaltyRecipientCannotBeZero.selector, 0)); + marketplace.buyBatch{value: _withFee(price)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, 1) + ); + + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(address(payments).balance, 0); + } + + function testBuyListingRejectsZeroAddressERC20RoyaltyRecipient() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(currency), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayoutWithRoyalties( + address(token), + tokenId, + price, + seller, + _zeroAddressRoyaltyReceivers(), + _singleRoyaltyAmounts(price) + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(price)); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.RoyaltyRecipientCannotBeZero.selector, 0)); + marketplace.buyBatch(address(token), seller, address(currency), _singleBuyRequest(tokenId, price, 1)); + + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(currency.balanceOf(address(marketplace)), 0); + } + + function testBuyListingSkipsZeroValueERC20MarketplaceFeeRecipient() public { + CheckoutRejectZeroTransferCurrency rejectingCurrency = new CheckoutRejectZeroTransferCurrency(); + uint256 price = 100; + + rejectingCurrency.transfer(buyer, _withFee(price)); + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(rejectingCurrency)); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(rejectingCurrency), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, price), + abi.encode(_fee(price)) + ); + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + vm.prank(buyer); + rejectingCurrency.approve(address(erc20ApprovalManager), _withFee(price)); + + vm.prank(buyer); + marketplace.buyBatch(address(token), seller, address(rejectingCurrency), _singleBuyRequest(tokenId, price, 1)); + + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(rejectingCurrency.balanceOf(rewardAccumulator), 0); + } + + function testAcceptOfferThroughTradeExecutionModule() public { + uint256 price = 1 ether; + uint256 offerQuantity = 2; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(offerQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockMarketplaceFee(price * offerQuantity, seller); + vm.prank(buyer); + marketplace.makeOffer{value: _withFee(price * offerQuantity)}( + address(token), + tokenId, + address(0), + price, + offerQuantity, + 0 + ); + + _mockSecondaryPayout(price, seller); + vm.prank(seller); + marketplace.acceptOffer( + address(token), + tokenId, + buyer, + address(0), + price, + 1, + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer(address(token), tokenId, buyer, address(0)); + assertEq(offer.quantity, 1); + assertEq(offer.initialQuantity, offerQuantity); + assertEq(offer.marketplaceFeeRemaining, _fee(price)); + assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 1); + } + + function testAcceptOfferIgnoresStakingFeeAfterSettingsRotation() public { + uint256 price = 1 ether; + uint256 offerQuantity = 2; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(offerQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockMarketplaceFee(price * offerQuantity, seller); + vm.prank(buyer); + marketplace.makeOffer{value: _withFee(price * offerQuantity)}( + address(token), + tokenId, + address(0), + price, + offerQuantity, + 0 + ); + + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + abi.encode(new address payable[](0), new uint256[](0)) + ); + + vm.prank(seller); + marketplace.acceptOffer( + address(token), + tokenId, + buyer, + address(0), + price, + 1, + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer(address(token), tokenId, buyer, address(0)); + assertEq(offer.quantity, 1); + assertEq(offer.marketplaceFeeRemaining, _fee(price)); + assertEq(networkBeneficiary.balance, _fee(price)); + assertEq(rewardAccumulator.balance, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 1); + } + + function testPartialOfferFillsAllocateMarketplaceFeeCumulatively() public { + uint256 price = 1; + uint256 offerQuantity = 100; + uint256 fillQuantity = 34; + + vm.prank(seller); + uint256 highQuantityTokenId = token.createToken("ipfs://token/high-quantity.json", offerQuantity, seller); + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(highQuantityTokenId), _singleAmounts(fillQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockMarketplaceFee(price * offerQuantity, seller); + vm.prank(buyer); + marketplace.makeOffer{value: _withFee(price * offerQuantity)}( + address(token), + highQuantityTokenId, + address(0), + price, + offerQuantity, + 0 + ); + + _mockSecondaryPayoutFor(address(token), highQuantityTokenId, price, seller); + for (uint256 i = 0; i < fillQuantity; i++) { + vm.prank(seller); + marketplace.acceptOffer( + address(token), + highQuantityTokenId, + buyer, + address(0), + price, + 1, + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + } + + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer( + address(token), + highQuantityTokenId, + buyer, + address(0) + ); + assertEq(offer.quantity, offerQuantity - fillQuantity); + assertEq(offer.initialQuantity, offerQuantity); + assertEq(offer.marketplaceFeeRemaining, _fee(price * offerQuantity) - 1); + assertEq(offer.marketplaceFeeTotal, _fee(price * offerQuantity)); + assertEq(networkBeneficiary.balance, 1); + assertEq(rewardAccumulator.balance, 0); + + vm.prank(buyer); + marketplace.cancelOffer(address(token), highQuantityTokenId, address(0)); + + assertEq(buyer.balance, 100 ether - fillQuantity - 1); + assertEq(seller.balance, 100 ether + fillQuantity); + assertEq(marketplace.getOffer(address(token), highQuantityTokenId, buyer, address(0)).quantity, 0); + } + + function testOfferEscrowTracksRemainingQuantityAndFeesAcrossPartialFills() public { + uint256 price = 1 ether; + uint256 offerQuantity = 3; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(offerQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockMarketplaceFee(price * offerQuantity, seller); + vm.prank(buyer); + marketplace.makeOffer{value: _withFee(price * offerQuantity)}( + address(token), + tokenId, + address(0), + price, + offerQuantity, + 0 + ); + + assertEq(address(marketplace).balance, _withFee(price * offerQuantity)); + + _mockSecondaryPayout(price, seller); + vm.prank(seller); + marketplace.acceptOffer( + address(token), + tokenId, + buyer, + address(0), + price, + 1, + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + IRareERC1155MarketplaceTypes.Offer memory offer = marketplace.getOffer(address(token), tokenId, buyer, address(0)); + assertEq(offer.quantity, 2); + assertEq(offer.initialQuantity, offerQuantity); + assertEq(offer.marketplaceFeeRemaining, _fee(price * 2)); + assertEq(address(marketplace).balance, _withFee(price * 2)); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 2); + + _mockSecondaryPayout(price * 2, seller); + vm.prank(seller); + marketplace.acceptOffer( + address(token), + tokenId, + buyer, + address(0), + price, + 2, + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + offer = marketplace.getOffer(address(token), tokenId, buyer, address(0)); + assertEq(offer.quantity, 0); + assertEq(offer.initialQuantity, 0); + assertEq(offer.marketplaceFeeRemaining, 0); + assertEq(address(marketplace).balance, 0); + assertEq(token.balanceOf(buyer, tokenId), offerQuantity); + assertEq(token.balanceOf(seller, tokenId), 0); + } + + function testListingQuantityConservationAcrossPartialFillsAndCancel() public { + uint256 price = 1 ether; + uint256 mintedQuantity = 5; + uint256 listedQuantity = 4; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(mintedQuantity)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, listedQuantity), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockSecondaryPayout(price, seller); + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, 1) + ); + + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, listedQuantity - 1); + assertEq(token.balanceOf(seller, tokenId), mintedQuantity - 1); + assertEq(token.balanceOf(buyer, tokenId), 1); + + _mockSecondaryPayout(price * 2, seller); + vm.prank(buyer); + marketplace.buyBatch{value: _withFee(price * 2)}( + address(token), + seller, + address(0), + _singleBuyRequest(tokenId, price, 2) + ); + + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, listedQuantity - 3); + assertEq(token.balanceOf(seller, tokenId), mintedQuantity - 3); + assertEq(token.balanceOf(buyer, tokenId), 3); + + vm.prank(seller); + marketplace.cancelSalePrices(address(token), _singleTokenIds(tokenId)); + + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); + assertEq(token.balanceOf(seller, tokenId), mintedQuantity - 3); + assertEq(token.balanceOf(buyer, tokenId), 3); + } + + function testMintDirectSaleThroughTradeExecutionModule() public { + uint256 price = 1 ether; + uint256 quantity = 2; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + _mockPrimaryPayout(price * quantity, seller); + + vm.prank(buyer); + marketplace.mintDirectSaleBatch{value: _withFee(price * quantity)}( + address(token), + address(0), + _singleMintRequest(tokenId, price, quantity) + ); + + assertEq(token.balanceOf(buyer, tokenId), quantity); + assertEq(marketplace.getTokenMintsPerAddress(address(token), tokenId, buyer), 0); + } + + function testPrepareMintDirectSaleRejectsNonERC1155Contract() public { + uint256 price = 1 ether; + RejectETH invalidToken = new RejectETH(); + + vm.prank(seller); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.InvalidERC1155Contract.selector, address(invalidToken)) + ); + marketplace.prepareMintDirectSales( + address(invalidToken), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + } + + function testCancelMintDirectSalesClearsDirectSaleConfig() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.expectEmit(true, true, false, false); + emit MintDirectSaleCancelled(address(token), tokenId); + + vm.prank(seller); + marketplace.cancelMintDirectSales(address(token), _singleTokenIds(tokenId)); + + IRareERC1155MarketplaceTypes.DirectSaleConfig memory config = marketplace.getDirectSaleConfig( + address(token), + tokenId + ); + assertEq(config.seller, address(0)); + assertEq(config.currencyAddress, address(0)); + assertEq(config.price, 0); + assertEq(config.startTime, 0); + assertEq(config.maxMints, 0); + assertEq(config.splitRecipients.length, 0); + assertEq(config.splitRatios.length, 0); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.DirectSaleNotConfigured.selector, address(token), tokenId) + ); + marketplace.mintDirectSaleBatch(address(token), address(0), _singleMintRequest(tokenId, price, 1)); + } + + function testCancelMintDirectSalesRejectsNonContractOwner() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.NotContractOwner.selector, address(token), buyer) + ); + marketplace.cancelMintDirectSales(address(token), _singleTokenIds(tokenId)); + } + + function testCancelMintDirectSalesRevertsWhenOwnerReadReverts() public { + uint256 price = 1 ether; + uint256 revertingOwnerTokenId = 89; + CheckoutToggleERC1155 revertingOwnerToken = new CheckoutToggleERC1155(seller); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(revertingOwnerToken), + address(0), + _singleDirectSaleRequest(revertingOwnerTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + revertingOwnerToken.setRevertOwner(true); + + vm.prank(seller); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.ContractHasNoOwner.selector, address(revertingOwnerToken)) + ); + marketplace.cancelMintDirectSales(address(revertingOwnerToken), _singleTokenIds(revertingOwnerTokenId)); + } + + function testMintDirectSaleRevertsWhenMintDoesNotIncreaseBuyerBalance() public { + uint256 price = 1 ether; + uint256 noOpTokenId = 91; + uint256 quantity = 2; + CheckoutNoOpMintERC1155 noOpToken = new CheckoutNoOpMintERC1155(seller); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(noOpToken), + address(0), + _singleDirectSaleRequest(noOpTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockMarketplaceFee(price * quantity, seller); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, + address(noOpToken), + noOpTokenId, + buyer, + quantity + ) + ); + marketplace.mintDirectSaleBatch{value: _withFee(price * quantity)}( + address(noOpToken), + address(0), + _singleMintRequest(noOpTokenId, price, quantity) + ); + + assertEq(noOpToken.balanceOf(buyer, noOpTokenId), 0); + } + + function testMintDirectSaleBatchRevertsWithSharedValidationReason() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(buyer); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.PriceMismatch.selector, price + 1, price)); + marketplace.mintDirectSaleBatch(address(token), address(0), _singleMintRequest(tokenId, price + 1, 1)); + } + + function testBuyBatchRevertsWithSharedValidationReason() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(buyer); + vm.expectRevert( + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.QuantityExceedsSalePriceQuantity.selector, 2, 1) + ); + marketplace.buyBatch(address(token), seller, address(0), _singleBuyRequest(tokenId, price, 2)); + } + + function testMarketplaceUsesSeparateBatchAndCheckoutCaps() public { + assertEq(marketplace.MAX_BATCH_SIZE(), 75); + assertEq(marketplace.MAX_CHECKOUT_SIZE(), 50); + + IRareERC1155MarketplaceTypes.MintRequest[] memory mintRequests = new IRareERC1155MarketplaceTypes.MintRequest[](76); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.BatchSizeExceeded.selector, 76, 75)); + marketplace.mintDirectSaleBatch(address(token), address(0), mintRequests); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory checkoutItems = new IRareERC1155MarketplaceTypes.CheckoutItem[]( + 51 + ); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155MarketplaceTypes.BatchSizeExceeded.selector, 51, 50)); + marketplace.checkout(checkoutItems); + } + + function testCheckoutFillsMixedDirectSaleAndListingAcrossCurrencies() public { + uint256 mintPrice = 1 ether; + uint256 listingPrice = 2 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), mintPrice, seller); + + vm.prank(sellerTwo); + RareERC1155 otherToken = RareERC1155( + tokenFactory.createRareERC1155Contract("Other Editions", "OED", "ipfs://other/{id}.json") + ); + vm.prank(sellerTwo); + uint256 otherTokenId = otherToken.createToken("ipfs://other/1.json", 10, sellerTwo); + vm.prank(sellerTwo); + otherToken.mintBatchTo(sellerTwo, _singleTokenIds(otherTokenId), _singleAmounts(1)); + vm.prank(sellerTwo); + otherToken.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + vm.prank(sellerTwo); + marketplace.setSalePrices( + address(otherToken), + address(currency), + _singleSalePriceRequest(otherTokenId, listingPrice, 1), + _singleSplitRecipients(sellerTwo), + _singleSplitRatios() + ); + _mockSecondaryPayoutFor(address(otherToken), otherTokenId, listingPrice, sellerTwo); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(listingPrice)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); + items[1] = _listingCheckoutItem(address(otherToken), sellerTwo, address(currency), otherTokenId, listingPrice, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(mintPrice)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 2); + assertEq(summary.skippedCount, 0); + assertEq(summary.ethSpent, _withFee(mintPrice)); + assertEq(summary.ethRefunded, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(otherToken.balanceOf(buyer, otherTokenId), 1); + assertEq(otherToken.balanceOf(sellerTwo, otherTokenId), 0); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore - _withFee(listingPrice)); + assertEq(currency.balanceOf(address(marketplace)), 0); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutDirectSaleMintResolvesSellerFromConfig() public { + uint256 price = 1 ether; + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayout(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(token), sellerTwo, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 0); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(token.balanceOf(buyer, tokenId), 1); + } + + function testCheckoutAggregatesDirectSaleMaxMintsAcrossDuplicateItems() public { + uint256 price = 1 ether; + uint256 maxMints = 1; + + vm.prank(seller); + uint256 limitedTokenId = token.createToken("ipfs://token/max-mints.json", 2, seller); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(limitedTokenId, price, 0, maxMints), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), limitedTokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), limitedTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price) * 2}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(summary.ethRefunded, _withFee(price)); + assertEq(token.balanceOf(buyer, limitedTokenId), 1); + assertTrue(execution.items[0].filled); + _assertSkipped( + execution.items[1], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.MaxMintExceeded.selector + ); + assertEq( + execution.items[1].failureData, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.MaxMintExceeded.selector, 2, maxMints) + ); + } + + function testCheckoutCountsDuplicateDirectSaleItemsAsOneTransactionLimitUse() public { + uint256 price = 1 ether; + + vm.startPrank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(tokenId, 2)); + marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(tokenId, 1)); + vm.stopPrank(); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price) * 2}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 2); + assertEq(summary.skippedCount, 0); + assertEq(summary.ethSpent, _withFee(price) * 2); + assertEq(summary.ethRefunded, 0); + assertEq(token.balanceOf(buyer, tokenId), 2); + assertTrue(execution.items[0].filled); + assertTrue(execution.items[1].filled); + assertEq(marketplace.getTokenMintsPerAddress(address(token), tokenId, buyer), 2); + assertEq(marketplace.getTokenTxsPerAddress(address(token), tokenId, buyer), 1); + } + + function testCheckoutCannotDoubleFillSingleUnitListingInSameCart() public { + uint256 price = 1 ether; + + vm.startPrank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockSecondaryPayout(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + items[1] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price) * 2}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(summary.ethRefunded, _withFee(price)); + assertTrue(execution.items[0].filled); + _assertSkipped( + execution.items[1], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.SalePriceDoesNotExist.selector + ); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 0); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutSkipsInvalidItemsAndRefundsUnusedETH() public { + uint256 mintPrice = 1 ether; + uint256 listingPrice = 2 ether; + uint256 refundAmount = 0.5 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, listingPrice, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), mintPrice, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, listingPrice + 1, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{ + value: _withFee(mintPrice) + refundAmount + }(items); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(mintPrice)); + assertEq(summary.ethRefunded, refundAmount); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutSkipsSoldOutDirectSaleMintAndRollsBackLimitCounters() public { + uint256 price = 1 ether; + + vm.startPrank(seller); + uint256 soldOutTokenId = token.createToken("ipfs://token/sold-out-primary.json", 1, seller); + token.mintBatchTo(seller, _singleTokenIds(soldOutTokenId), _singleAmounts(1)); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(soldOutTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(soldOutTokenId, 5)); + marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(soldOutTokenId, 5)); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), soldOutTokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(token.balanceOf(buyer, soldOutTokenId), 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(marketplace.getTokenMintsPerAddress(address(token), soldOutTokenId, buyer), 0); + assertEq(marketplace.getTokenTxsPerAddress(address(token), soldOutTokenId, buyer), 0); + } + + function testCheckoutSkipsDirectSaleMintWhenMarketplaceMinterApprovalRevoked() public { + uint256 price = 1 ether; + + vm.startPrank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + token.setMinterApproval(address(marketplace), false); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockSecondaryPayout(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + items[1] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.totalMintedForToken(tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 0); + } + + function testCheckoutSkipsAdditionalValidationFailuresBeforeSuccessfulFill() public { + uint256 price = 1 ether; + uint256 expensivePrice = 20 ether; + + vm.startPrank(seller); + uint256 soldOutTokenId = token.createToken("ipfs://token/sold-out.json", 5, seller); + uint256 expiredTokenId = token.createToken("ipfs://token/expired.json", 5, seller); + uint256 expensiveTokenId = token.createToken("ipfs://token/expensive.json", 5, seller); + uint256 allowlistTokenId = token.createToken("ipfs://token/allowlist.json", 5, seller); + token.mintBatchTo( + seller, + _tokenIds(soldOutTokenId, expiredTokenId, expensiveTokenId), + _amounts(uint256(1), uint256(1), uint256(1)) + ); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(soldOutTokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setSalePrices( + address(token), + address(0), + _singleExpiringSalePriceRequest(expiredTokenId, price, 1, block.timestamp + 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(expensiveTokenId, expensivePrice, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(allowlistTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.setTokenAllowListConfigs( + address(token), + _singleAllowListConfigRequest( + allowlistTokenId, + keccak256(abi.encodePacked(address(0xdead))), + block.timestamp + 1 days + ) + ); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockMarketplaceFee(expensivePrice, seller); + _mockPrimaryPayoutFor(address(token), price, seller); + + vm.warp(block.timestamp + 2); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](5); + items[0] = _listingCheckoutItem(address(token), seller, address(0), soldOutTokenId, price, 2); + items[1] = _listingCheckoutItem(address(token), seller, address(0), expiredTokenId, price, 1); + items[2] = _listingCheckoutItem(address(token), seller, address(0), expensiveTokenId, expensivePrice, 1); + items[3] = _directSaleCheckoutItem(address(token), seller, address(0), allowlistTokenId, price, 1); + items[4] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 4); + assertEq(summary.ethSpent, _withFee(price)); + assertEq(summary.ethRefunded, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(buyer, soldOutTokenId), 0); + assertEq(token.balanceOf(buyer, expiredTokenId), 0); + assertEq(token.balanceOf(buyer, expensiveTokenId), 0); + assertEq(token.balanceOf(buyer, allowlistTokenId), 0); + assertEq(token.balanceOf(seller, soldOutTokenId), 1); + assertEq(token.balanceOf(seller, expiredTokenId), 1); + assertEq(token.balanceOf(seller, expensiveTokenId), 1); + } + + function testCheckoutSkipsInsufficientERC20AllowanceWithoutPullingFunds() public { + uint256 mintPrice = 1 ether; + uint256 listingPrice = 2 ether; + + vm.prank(seller); + uint256 listedTokenId = token.createToken("ipfs://token/2.json", 5, seller); + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(listedTokenId), _singleAmounts(1)); + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + _mockMarketplaceFee(listingPrice, seller); + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(currency), + _singleSalePriceRequest(listedTokenId, listingPrice, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, mintPrice, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), mintPrice, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(address(token), seller, address(currency), listedTokenId, listingPrice, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, mintPrice, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(mintPrice)}( + items + ); + IRareERC1155MarketplaceTypes.CheckoutSummary memory summary = execution.summary; + + assertEq(summary.filledCount, 1); + assertEq(summary.skippedCount, 1); + assertEq(summary.ethSpent, _withFee(mintPrice)); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); + assertEq(token.balanceOf(buyer, listedTokenId), 0); + assertEq(token.balanceOf(seller, listedTokenId), 1); + assertEq(marketplace.getSalePrice(address(token), listedTokenId, seller).quantity, 1); + assertEq(token.balanceOf(buyer, tokenId), 1); + } + + function testCheckoutFreeEthDirectSalePaysZeroAndSkipsPayout() public { + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, 0, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, 0, 1); + + vm.expectCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, uint256(0)), + uint64(0) + ); + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: 0}(items); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 0); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, 0); + assertEq(execution.items[0].totalPaid, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutFreeERC20DirectSalePaysZeroAndSkipsPayout() public { + _mockApprovedCurrency(address(currency)); + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(currency), + _singleDirectSaleRequest(tokenId, 0, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), 1 ether); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(token), seller, address(currency), tokenId, 0, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + uint256 buyerAllowanceBefore = currency.allowance(buyer, address(erc20ApprovalManager)); + + vm.expectCall( + address(erc20ApprovalManager), + abi.encodeWithSelector( + ERC20ApprovalManager.transferFrom.selector, + address(currency), + buyer, + address(marketplace), + 0 + ), + uint64(0) + ); + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: 0}(items); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 0); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, 0); + assertEq(execution.items[0].totalPaid, 0); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); + assertEq(currency.allowance(buyer, address(erc20ApprovalManager)), buyerAllowanceBefore); + assertEq(currency.balanceOf(address(marketplace)), 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + } + + function testCheckoutMixedFreeAndPaidEthDirectSalesConservesETH() public { + uint256 paidPrice = 1 ether; + + vm.prank(seller); + uint256 paidTokenId = token.createToken("ipfs://token/paid-direct-sale.json", 20, seller); + + vm.startPrank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, 0, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(paidTokenId, paidPrice, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + _mockPrimaryPayoutFor(address(token), paidPrice, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, 0, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), paidTokenId, paidPrice, 1); + + uint256 buyerBalanceBefore = buyer.balance; + uint256 sellerBalanceBefore = seller.balance; + uint256 networkBalanceBefore = networkBeneficiary.balance; + uint256 rewardBalanceBefore = rewardAccumulator.balance; + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(paidPrice)}( + items + ); + + assertEq(execution.summary.filledCount, 2); + assertEq(execution.summary.skippedCount, 0); + assertEq(execution.summary.ethSpent, _withFee(paidPrice)); + assertEq(execution.summary.ethRefunded, 0); + assertEq(execution.items[0].totalPaid, 0); + assertEq(execution.items[1].totalPaid, _withFee(paidPrice)); + assertEq(buyer.balance, buyerBalanceBefore - _withFee(paidPrice)); + assertEq(seller.balance, sellerBalanceBefore + ((paidPrice * 90) / 100)); + assertEq(networkBeneficiary.balance, networkBalanceBefore + ((paidPrice * 13) / 100)); + assertEq(rewardAccumulator.balance, rewardBalanceBefore); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(token.balanceOf(buyer, paidTokenId), 1); + assertEq(address(marketplace).balance, 0); + } + + function testCheckoutSucceedsWhenEveryItemIsSkipped() public { + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _unsupportedCheckoutItem(); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.items.length, 1); + assertEq( + uint8(execution.items[0].failureStage), + uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION) + ); + assertEq(execution.items[0].reason, IRareERC1155MarketplaceTypes.UnsupportedCheckoutItemKind.selector); + assertEq( + execution.items[0].failureData, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.UnsupportedCheckoutItemKind.selector, items[0].itemKind) + ); + } + + function testCheckoutSucceedsWhenEveryERC20ItemIsSkippedWithoutPullingFunds() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(currency), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.clearMockedCalls(); + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(currency)), + abi.encode(false) + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(price)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(token), seller, address(currency), tokenId, price, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + uint256 buyerAllowanceBefore = currency.allowance(buyer, address(erc20ApprovalManager)); + + vm.expectCall( + address(erc20ApprovalManager), + abi.encodeWithSelector( + ERC20ApprovalManager.transferFrom.selector, + address(currency), + buyer, + address(marketplace), + _withFee(price) + ), + uint64(0) + ); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, 0); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); + assertEq(currency.allowance(buyer, address(erc20ApprovalManager)), buyerAllowanceBefore); + assertEq(currency.balanceOf(address(marketplace)), 0); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.CurrencyNotApproved.selector + ); + } + + function testCheckoutSkipsListingWhenCurrencyIsNoLongerApproved() public { + uint256 price = 1 ether; + + vm.prank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + + vm.prank(seller); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + + _mockApprovedCurrency(address(currency)); + vm.prank(seller); + marketplace.setSalePrices( + address(token), + address(currency), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + + vm.clearMockedCalls(); + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, address(currency)), + abi.encode(false) + ); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(price)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(token), seller, address(currency), tokenId, price, 1); + + uint256 buyerCurrencyBefore = currency.balanceOf(buyer); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(currency.balanceOf(buyer), buyerCurrencyBefore); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.CurrencyNotApproved.selector + ); + assertEq( + execution.items[0].failureData, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.CurrencyNotApproved.selector, address(currency)) + ); + } + + function testCheckoutSkipsTransferFailure() public { + CheckoutNoOpERC1155 brokenToken = new CheckoutNoOpERC1155(); + uint256 brokenTokenId = 88; + uint256 price = 1 ether; + + brokenToken.setBalance(seller, brokenTokenId, 1); + vm.prank(seller); + brokenToken.setApprovalForAll(address(erc1155ApprovalManager), true); + + vm.prank(seller); + marketplace.setSalePrices( + address(brokenToken), + address(0), + _singleSalePriceRequest(brokenTokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockMarketplaceFee(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(brokenToken), seller, address(0), brokenTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, _withFee(price)); + assertEq(uint8(execution.items[0].failureStage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.TRANSFER)); + assertEq(execution.items[0].reason, IRareERC1155MarketplaceTypes.InvalidERC1155Transfer.selector); + assertEq( + execution.items[0].failureData, + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Transfer.selector, + address(brokenToken), + brokenTokenId, + seller, + buyer, + 1 + ) + ); + + assertEq(brokenToken.balanceOf(seller, brokenTokenId), 1); + assertEq(brokenToken.balanceOf(buyer, brokenTokenId), 0); + assertEq(marketplace.getSalePrice(address(brokenToken), brokenTokenId, seller).quantity, 1); + } + + function testCheckoutSkipsDirectSaleMintWhenMintDoesNotIncreaseBuyerBalance() public { + uint256 price = 1 ether; + uint256 noOpTokenId = 92; + CheckoutNoOpMintERC1155 noOpToken = new CheckoutNoOpMintERC1155(seller); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(noOpToken), + address(0), + _singleDirectSaleRequest(noOpTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockMarketplaceFee(price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(noOpToken), seller, address(0), noOpTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, _withFee(price)); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector + ); + assertEq( + execution.items[0].failureData, + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, + address(noOpToken), + noOpTokenId, + buyer, + 1 + ) + ); + assertEq(noOpToken.balanceOf(buyer, noOpTokenId), 0); + } + + function testCheckoutValidationRevertsBecomeValidationSkipsAndContinue() public { + uint256 price = 1 ether; + uint256 ownerRevertTokenId = 101; + uint256 supportsRevertTokenId = 102; + uint256 approvalRevertTokenId = 103; + uint256 balanceRevertTokenId = 104; + + CheckoutToggleERC1155 ownerRevertToken = new CheckoutToggleERC1155(seller); + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(ownerRevertToken), + address(0), + _singleDirectSaleRequest(ownerRevertTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + ownerRevertToken.setRevertOwner(true); + + CheckoutToggleERC1155 supportsRevertToken = _listedToggleToken(supportsRevertTokenId, price); + supportsRevertToken.setRevertSupportsInterface(true); + + CheckoutToggleERC1155 approvalRevertToken = _listedToggleToken(approvalRevertTokenId, price); + approvalRevertToken.setRevertApproval(true); + + CheckoutToggleERC1155 balanceRevertToken = _listedToggleToken(balanceRevertTokenId, price); + balanceRevertToken.setRevertBalance(true); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](5); + items[0] = _directSaleCheckoutItem(address(ownerRevertToken), seller, address(0), ownerRevertTokenId, price, 1); + items[1] = _listingCheckoutItem(address(supportsRevertToken), seller, address(0), supportsRevertTokenId, price, 1); + items[2] = _listingCheckoutItem(address(approvalRevertToken), seller, address(0), approvalRevertTokenId, price, 1); + items[3] = _listingCheckoutItem(address(balanceRevertToken), seller, address(0), balanceRevertTokenId, price, 1); + items[4] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 4); + assertEq(token.balanceOf(buyer, tokenId), 1); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.ContractHasNoOwner.selector + ); + _assertSkipped( + execution.items[1], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.InvalidERC1155Contract.selector + ); + _assertSkipped( + execution.items[2], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.MarketplaceNotApproved.selector + ); + _assertSkipped( + execution.items[3], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + IRareERC1155MarketplaceTypes.InsufficientTokenBalance.selector + ); + assertTrue(execution.items[4].filled); + } + + function testCheckoutSkipsPayoutFailureAndContinues() public { + uint256 price = 1 ether; + uint256 primaryTokenId; + + vm.startPrank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + primaryTokenId = token.createToken("ipfs://token/primary-after-payout-fail.json", 20, seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(primaryTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockMarketplaceFee(price, seller); + _mockPrimaryPayoutFor(address(token), price, seller); + bytes memory royaltyRevertData = abi.encodeWithSignature("Error(string)", "royalty failed"); + vm.mockCallRevert( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + royaltyRevertData + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](2); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + items[1] = _directSaleCheckoutItem(address(token), seller, address(0), primaryTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 1); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(buyer, primaryTokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + _assertSkipped(execution.items[0], IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT, bytes4(0x08c379a0)); + assertEq(execution.items[0].failureData, royaltyRevertData); + assertTrue(execution.items[1].filled); + } + + function testCheckoutPayoutFailureCannotSpoofFailureStage() public { + uint256 price = 1 ether; + bytes memory spoofedPayoutRevertData = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + IRareERC1155MarketplaceTypes.CheckoutFailureStage.VALIDATION, + abi.encodeWithSelector(IRareERC1155MarketplaceTypes.PriceMismatch.selector, price + 1, price) + ); + + vm.startPrank(seller); + token.mintBatchTo(seller, _singleTokenIds(tokenId), _singleAmounts(1)); + token.setApprovalForAll(address(erc1155ApprovalManager), true); + marketplace.setSalePrices( + address(token), + address(0), + _singleSalePriceRequest(tokenId, price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + vm.stopPrank(); + + _mockMarketplaceFee(price, seller); + vm.mockCallRevert( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, address(token), tokenId, price), + spoofedPayoutRevertData + ); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _listingCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 0); + assertEq(execution.summary.skippedCount, 1); + assertEq(execution.summary.ethSpent, 0); + assertEq(execution.summary.ethRefunded, _withFee(price)); + assertEq(token.balanceOf(buyer, tokenId), 0); + assertEq(token.balanceOf(seller, tokenId), 1); + assertEq(marketplace.getSalePrice(address(token), tokenId, seller).quantity, 1); + _assertSkipped( + execution.items[0], + IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT, + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector + ); + assertEq(execution.items[0].failureData, spoofedPayoutRevertData); + } + + function testCheckoutExecutionFailureDecodesStructuredStage() public { + CheckoutFailureDecoderHarness harness = new CheckoutFailureDecoderHarness(); + bytes memory mintFailureData = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.InvalidERC1155Mint.selector, + address(token), + tokenId, + buyer, + 1 + ); + bytes memory revertData = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT, + mintFailureData + ); + + (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) = harness + .checkoutExecutionFailure(revertData); + + assertEq(uint8(stage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.MINT)); + assertEq(failureData, mintFailureData); + } + + function testCheckoutExecutionFailureFallsBackToUnknownForRawRevertData() public { + bytes memory revertData = abi.encodeWithSignature("Error(string)", "unexpected failure"); + + _assertUnknownCheckoutFailure(revertData); + } + + function testCheckoutExecutionFailureFallsBackToUnknownForMalformedStructuredPayloads() public { + bytes memory shortPayload = abi.encodePacked( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))) + ); + _assertUnknownCheckoutFailure(shortPayload); + + bytes memory invalidStagePayload = abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + uint256(255), + bytes("stage") + ); + _assertUnknownCheckoutFailure(invalidStagePayload); + + bytes memory invalidOffsetPayload = abi.encodePacked( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))), + bytes32(uint256(96)), + bytes32(uint256(0)) + ); + _assertUnknownCheckoutFailure(invalidOffsetPayload); + + bytes memory invalidLengthPayload = abi.encodePacked( + IRareERC1155MarketplaceTypes.CheckoutItemExecutionFailed.selector, + bytes32(uint256(uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.PAYOUT))), + bytes32(uint256(64)), + bytes32(uint256(1)) + ); + _assertUnknownCheckoutFailure(invalidLengthPayload); + } + + function testCheckoutEthRecipientRejectionEscrowsInPayments() public { + uint256 price = 1 ether; + RejectETH rejectRecipient = new RejectETH(); + address payable[] memory splitRecipients = new address payable[](1); + splitRecipients[0] = payable(address(rejectRecipient)); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(token), + address(0), + _singleDirectSaleRequest(tokenId, price, 0, 0), + splitRecipients, + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(token), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(token), seller, address(0), tokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertEq(execution.summary.skippedCount, 0); + assertEq(token.balanceOf(buyer, tokenId), 1); + assertEq(payments.payments(address(rejectRecipient)), price - ((price * 10) / 100)); + } + + function testCheckoutItemExecutionKeepsMarketplaceReentrancyGuard() public { + uint256 price = 1 ether; + uint256 reentrantTokenId = 77; + CheckoutReentrantERC1155 reentrantToken = new CheckoutReentrantERC1155(seller, marketplace); + + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(reentrantToken), + address(0), + _singleDirectSaleRequest(reentrantTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(reentrantToken), price, seller); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(reentrantToken), seller, address(0), reentrantTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout{value: _withFee(price)}( + items + ); + + assertEq(execution.summary.filledCount, 1); + assertTrue(reentrantToken.reentryBlocked()); + assertEq(reentrantToken.balanceOf(buyer, reentrantTokenId), 1); + } + + function testCheckoutDirectSaleMintCollectsERC20BeforeMint() public { + uint256 price = 1 ether; + uint256 observedTokenId = 78; + CheckoutPaymentObservingERC1155 observingToken = new CheckoutPaymentObservingERC1155( + seller, + currency, + address(marketplace) + ); + + _mockApprovedCurrency(address(currency)); + vm.prank(seller); + marketplace.prepareMintDirectSales( + address(observingToken), + address(currency), + _singleDirectSaleRequest(observedTokenId, price, 0, 0), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + _mockPrimaryPayoutFor(address(observingToken), price, seller); + + vm.prank(buyer); + currency.approve(address(erc20ApprovalManager), _withFee(price)); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](1); + items[0] = _directSaleCheckoutItem(address(observingToken), seller, address(currency), observedTokenId, price, 1); + + vm.prank(buyer); + IRareERC1155MarketplaceTypes.CheckoutExecution memory execution = marketplace.checkout(items); + + assertEq(execution.summary.filledCount, 1); + assertEq(observingToken.marketplaceCurrencyBalanceAtMint(), _withFee(price)); + assertEq(observingToken.balanceOf(buyer, observedTokenId), 1); + assertEq(currency.balanceOf(address(marketplace)), 0); + } + + function testDirectCallsToExecutionModulesRevert() public { + IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(tokenId, 1 ether, 1); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + tradeExecutionModule.buyBatch(address(token), seller, address(0), requests); + + IRareERC1155MarketplaceTypes.CheckoutItem[] memory items = new IRareERC1155MarketplaceTypes.CheckoutItem[](0); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + checkoutExecutionModule.checkout(items); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + checkoutExecutionModule.executeCheckoutItem( + _unsupportedCheckoutItem(), + 0, + address(0), + 0, + 0, + new address payable[](0), + new uint8[](0) + ); + + vm.expectRevert(IRareERC1155MarketplaceTypes.DirectModuleCallUnsupported.selector); + checkoutExecutionModule.executeCheckoutPayout( + _unsupportedCheckoutItem(), + seller, + 0, + 0, + new address payable[](0), + new uint8[](0) + ); + + (bool success, ) = address(marketplace).call( + abi.encodeWithSelector( + IRareERC1155CheckoutExecutionModule.executeCheckoutItem.selector, + _unsupportedCheckoutItem(), + 0, + address(0), + 0, + 0, + new address payable[](0), + new uint8[](0) + ) + ); + assertFalse(success); + } + + function testOwnerCanUpdateTradeExecutionModule() public { + vm.prank(deployer); + RareERC1155TradeExecutionModule newTradeExecutionModule = new RareERC1155TradeExecutionModule(); + + vm.prank(deployer); + marketplace.setTradeExecutionModule(address(newTradeExecutionModule)); + + assertEq(marketplace.getTradeExecutionModule(), address(newTradeExecutionModule)); + } + + function testOwnerCanUpdateCheckoutExecutionModule() public { + vm.prank(deployer); + RareERC1155CheckoutExecutionModule newCheckoutExecutionModule = new RareERC1155CheckoutExecutionModule(); + + vm.prank(deployer); + marketplace.setCheckoutExecutionModule(address(newCheckoutExecutionModule)); + + assertEq(marketplace.getCheckoutExecutionModule(), address(newCheckoutExecutionModule)); + } + + function testSetTokenAllowListConfigsRevertsWhenPaused() public { + vm.prank(deployer); + marketplace.setContractPaused(true); + + vm.prank(seller); + vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); + marketplace.setTokenAllowListConfigs( + address(token), + _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), block.timestamp + 1 days) + ); + } + + function testSetTokenAllowListConfigsRevertsWhenActiveEndTimestampNotFuture() public { + uint256 currentTime = block.timestamp; + + vm.prank(seller); + vm.expectRevert( + abi.encodeWithSelector( + IRareERC1155MarketplaceTypes.AllowListEndTimestampInvalid.selector, + currentTime, + currentTime + ) + ); + marketplace.setTokenAllowListConfigs( + address(token), + _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), currentTime) + ); + } + + function testSetTokenAllowListConfigsAllowsDisablingWithZeroRoot() public { + vm.startPrank(seller); + marketplace.setTokenAllowListConfigs( + address(token), + _singleAllowListConfigRequest(tokenId, keccak256(abi.encodePacked(buyer)), block.timestamp + 1 days) + ); + marketplace.setTokenAllowListConfigs(address(token), _singleAllowListConfigRequest(tokenId, bytes32(0), 0)); + vm.stopPrank(); + + IRareERC1155MarketplaceTypes.AllowListConfig memory config = marketplace.getTokenAllowListConfig( + address(token), + tokenId + ); + assertEq(config.root, bytes32(0)); + assertEq(config.endTimestamp, 0); + } + + function testSetTokenMintLimitsRevertsWhenPaused() public { + vm.prank(deployer); + marketplace.setContractPaused(true); + + vm.prank(seller); + vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); + marketplace.setTokenMintLimits(address(token), _singleTokenLimitRequest(tokenId, 5)); + } + + function testSetTokenTxLimitsRevertsWhenPaused() public { + vm.prank(deployer); + marketplace.setContractPaused(true); + + vm.prank(seller); + vm.expectRevert(IRareERC1155MarketplaceTypes.ContractPaused.selector); + marketplace.setTokenTxLimits(address(token), _singleTokenLimitRequest(tokenId, 5)); + } + + function _initData( + address _payments, + address _tradeExecutionModule, + address _checkoutExecutionModule + ) private view returns (bytes memory) { + return + abi.encodeWithSelector( + RareERC1155Marketplace.initialize.selector, + networkBeneficiary, + marketplaceSettings, + royaltyEngine, + _payments, + approvedTokenRegistry, + address(erc20ApprovalManager), + address(erc721ApprovalManager), + address(erc1155ApprovalManager), + _tradeExecutionModule, + _checkoutExecutionModule + ); + } + + function _singleSalePriceRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory) { + IRareERC1155MarketplaceTypes.SalePriceRequest[] + memory requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, 0); + return requests; + } + + function _singleExpiringSalePriceRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity, + uint256 _expirationTime + ) private pure returns (IRareERC1155MarketplaceTypes.SalePriceRequest[] memory) { + IRareERC1155MarketplaceTypes.SalePriceRequest[] + memory requests = new IRareERC1155MarketplaceTypes.SalePriceRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.SalePriceRequest(_tokenId, _price, _quantity, _expirationTime); + return requests; + } + + function _singleDirectSaleRequest( + uint256 _tokenId, + uint256 _price, + uint256 _startTime, + uint256 _maxMints + ) private pure returns (IRareERC1155MarketplaceTypes.DirectSaleRequest[] memory) { + IRareERC1155MarketplaceTypes.DirectSaleRequest[] + memory requests = new IRareERC1155MarketplaceTypes.DirectSaleRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.DirectSaleRequest(_tokenId, _price, _startTime, _maxMints); + return requests; + } + + function _singleAllowListConfigRequest( + uint256 _tokenId, + bytes32 _root, + uint256 _endTimestamp + ) private pure returns (IRareERC1155MarketplaceTypes.AllowListConfigRequest[] memory) { + IRareERC1155MarketplaceTypes.AllowListConfigRequest[] + memory requests = new IRareERC1155MarketplaceTypes.AllowListConfigRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.AllowListConfigRequest(_tokenId, _root, _endTimestamp); + return requests; + } + + function _singleTokenLimitRequest( + uint256 _tokenId, + uint256 _limit + ) private pure returns (IRareERC1155MarketplaceTypes.TokenLimitRequest[] memory) { + IRareERC1155MarketplaceTypes.TokenLimitRequest[] + memory requests = new IRareERC1155MarketplaceTypes.TokenLimitRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.TokenLimitRequest(_tokenId, _limit); + return requests; + } + + function _singleMintRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.MintRequest[] memory) { + bytes32[] memory proof = new bytes32[](0); + IRareERC1155MarketplaceTypes.MintRequest[] memory requests = new IRareERC1155MarketplaceTypes.MintRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.MintRequest(_tokenId, _price, _quantity, proof); + return requests; + } + + function _singleBuyRequest( + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.BuyRequest[] memory) { + IRareERC1155MarketplaceTypes.BuyRequest[] memory requests = new IRareERC1155MarketplaceTypes.BuyRequest[](1); + requests[0] = IRareERC1155MarketplaceTypes.BuyRequest(_tokenId, _price, _quantity); + return requests; + } + + function _directSaleCheckoutItem( + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.DIRECT_SALE_MINT), + contractAddress: _contractAddress, + seller: _seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _listingCheckoutItem( + address _contractAddress, + address _seller, + address _currencyAddress, + uint256 _tokenId, + uint256 _price, + uint256 _quantity + ) private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: uint8(IRareERC1155MarketplaceTypes.CheckoutItemKind.LISTING_BUY), + contractAddress: _contractAddress, + seller: _seller, + currencyAddress: _currencyAddress, + tokenId: _tokenId, + price: _price, + quantity: _quantity, + proof: new bytes32[](0) + }); + } + + function _unsupportedCheckoutItem() private pure returns (IRareERC1155MarketplaceTypes.CheckoutItem memory) { + return + IRareERC1155MarketplaceTypes.CheckoutItem({ + itemKind: type(uint8).max, + contractAddress: address(0), + seller: address(0), + currencyAddress: address(0), + tokenId: 0, + price: 0, + quantity: 0, + proof: new bytes32[](0) + }); + } + + function _listedToggleToken(uint256 _tokenId, uint256 _price) private returns (CheckoutToggleERC1155 toggleToken) { + toggleToken = new CheckoutToggleERC1155(seller); + toggleToken.setBalance(seller, _tokenId, 1); + vm.prank(seller); + toggleToken.setApprovalForAll(address(erc1155ApprovalManager), true); + vm.prank(seller); + marketplace.setSalePrices( + address(toggleToken), + address(0), + _singleSalePriceRequest(_tokenId, _price, 1), + _singleSplitRecipients(seller), + _singleSplitRatios() + ); + } + + function _assertSkipped( + IRareERC1155MarketplaceTypes.CheckoutItemResult memory _result, + IRareERC1155MarketplaceTypes.CheckoutFailureStage _stage, + bytes4 _reason + ) private { + assertFalse(_result.filled); + assertEq(uint8(_result.failureStage), uint8(_stage)); + assertEq(_result.reason, _reason); + } + + function _assertUnknownCheckoutFailure(bytes memory _revertData) private { + CheckoutFailureDecoderHarness harness = new CheckoutFailureDecoderHarness(); + + (IRareERC1155MarketplaceTypes.CheckoutFailureStage stage, bytes memory failureData) = harness + .checkoutExecutionFailure(_revertData); + + assertEq(uint8(stage), uint8(IRareERC1155MarketplaceTypes.CheckoutFailureStage.UNKNOWN)); + assertEq(failureData, _revertData); + } + + function _singleSplitRecipients(address _recipient) private pure returns (address payable[] memory recipients) { + recipients = new address payable[](1); + recipients[0] = payable(_recipient); + } + + function _singleSplitRatios() private pure returns (uint8[] memory ratios) { + ratios = new uint8[](1); + ratios[0] = 100; + } + + function _singleTokenIds(uint256 _tokenId) private pure returns (uint256[] memory tokenIds) { + tokenIds = new uint256[](1); + tokenIds[0] = _tokenId; + } + + function _tokenIds( + uint256 _firstTokenId, + uint256 _secondTokenId, + uint256 _thirdTokenId + ) private pure returns (uint256[] memory tokenIds) { + tokenIds = new uint256[](3); + tokenIds[0] = _firstTokenId; + tokenIds[1] = _secondTokenId; + tokenIds[2] = _thirdTokenId; + } + + function _singleAmounts(uint256 _amount) private pure returns (uint256[] memory amounts) { + amounts = new uint256[](1); + amounts[0] = _amount; + } + + function _amounts( + uint256 _firstAmount, + uint256 _secondAmount, + uint256 _thirdAmount + ) private pure returns (uint256[] memory amounts) { + amounts = new uint256[](3); + amounts[0] = _firstAmount; + amounts[1] = _secondAmount; + amounts[2] = _thirdAmount; + } + + function _mockSecondaryPayout(uint256 _amount, address _seller) private { + _mockSecondaryPayoutFor(address(token), tokenId, _amount, _seller); + } + + function _mockSecondaryPayoutFor( + address _contractAddress, + uint256 _tokenId, + uint256 _amount, + address _seller + ) private { + address payable[] memory receivers = new address payable[](1); + uint256[] memory royalties = new uint256[](1); + receivers[0] = payable(royaltyReceiver); + royalties[0] = (_amount * 10) / 100; + + _mockSecondaryPayoutWithRoyalties(_contractAddress, _tokenId, _amount, _seller, receivers, royalties); + } + + function _mockSecondaryPayoutWithRoyalties( + address _contractAddress, + uint256 _tokenId, + uint256 _amount, + address _seller, + address payable[] memory _receivers, + uint256[] memory _royalties + ) private { + _mockMarketplaceFee(_amount, _seller); + vm.mockCall( + royaltyEngine, + abi.encodeWithSelector(IRoyaltyEngineV1.getRoyalty.selector, _contractAddress, _tokenId, _amount), + abi.encode(_receivers, _royalties) + ); + } + + function _royaltyReceivers(uint256 _count) private pure returns (address payable[] memory receivers) { + address payable[6] memory allReceivers = [ + payable(address(0x4101)), + payable(address(0x4102)), + payable(address(0x4103)), + payable(address(0x4104)), + payable(address(0x4105)), + payable(address(0x4106)) + ]; + receivers = new address payable[](_count); + for (uint256 i = 0; i < _count; i++) { + receivers[i] = allReceivers[i]; + } + } + + function _royaltyAmounts(uint256 _amount, uint256 _count) private pure returns (uint256[] memory royalties) { + royalties = new uint256[](_count); + for (uint256 i = 0; i < _count; i++) { + royalties[i] = (_amount * (i + 1)) / 100; + } + } + + function _zeroAddressRoyaltyReceivers() private pure returns (address payable[] memory receivers) { + receivers = new address payable[](1); + receivers[0] = payable(address(0)); + } + + function _singleRoyaltyAmounts(uint256 _amount) private pure returns (uint256[] memory royalties) { + royalties = new uint256[](1); + royalties[0] = (_amount * 10) / 100; + } + + function _mockApprovedCurrency(address _currencyAddress) private { + vm.mockCall( + approvedTokenRegistry, + abi.encodeWithSelector(IApprovedTokenRegistry.isApprovedToken.selector, _currencyAddress), + abi.encode(true) + ); + } + + function _mockMarketplaceFee(uint256 _amount, address _seller) private { + _seller; + _mockApprovedCurrency(address(0)); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSelector(IMarketplaceSettings.calculateMarketplaceFee.selector, _amount), + abi.encode(_fee(_amount)) + ); + } + + function _mockPrimaryPayout(uint256 _amount, address _seller) private { + _mockPrimaryPayoutFor(address(token), _amount, _seller); + } + + function _mockPrimaryPayoutFor(address _contractAddress, uint256 _amount, address _seller) private { + _mockMarketplaceFee(_amount, _seller); + vm.mockCall( + marketplaceSettings, + abi.encodeWithSignature("getERC721ContractPrimarySaleFeePercentage(address)", _contractAddress), + abi.encode(uint256(10)) + ); + } + + function _withFee(uint256 _amount) private pure returns (uint256) { + return _amount + _fee(_amount); + } + + function _fee(uint256 _amount) private pure returns (uint256) { + return (_amount * 3) / 100; + } +} diff --git a/src/test/token/ERC1155/RareERC1155.t.sol b/src/test/token/ERC1155/RareERC1155.t.sol new file mode 100644 index 0000000..e1178dc --- /dev/null +++ b/src/test/token/ERC1155/RareERC1155.t.sol @@ -0,0 +1,386 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/Test.sol"; + +import {IRareERC1155} from "../../../token/ERC1155/IRareERC1155.sol"; +import {RareERC1155} from "../../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../../token/ERC1155/RareERC1155ContractFactory.sol"; +import {ITokenCreator} from "../../../token/extensions/ITokenCreator.sol"; +import {IERC2981Upgradeable} from "openzeppelin-contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; + +contract RareERC1155Test is Test { + RareERC1155 private token; + RareERC1155ContractFactory private factory; + + address private owner = address(0x1111); + address private minter = address(0x2222); + address private collector = address(0x3333); + address private royaltyReceiver = address(0x4444); + address private newOwner = address(0x5555); + + function setUp() public { + factory = new RareERC1155ContractFactory(); + factory.setDefaultMinter(minter); + + vm.prank(owner); + token = RareERC1155(factory.createRareERC1155Contract("Rare Editions", "RARE1155", "ipfs://base/{id}.json")); + } + + function testImplementationCannotBeInitialized() public { + RareERC1155 implementation = new RareERC1155(); + + vm.expectRevert("Initializable: contract is already initialized"); + implementation.init("Rare Editions", "RARE1155", "ipfs://base/{id}.json", owner, minter); + } + + function testMaxBatchSize() public { + assertEq(token.MAX_BATCH_SIZE(), 100); + } + + function testFactoryCreatesInitializedClone() public { + factory = new RareERC1155ContractFactory(); + factory.setDefaultMinter(minter); + + vm.prank(owner); + address clone = factory.createRareERC1155Contract("Factory Editions", "FED", "ipfs://factory/{id}.json"); + + RareERC1155 created = RareERC1155(clone); + assertEq(created.owner(), owner); + assertEq(created.name(), "Factory Editions"); + assertEq(created.symbol(), "FED"); + assertTrue(created.isApprovedMinter(minter)); + } + + function testCreateTokenMintAndRoyalty() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, royaltyReceiver); + + assertEq(tokenId, 1); + assertEq(token.uri(tokenId), "ipfs://token/1.json"); + assertEq(token.maxSupplyForToken(tokenId), 10); + assertEq(token.tokenCreator(tokenId), owner); + assertTrue(token.supportsInterface(type(IRareERC1155).interfaceId)); + assertTrue(token.supportsInterface(type(ITokenCreator).interfaceId)); + assertTrue(token.supportsInterface(type(IERC2981Upgradeable).interfaceId)); + + vm.prank(minter); + _mintBatchTo(collector, tokenId, 4); + + assertEq(token.balanceOf(collector, tokenId), 4); + assertEq(token.totalSupply(tokenId), 4); + assertEq(token.totalMintedForToken(tokenId), 4); + + (address receiver, uint256 royaltyAmount) = token.royaltyInfo(tokenId, 1 ether); + assertEq(receiver, royaltyReceiver); + assertEq(royaltyAmount, 0.1 ether); + } + + function testTokenCreatorTracksCollectionOwner() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, royaltyReceiver); + assertEq(token.tokenCreator(tokenId), owner); + + vm.prank(owner); + token.transferOwnership(newOwner); + + assertEq(token.owner(), newOwner); + assertEq(token.tokenCreator(tokenId), newOwner); + + vm.prank(newOwner); + uint256 secondTokenId = token.createToken("ipfs://token/2.json", 10, royaltyReceiver); + assertEq(token.tokenCreator(secondTokenId), newOwner); + } + + function testOwnershipCannotBecomeZeroAddress() public { + vm.prank(owner); + vm.expectRevert("Ownable: new owner is the zero address"); + token.transferOwnership(address(0)); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ZeroAddressUnsupported.selector); + token.renounceOwnership(); + + assertEq(token.owner(), owner); + assertEq(token.tokenCreator(1), owner); + } + + function testDefaultRoyaltyReceiverUpdatesExistingTokensButPercentageDoesNot() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, owner); + + vm.prank(owner); + token.setDefaultRoyaltyReceiver(royaltyReceiver); + + (address receiverAfterReceiverUpdate, uint256 amountAfterReceiverUpdate) = token.royaltyInfo(tokenId, 1 ether); + assertEq(receiverAfterReceiverUpdate, royaltyReceiver); + assertEq(amountAfterReceiverUpdate, 0.1 ether); + + vm.prank(owner); + token.setDefaultRoyaltyPercentage(15); + + (address receiverAfterPercentageUpdate, uint256 amountAfterPercentageUpdate) = + token.royaltyInfo(tokenId, 1 ether); + assertEq(receiverAfterPercentageUpdate, royaltyReceiver); + assertEq(amountAfterPercentageUpdate, 0.1 ether); + + (address fallbackReceiver, uint256 fallbackAmount) = token.royaltyInfo(999, 1 ether); + assertEq(fallbackReceiver, royaltyReceiver); + assertEq(fallbackAmount, 0.15 ether); + + vm.prank(owner); + uint256 secondTokenId = token.createToken("ipfs://token/2.json", 10, owner); + + (address secondTokenReceiver, uint256 secondTokenAmount) = token.royaltyInfo(secondTokenId, 1 ether); + assertEq(secondTokenReceiver, owner); + assertEq(secondTokenAmount, 0.15 ether); + + vm.prank(owner); + token.setDefaultRoyaltyReceiver(collector); + + (address firstTokenReceiverAfterSecondReceiverUpdate, uint256 firstTokenAmountAfterSecondReceiverUpdate) = + token.royaltyInfo(tokenId, 1 ether); + assertEq(firstTokenReceiverAfterSecondReceiverUpdate, collector); + assertEq(firstTokenAmountAfterSecondReceiverUpdate, 0.1 ether); + + (address secondTokenReceiverAfterSecondReceiverUpdate, uint256 secondTokenAmountAfterSecondReceiverUpdate) = + token.royaltyInfo(secondTokenId, 1 ether); + assertEq(secondTokenReceiverAfterSecondReceiverUpdate, collector); + assertEq(secondTokenAmountAfterSecondReceiverUpdate, 0.15 ether); + } + + function testOwnerCanUpdateTokenRoyaltyReceiver() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, owner); + + vm.prank(owner); + token.setDefaultRoyaltyPercentage(15); + + vm.prank(owner); + token.setRoyaltyReceiverForToken(tokenId, royaltyReceiver); + + (address receiver, uint256 royaltyAmount) = token.royaltyInfo(tokenId, 1 ether); + assertEq(receiver, royaltyReceiver); + assertEq(royaltyAmount, 0.1 ether); + } + + function testSetDefaultRoyaltyRejectsInvalidConfig() public { + vm.prank(owner); + vm.expectRevert(IRareERC1155.ZeroAddressUnsupported.selector); + token.setDefaultRoyaltyReceiver(address(0)); + + vm.prank(owner); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.RoyaltyPercentageTooHigh.selector, 101, 100)); + token.setDefaultRoyaltyPercentage(101); + } + + function testCreateTokenRejectsZeroRoyaltyReceiver() public { + vm.prank(owner); + vm.expectRevert(IRareERC1155.ZeroAddressUnsupported.selector); + token.createToken("ipfs://token/1.json", 10, address(0)); + } + + function testSetTokenRoyaltyReceiverRejectsInvalidConfig() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, owner); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ZeroAddressUnsupported.selector); + token.setRoyaltyReceiverForToken(tokenId, address(0)); + + vm.prank(owner); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.TokenDoesNotExist.selector, tokenId + 1)); + token.setRoyaltyReceiverForToken(tokenId + 1, royaltyReceiver); + } + + function testMaxSupplyEnforced() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 2, owner); + + vm.prank(minter); + _mintBatchTo(collector, tokenId, 2); + + vm.prank(minter); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.ExceededMaxSupply.selector, tokenId, 3, 2)); + _mintBatchTo(collector, tokenId, 1); + } + + function testBurnDoesNotResetMaxSupply() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 2, owner); + + vm.prank(minter); + _mintBatchTo(collector, tokenId, 2); + + vm.prank(collector); + token.burn(collector, tokenId, 1); + + assertEq(token.balanceOf(collector, tokenId), 1); + assertEq(token.totalSupply(tokenId), 1); + assertEq(token.totalMintedForToken(tokenId), 2); + + vm.prank(minter); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.ExceededMaxSupply.selector, tokenId, 3, 2)); + _mintBatchTo(collector, tokenId, 1); + } + + function testOnlyOwnerOrApprovedMinterCanMint() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 5, owner); + + vm.prank(collector); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.CallerCannotMint.selector, collector)); + _mintBatchTo(collector, tokenId, 1); + + vm.prank(owner); + token.setMinterApproval(collector, true); + + vm.prank(collector); + _mintBatchTo(collector, tokenId, 1); + + assertEq(token.balanceOf(collector, tokenId), 1); + } + + function testBurnAndDisable() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 5, owner); + + vm.prank(minter); + _mintBatchTo(collector, tokenId, 3); + + vm.prank(collector); + token.burn(collector, tokenId, 1); + assertEq(token.balanceOf(collector, tokenId), 2); + assertEq(token.totalSupply(tokenId), 2); + assertEq(token.totalMintedForToken(tokenId), 3); + + vm.prank(owner); + token.disableContract(); + + vm.prank(minter); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + _mintBatchTo(collector, tokenId, 1); + } + + function testDisableFreezesOwnerManagedWrites() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 5, owner); + + vm.prank(owner); + token.disableContract(); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + token.setMinterApproval(collector, true); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + token.setDefaultRoyaltyReceiver(royaltyReceiver); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + token.setDefaultRoyaltyPercentage(15); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + token.setRoyaltyReceiverForToken(tokenId, royaltyReceiver); + + vm.prank(owner); + vm.expectRevert(IRareERC1155.ContractIsDisabled.selector); + token.updateTokenURI(tokenId, "ipfs://token/updated.json"); + } + + function testMintBatchToMultipleTokenIds() public { + vm.startPrank(owner); + uint256 tokenIdA = token.createToken("ipfs://token/1.json", 10, owner); + uint256 tokenIdB = token.createToken("ipfs://token/2.json", 10, owner); + vm.stopPrank(); + + uint256[] memory tokenIds = new uint256[](2); + uint256[] memory amounts = new uint256[](2); + tokenIds[0] = tokenIdA; + tokenIds[1] = tokenIdB; + amounts[0] = 2; + amounts[1] = 3; + + vm.prank(minter); + token.mintBatchTo(collector, tokenIds, amounts); + + assertEq(token.balanceOf(collector, tokenIdA), 2); + assertEq(token.balanceOf(collector, tokenIdB), 3); + assertEq(token.totalMintedForToken(tokenIdA), 2); + assertEq(token.totalMintedForToken(tokenIdB), 3); + } + + function testMintToWrapsBatchMinting() public { + vm.prank(owner); + uint256 tokenId = token.createToken("ipfs://token/1.json", 10, owner); + + vm.prank(minter); + uint256 mintedTokenId = token.mintTo(collector, tokenId, 4); + + assertEq(mintedTokenId, tokenId); + assertEq(token.balanceOf(collector, tokenId), 4); + assertEq(token.totalMintedForToken(tokenId), 4); + } + + function testMintBatchToRejectsBadBatchShape() public { + uint256[] memory emptyIds = new uint256[](0); + uint256[] memory emptyAmounts = new uint256[](0); + + vm.prank(minter); + vm.expectRevert(IRareERC1155.EmptyBatch.selector); + token.mintBatchTo(collector, emptyIds, emptyAmounts); + + uint256[] memory tokenIds = new uint256[](1); + uint256[] memory amounts = new uint256[](2); + tokenIds[0] = 1; + amounts[0] = 1; + amounts[1] = 1; + + vm.prank(minter); + vm.expectRevert(IRareERC1155.BatchLengthMismatch.selector); + token.mintBatchTo(collector, tokenIds, amounts); + } + + function testMintBatchToRejectsUnsortedOrDuplicateTokenIds() public { + uint256[] memory tokenIds = new uint256[](2); + uint256[] memory amounts = new uint256[](2); + amounts[0] = 1; + amounts[1] = 1; + + tokenIds[0] = 1; + tokenIds[1] = 1; + vm.prank(minter); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.TokenIdsNotStrictlyAscending.selector, 1)); + token.mintBatchTo(collector, tokenIds, amounts); + + tokenIds[0] = 2; + tokenIds[1] = 1; + vm.prank(minter); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.TokenIdsNotStrictlyAscending.selector, 1)); + token.mintBatchTo(collector, tokenIds, amounts); + } + + function testMintBatchToRejectsOversizedBatch() public { + uint256[] memory tokenIds = new uint256[](101); + uint256[] memory amounts = new uint256[](101); + + for (uint256 i = 0; i < tokenIds.length; i++) { + tokenIds[i] = i + 1; + amounts[i] = 1; + } + + vm.prank(minter); + vm.expectRevert(abi.encodeWithSelector(IRareERC1155.BatchSizeExceeded.selector, 101, 100)); + token.mintBatchTo(collector, tokenIds, amounts); + } + + function _mintBatchTo(address _receiver, uint256 _tokenId, uint256 _amount) internal { + uint256[] memory tokenIds = new uint256[](1); + uint256[] memory amounts = new uint256[](1); + tokenIds[0] = _tokenId; + amounts[0] = _amount; + token.mintBatchTo(_receiver, tokenIds, amounts); + } +} diff --git a/src/test/token/ERC1155/RareERC1155Invariants.t.sol b/src/test/token/ERC1155/RareERC1155Invariants.t.sol new file mode 100644 index 0000000..37bb5ca --- /dev/null +++ b/src/test/token/ERC1155/RareERC1155Invariants.t.sol @@ -0,0 +1,173 @@ +// SPDX-License-Identifier: AGPL-3.0-only +pragma solidity ^0.8.0; + +import "forge-std/StdInvariant.sol"; +import "forge-std/Test.sol"; + +import {RareERC1155} from "../../../token/ERC1155/RareERC1155.sol"; +import {RareERC1155ContractFactory} from "../../../token/ERC1155/RareERC1155ContractFactory.sol"; + +contract RareERC1155SupplyHandler is Test { + RareERC1155 private token; + + address private minter; + address[4] private holders; + mapping(uint256 => uint256) private expectedLifetimeMinted; + + constructor(RareERC1155 _token, address _minter) { + token = _token; + minter = _minter; + holders = [address(0x101), address(0x102), address(0x103), address(0x104)]; + } + + function mintTo(uint256 _tokenSeed, uint256 _receiverSeed, uint256 _amount) external { + uint256 tokenId = _tokenId(_tokenSeed); + uint256 amount = _bounded(_amount, 1, 30); + + if (token.totalMintedForToken(tokenId) + amount > token.maxSupplyForToken(tokenId)) { + vm.prank(minter); + vm.expectRevert(); + token.mintTo(_holder(_receiverSeed), tokenId, amount); + return; + } + + vm.prank(minter); + token.mintTo(_holder(_receiverSeed), tokenId, amount); + expectedLifetimeMinted[tokenId] += amount; + } + + function mintBatch(uint256 _receiverSeed, uint256 _amountA, uint256 _amountB, uint256 _amountC) external { + uint256[] memory tokenIds = new uint256[](3); + uint256[] memory amounts = new uint256[](3); + tokenIds[0] = 1; + tokenIds[1] = 2; + tokenIds[2] = 3; + amounts[0] = _bounded(_amountA, 1, 30); + amounts[1] = _bounded(_amountB, 1, 30); + amounts[2] = _bounded(_amountC, 1, 30); + + bool exceedsMaxSupply = false; + for (uint256 i = 0; i < tokenIds.length; i++) { + if (token.totalMintedForToken(tokenIds[i]) + amounts[i] > token.maxSupplyForToken(tokenIds[i])) { + exceedsMaxSupply = true; + } + } + + if (exceedsMaxSupply) { + vm.prank(minter); + vm.expectRevert(); + token.mintBatchTo(_holder(_receiverSeed), tokenIds, amounts); + return; + } + + vm.prank(minter); + token.mintBatchTo(_holder(_receiverSeed), tokenIds, amounts); + for (uint256 i = 0; i < tokenIds.length; i++) { + expectedLifetimeMinted[tokenIds[i]] += amounts[i]; + } + } + + function burn(uint256 _holderSeed, uint256 _tokenSeed, uint256 _amount) external { + address tokenHolder = _holder(_holderSeed); + uint256 tokenId = _tokenId(_tokenSeed); + uint256 balance = token.balanceOf(tokenHolder, tokenId); + if (balance == 0) return; + + vm.prank(tokenHolder); + token.burn(tokenHolder, tokenId, _bounded(_amount, 1, balance)); + } + + function transfer(uint256 _fromSeed, uint256 _toSeed, uint256 _tokenSeed, uint256 _amount) external { + address from = _holder(_fromSeed); + address to = _holder(_toSeed); + uint256 tokenId = _tokenId(_tokenSeed); + uint256 balance = token.balanceOf(from, tokenId); + if (balance == 0) return; + + vm.prank(from); + token.safeTransferFrom(from, to, tokenId, _bounded(_amount, 1, balance), ""); + } + + function expectedMinted(uint256 _id) external view returns (uint256) { + return expectedLifetimeMinted[_id]; + } + + function holder(uint256 _index) external view returns (address) { + return holders[_index]; + } + + function holderCount() external pure returns (uint256) { + return 4; + } + + function _tokenId(uint256 _seed) private pure returns (uint256) { + return (_seed % 3) + 1; + } + + function _holder(uint256 _seed) private view returns (address) { + return holders[_seed % holders.length]; + } + + function _bounded(uint256 _seed, uint256 _min, uint256 _max) private pure returns (uint256) { + return _min + (_seed % (_max - _min + 1)); + } +} + +contract RareERC1155SupplyInvariantTest is StdInvariant, Test { + RareERC1155 private token; + RareERC1155SupplyHandler private handler; + + address private owner = address(0x1111); + address private minter = address(0x2222); + + function setUp() public { + RareERC1155ContractFactory factory = new RareERC1155ContractFactory(); + factory.setDefaultMinter(minter); + + vm.prank(owner); + token = RareERC1155(factory.createRareERC1155Contract("Rare Editions", "RARE1155", "ipfs://base/{id}.json")); + + vm.startPrank(owner); + assertEq(token.createToken("ipfs://token/1.json", 40, owner), 1); + assertEq(token.createToken("ipfs://token/2.json", 50, owner), 2); + assertEq(token.createToken("ipfs://token/3.json", 60, owner), 3); + vm.stopPrank(); + + handler = new RareERC1155SupplyHandler(token, minter); + targetContract(address(handler)); + bytes4[] memory selectors = new bytes4[](4); + selectors[0] = RareERC1155SupplyHandler.mintTo.selector; + selectors[1] = RareERC1155SupplyHandler.mintBatch.selector; + selectors[2] = RareERC1155SupplyHandler.burn.selector; + selectors[3] = RareERC1155SupplyHandler.transfer.selector; + targetSelector(FuzzSelector({addr: address(handler), selectors: selectors})); + } + + function invariant_lifetimeMintedNeverExceedsMaxSupply() public { + for (uint256 tokenId = 1; tokenId <= 3; tokenId++) { + assertLe(token.totalMintedForToken(tokenId), token.maxSupplyForToken(tokenId)); + } + } + + function invariant_totalSupplyNeverExceedsLifetimeMinted() public { + for (uint256 tokenId = 1; tokenId <= 3; tokenId++) { + assertLe(token.totalSupply(tokenId), token.totalMintedForToken(tokenId)); + } + } + + function invariant_lifetimeMintedIsNotReducedByBurnsOrTransfers() public { + for (uint256 tokenId = 1; tokenId <= 3; tokenId++) { + assertEq(token.totalMintedForToken(tokenId), handler.expectedMinted(tokenId)); + } + } + + function invariant_totalSupplyMatchesTrackedHolderBalances() public { + for (uint256 tokenId = 1; tokenId <= 3; tokenId++) { + uint256 trackedBalances = 0; + for (uint256 i = 0; i < handler.holderCount(); i++) { + trackedBalances += token.balanceOf(handler.holder(i), tokenId); + } + assertEq(token.totalSupply(tokenId), trackedBalances); + } + } +} diff --git a/src/test/v2/approver/ERC1155ApprovalManager.t.sol b/src/test/v2/approver/ERC1155ApprovalManager.t.sol new file mode 100644 index 0000000..ce6cba2 --- /dev/null +++ b/src/test/v2/approver/ERC1155ApprovalManager.t.sol @@ -0,0 +1,201 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import {Test} from "forge-std/Test.sol"; +import {ERC1155} from "openzeppelin-contracts/token/ERC1155/ERC1155.sol"; + +import {ERC1155ApprovalManager} from "../../../v2/approver/ERC1155/ERC1155ApprovalManager.sol"; +import {IERC1155ApprovalManager} from "../../../v2/approver/ERC1155/IERC1155ApprovalManager.sol"; + +contract TestERC1155 is ERC1155 { + constructor() ERC1155("ipfs://test/{id}.json") {} + + function mint(address to, uint256 id, uint256 amount) external { + _mint(to, id, amount, ""); + } + + function mintBatch(address to, uint256[] calldata ids, uint256[] calldata amounts) external { + _mintBatch(to, ids, amounts, ""); + } +} + +contract ERC1155ApprovalManagerTest is Test { + event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); + event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); + + bytes32 constant MANAGER_ROLE = keccak256("MANAGER_ROLE"); + bytes32 constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE"); + bytes32 constant DEFAULT_ADMIN_ROLE = 0x00; + + ERC1155ApprovalManager public approvalManager; + TestERC1155 public token; + + address public constant ADMIN = address(0x1); + address public constant OPERATOR = address(0x2); + address public constant TOKEN_OWNER = address(0x3); + address public constant TOKEN_RECIPIENT = address(0x4); + uint256 public constant TOKEN_ID = 1; + uint256 public constant TRANSFER_AMOUNT = 5; + + function setUp() public { + vm.startPrank(ADMIN); + approvalManager = new ERC1155ApprovalManager(); + token = new TestERC1155(); + token.mint(TOKEN_OWNER, TOKEN_ID, 10); + vm.stopPrank(); + } + + function test_InitialState() public { + assertTrue(approvalManager.hasRole(DEFAULT_ADMIN_ROLE, ADMIN)); + assertTrue(approvalManager.hasRole(MANAGER_ROLE, ADMIN)); + assertFalse(approvalManager.hasRole(OPERATOR_ROLE, OPERATOR)); + } + + function test_GrantOperatorRole() public { + vm.startPrank(ADMIN); + + vm.expectEmit(true, true, true, true); + emit RoleGranted(OPERATOR_ROLE, OPERATOR, ADMIN); + + approvalManager.grantOperatorRole(OPERATOR); + assertTrue(approvalManager.hasRole(OPERATOR_ROLE, OPERATOR)); + + vm.stopPrank(); + } + + function test_RevokeOperatorRole() public { + vm.startPrank(ADMIN); + + approvalManager.grantOperatorRole(OPERATOR); + assertTrue(approvalManager.hasRole(OPERATOR_ROLE, OPERATOR)); + + vm.expectEmit(true, true, true, true); + emit RoleRevoked(OPERATOR_ROLE, OPERATOR, ADMIN); + + approvalManager.revokeOperatorRole(OPERATOR); + assertFalse(approvalManager.hasRole(OPERATOR_ROLE, OPERATOR)); + + vm.stopPrank(); + } + + function test_BatchGrantOperatorRole() public { + vm.startPrank(ADMIN); + + address[] memory operators = new address[](2); + operators[0] = OPERATOR; + operators[1] = address(0x5); + + approvalManager.batchGrantOperatorRole(operators); + + assertTrue(approvalManager.hasRole(OPERATOR_ROLE, operators[0])); + assertTrue(approvalManager.hasRole(OPERATOR_ROLE, operators[1])); + + vm.stopPrank(); + } + + function test_BatchRevokeOperatorRole() public { + vm.startPrank(ADMIN); + + address[] memory operators = new address[](2); + operators[0] = OPERATOR; + operators[1] = address(0x5); + + approvalManager.batchGrantOperatorRole(operators); + approvalManager.batchRevokeOperatorRole(operators); + + assertFalse(approvalManager.hasRole(OPERATOR_ROLE, operators[0])); + assertFalse(approvalManager.hasRole(OPERATOR_ROLE, operators[1])); + + vm.stopPrank(); + } + + function test_SafeTransferFrom() public { + vm.startPrank(ADMIN); + approvalManager.grantOperatorRole(OPERATOR); + vm.stopPrank(); + + vm.startPrank(TOKEN_OWNER); + token.setApprovalForAll(address(approvalManager), true); + vm.stopPrank(); + + vm.prank(OPERATOR); + approvalManager.safeTransferFrom(address(token), TOKEN_OWNER, TOKEN_RECIPIENT, TOKEN_ID, TRANSFER_AMOUNT, ""); + + assertEq(token.balanceOf(TOKEN_RECIPIENT, TOKEN_ID), TRANSFER_AMOUNT); + assertEq(token.balanceOf(TOKEN_OWNER, TOKEN_ID), 10 - TRANSFER_AMOUNT); + } + + function test_SafeBatchTransferFrom() public { + uint256[] memory ids = new uint256[](2); + uint256[] memory amounts = new uint256[](2); + ids[0] = TOKEN_ID; + ids[1] = 2; + amounts[0] = 2; + amounts[1] = 3; + + token.mint(TOKEN_OWNER, ids[1], amounts[1]); + + vm.startPrank(ADMIN); + approvalManager.grantOperatorRole(OPERATOR); + vm.stopPrank(); + + vm.startPrank(TOKEN_OWNER); + token.setApprovalForAll(address(approvalManager), true); + vm.stopPrank(); + + vm.prank(OPERATOR); + approvalManager.safeBatchTransferFrom(address(token), TOKEN_OWNER, TOKEN_RECIPIENT, ids, amounts, ""); + + assertEq(token.balanceOf(TOKEN_RECIPIENT, ids[0]), amounts[0]); + assertEq(token.balanceOf(TOKEN_RECIPIENT, ids[1]), amounts[1]); + } + + function test_SafeTransferFromRevertsForNonOperator() public { + vm.startPrank(TOKEN_OWNER); + token.setApprovalForAll(address(approvalManager), true); + vm.stopPrank(); + + vm.prank(address(0x6)); + vm.expectRevert( + abi.encodePacked( + "AccessControl: account ", vm.toString(address(0x6)), " is missing role ", vm.toString(OPERATOR_ROLE) + ) + ); + approvalManager.safeTransferFrom(address(token), TOKEN_OWNER, TOKEN_RECIPIENT, TOKEN_ID, TRANSFER_AMOUNT, ""); + } + + function test_SafeTransferFromRevertsWhenNotApproved() public { + vm.startPrank(ADMIN); + approvalManager.grantOperatorRole(OPERATOR); + vm.stopPrank(); + + vm.prank(OPERATOR); + vm.expectRevert("ERC1155: caller is not token owner or approved"); + approvalManager.safeTransferFrom(address(token), TOKEN_OWNER, TOKEN_RECIPIENT, TOKEN_ID, TRANSFER_AMOUNT, ""); + } + + function test_OnlyManagerCanGrantRole() public { + vm.prank(OPERATOR); + vm.expectRevert( + abi.encodePacked( + "AccessControl: account ", vm.toString(OPERATOR), " is missing role ", vm.toString(MANAGER_ROLE) + ) + ); + approvalManager.grantOperatorRole(address(0x6)); + } + + function test_SafeTransferFrom_RevertsWhenDisabled() public { + vm.startPrank(ADMIN); + approvalManager.grantOperatorRole(OPERATOR); + approvalManager.disable(); + vm.stopPrank(); + + vm.startPrank(TOKEN_OWNER); + token.setApprovalForAll(address(approvalManager), true); + vm.stopPrank(); + + vm.prank(OPERATOR); + vm.expectRevert(IERC1155ApprovalManager.ContractDisabledError.selector); + approvalManager.safeTransferFrom(address(token), TOKEN_OWNER, TOKEN_RECIPIENT, TOKEN_ID, TRANSFER_AMOUNT, ""); + } +} diff --git a/src/token/ERC1155/IRareERC1155.sol b/src/token/ERC1155/IRareERC1155.sol new file mode 100644 index 0000000..3ceb84b --- /dev/null +++ b/src/token/ERC1155/IRareERC1155.sol @@ -0,0 +1,204 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {IERC2981Upgradeable} from "openzeppelin-contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; + +import {ITokenCreator} from "../extensions/ITokenCreator.sol"; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155 +/// @notice Interface for the RARE Protocol ERC1155 token. +/// @dev Extends the RARE `ITokenCreator` interface so marketplace and royalty infrastructure can resolve the collection creator. +interface IRareERC1155 is ITokenCreator, IERC2981Upgradeable { + /// @notice Per-token configuration for an ERC1155 edition. + struct TokenConfig { + /// @notice Maximum supply that may ever be minted for the token id. + uint256 maxSupply; + /// @notice Token-specific metadata URI. Falls back to the collection base URI when empty. + string tokenURI; + /// @notice Whether the token id has been created. + bool exists; + } + + /// @notice Emitted when the collection is disabled. + /// @param user Owner that disabled the collection. + event ContractDisabled(address indexed user); + + /// @notice Emitted when the owner creates a token type. + /// @param tokenId Newly created token id. + /// @param creator Collection owner reported as creator when the token id is created. + /// @param royaltyReceiver ERC2981 royalty receiver configured for the token id. + /// @param maxSupply Maximum supply configured for the token id. + /// @param tokenURI Token-specific metadata URI. + event TokenCreated( + uint256 indexed tokenId, + address indexed creator, + address indexed royaltyReceiver, + uint256 maxSupply, + string tokenURI + ); + + /// @notice Emitted when owner changes minter approval. + /// @param minter Address whose approval changed. + /// @param isMinter True when the address is approved to mint. + event MinterApprovalUpdated(address indexed minter, bool isMinter); + + /// @notice Reverted when a write operation is attempted after the collection has been disabled. + error ContractIsDisabled(); + + /// @notice Reverted when a token id has not been created. + /// @param _tokenId The missing token id. + error TokenDoesNotExist(uint256 _tokenId); + + /// @notice Reverted when an address parameter is the zero address. + error ZeroAddressUnsupported(); + + /// @notice Reverted when a caller is neither the collection owner nor an approved minter. + /// @param _caller The account that attempted to mint. + error CallerCannotMint(address _caller); + + /// @notice Reverted when a mint amount is zero. + error AmountCannotBeZero(); + + /// @notice Reverted when a token type is created with a zero max supply. + error MaxSupplyCannotBeZero(); + + /// @notice Reverted when minting would put a token id above its configured lifetime max supply. + /// @param _tokenId The token id being minted. + /// @param _requestedTotalMinted The post-mint lifetime minted supply that was requested. + /// @param _maxSupply The configured max supply for the token id. + error ExceededMaxSupply(uint256 _tokenId, uint256 _requestedTotalMinted, uint256 _maxSupply); + + /// @notice Reverted when a batch operation receives no items. + error EmptyBatch(); + + /// @notice Reverted when parallel batch arrays have different lengths. + error BatchLengthMismatch(); + + /// @notice Reverted when a batch exceeds the supported item count. + /// @param supplied Number of items supplied. + /// @param max Maximum supported item count. + error BatchSizeExceeded(uint256 supplied, uint256 max); + + /// @notice Reverted when token ids are not strictly ascending. + /// @param tokenId Token id that is not greater than the previous token id. + error TokenIdsNotStrictlyAscending(uint256 tokenId); + + /// @notice Reverted when the default royalty percentage is above 100%. + /// @param supplied Percentage supplied by the caller. + /// @param max Maximum supported percentage. + error RoyaltyPercentageTooHigh(uint256 supplied, uint256 max); + + /// @notice Maximum number of token ids accepted by public batch mint operations. + /// @return Maximum supported batch item count. + function MAX_BATCH_SIZE() external pure returns (uint256); + + /// @notice Returns the human-readable collection name. + /// @return Collection name. + function name() external view returns (string memory); + + /// @notice Returns the human-readable collection symbol. + /// @return Collection symbol. + function symbol() external view returns (string memory); + + /// @notice Returns whether owner-managed collection writes have been permanently disabled. + /// @return True when disabled. + function disabled() external view returns (bool); + + /// @notice Initializes a cloned ERC1155 collection. + /// @dev Intended to be called exactly once by the factory or deployer because the implementation uses OpenZeppelin initializers. + /// @param _name Human-readable collection name. + /// @param _symbol Human-readable collection symbol. + /// @param _baseURI Base ERC1155 URI used when a token id has no token-specific URI. + /// @param _creator Initial collection owner and ERC2981 royalty receiver. + /// @param _defaultMinter Optional minter approved during initialization. Use zero address for no default minter. + function init( + string calldata _name, + string calldata _symbol, + string calldata _baseURI, + address _creator, + address _defaultMinter + ) external; + + /// @notice Creates a new token type. + /// @param _tokenURI Metadata URI returned for the new token id. + /// @param _maxSupply Maximum supply that may ever be minted for the new token id. + /// @param _royaltyReceiver ERC2981 royalty receiver for the new token id. + /// @return The newly created token id. + function createToken(string calldata _tokenURI, uint256 _maxSupply, address _royaltyReceiver) + external + returns (uint256); + + /// @notice Mints one existing token id to a receiver. + /// @dev Callable by the owner or an approved minter only. This is a one-item wrapper over batch minting. + /// @param _receiver Address that receives the minted tokens. + /// @param _tokenId Existing token id to mint. + /// @param _amount Quantity to mint. + /// @return Minted token id. + function mintTo(address _receiver, uint256 _tokenId, uint256 _amount) external returns (uint256); + + /// @notice Mints existing token ids to a receiver. + /// @dev Callable by the owner or an approved minter only. Token ids must be strictly ascending. + /// Approved minters intentionally have collection-wide mint authority for any existing token id, + /// up to that token's max supply, so creators can approve a trusted marketplace contract once + /// instead of approving per token. Owners should only approve minters they trust to mint remaining + /// collection supply. + /// @param _receiver Address that receives the minted tokens. + /// @param _tokenIds Existing token ids to mint. + /// @param _amounts Quantities to mint for each token id. + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) external; + + /// @notice Grants or revokes collection-wide minter approval for an address. + /// @dev Approval is deliberately collection-wide rather than token-scoped to keep the creator UX + /// to a single marketplace approval. An approved minter can mint any existing token id to any + /// receiver until the token's max supply is reached. + /// @param _minter Address whose minter approval is being changed. + /// @param _isMinter Whether the address should be allowed to mint. + function setMinterApproval(address _minter, bool _isMinter) external; + + /// @notice Updates the ERC2981 royalty receiver for the fallback config and all existing token ids. + /// @dev Existing token-specific royalty percentages are preserved. + /// @param _receiver New collection-wide royalty receiver. + function setDefaultRoyaltyReceiver(address _receiver) external; + + /// @notice Updates the fallback ERC2981 royalty percentage. + /// @dev Tokens created before this update keep their token-specific royalty percentage. + /// @param _percentage New royalty percentage, expressed as whole percentage points. + function setDefaultRoyaltyPercentage(uint256 _percentage) external; + + /// @notice Updates the ERC2981 royalty receiver for one token id. + /// @dev The token's existing royalty percentage is preserved until a later collection-wide receiver update. + /// @param _tokenId Token id whose royalty receiver is updated. + /// @param _receiver New token-specific royalty receiver. + function setRoyaltyReceiverForToken(uint256 _tokenId, address _receiver) external; + + /// @notice Updates the token-specific metadata URI for an existing token id. + /// @param _tokenId Token id whose URI is updated. + /// @param _tokenURI New token-specific metadata URI. + function updateTokenURI(uint256 _tokenId, string calldata _tokenURI) external; + + /// @notice Permanently disables owner-managed write operations on the collection. + function disableContract() external; + + /// @notice Returns whether an address is approved to mint. + /// @param _address Address to inspect. + /// @return True when `_address` is an approved minter. + function isApprovedMinter(address _address) external view returns (bool); + + /// @notice Returns the configured max supply for a token id. + /// @param _tokenId Token id to inspect. + /// @return Maximum mintable supply. Returns zero for token ids that have not been created. + function maxSupplyForToken(uint256 _tokenId) external view returns (uint256); + + /// @notice Returns the lifetime quantity minted for a token id. + /// @dev Burns do not reduce this value. + /// @param _tokenId Token id to inspect. + /// @return Total quantity ever minted for the token id. + function totalMintedForToken(uint256 _tokenId) external view returns (uint256); + + /// @notice Returns the metadata URI for a token id. + /// @dev Returns a token-specific URI when set; otherwise returns the inherited ERC1155 base URI. + /// @param _tokenId Token id to inspect. + /// @return Metadata URI for the token id. + function uri(uint256 _tokenId) external view returns (string memory); +} diff --git a/src/token/ERC1155/IRareERC1155ContractFactory.sol b/src/token/ERC1155/IRareERC1155ContractFactory.sol new file mode 100644 index 0000000..8e591eb --- /dev/null +++ b/src/token/ERC1155/IRareERC1155ContractFactory.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +/// @author SuperRare Labs Inc. +/// @title IRareERC1155ContractFactory +/// @notice Interface for the RARE Protocol ERC1155 clone factory. +interface IRareERC1155ContractFactory { + /// @notice Reverted when an implementation address is the zero address. + error ZeroAddressUnsupported(); + + /// @notice Emitted when the factory creates and initializes a collection clone. + /// @param contractAddress Address of the newly created ERC1155 clone. + /// @param owner Initial owner of the clone. + event RareERC1155ContractCreated(address indexed contractAddress, address indexed owner); + + /// @notice Emitted when the owner changes the implementation cloned by the factory. + /// @param rareERC1155 New ERC1155 implementation address. + event RareERC1155Updated(address indexed rareERC1155); + + /// @notice Emitted when the owner changes the default minter for new clones. + /// @param defaultMinter New default minter address. Zero address disables default minter approval. + event DefaultMinterUpdated(address indexed defaultMinter); + + /// @notice Returns the ERC1155 implementation address cloned by the factory. + /// @return ERC1155 implementation address. + function rareERC1155() external view returns (address); + + /// @notice Returns the optional minter approved on each newly created collection. + /// @return Default minter address. Zero address means no default minter. + function defaultMinter() external view returns (address); + + /// @notice Updates the ERC1155 implementation address cloned by future factory calls. + /// @param _rareERC1155 Address of the replacement implementation. + function setRareERC1155(address _rareERC1155) external; + + /// @notice Updates the optional minter approved during clone initialization. + /// @param _defaultMinter Address approved to mint on newly created clones, or zero address for none. + function setDefaultMinter(address _defaultMinter) external; + + /// @notice Creates a new initialized ERC1155 collection clone. + /// @param _name Human-readable collection name. + /// @param _symbol Human-readable collection symbol. + /// @param _baseURI Base URI used by the collection when a token id has no token-specific URI. + /// @return clone Address of the newly created ERC1155 clone. + function createRareERC1155Contract(string calldata _name, string calldata _symbol, string calldata _baseURI) + external + returns (address clone); +} diff --git a/src/token/ERC1155/RareERC1155.sol b/src/token/ERC1155/RareERC1155.sol new file mode 100644 index 0000000..7285292 --- /dev/null +++ b/src/token/ERC1155/RareERC1155.sol @@ -0,0 +1,401 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {OwnableUpgradeable} from "openzeppelin-contracts-upgradeable/access/OwnableUpgradeable.sol"; +import {ERC1155Upgradeable} from "openzeppelin-contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol"; +import { + ERC1155BurnableUpgradeable +} from "openzeppelin-contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol"; +import { + ERC1155SupplyUpgradeable +} from "openzeppelin-contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol"; +import {ERC2981Upgradeable} from "openzeppelin-contracts-upgradeable/token/common/ERC2981Upgradeable.sol"; +import {IERC2981Upgradeable} from "openzeppelin-contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; +import {IERC165Upgradeable} from "openzeppelin-contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; + +import {ITokenCreator} from "../extensions/ITokenCreator.sol"; +import {IRareERC1155} from "./IRareERC1155.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155 +/// @notice Basic RARE Protocol ERC1155 collection with creator and royalty support. +/// @dev Clone-safe upgradeable-style implementation used behind minimal proxies. Token ids start at 1. +contract RareERC1155 is + IRareERC1155, + OwnableUpgradeable, + ERC1155Upgradeable, + ERC1155BurnableUpgradeable, + ERC1155SupplyUpgradeable, + ERC2981Upgradeable +{ + string public override name; + string public override symbol; + bool public override disabled; + + /// @notice Last created token id. + uint256 private tokenIdCounter; + + /// @inheritdoc IRareERC1155 + uint256 public constant MAX_BATCH_SIZE = 100; + + /// @notice Default ERC2981 royalty fee in whole percentage points. + uint256 private constant DEFAULT_ROYALTY_PERCENTAGE = 10; + + /// @notice Maximum ERC2981 royalty fee in whole percentage points. + uint256 private constant MAX_ROYALTY_PERCENTAGE = 100; + + /// @notice ERC2981 fee denominator uses basis points. + uint256 private constant BASIS_POINTS_PER_PERCENT = 100; + + /// @notice Token configuration by token id. + mapping(uint256 => TokenConfig) private tokenConfigs; + + /// @notice Approved minter status by account. + mapping(address => bool) private minterAddresses; + + /// @notice Lifetime minted quantity by token id. + mapping(uint256 => uint256) private tokenTotalMinted; + + /// @notice Collection-wide ERC2981 royalty receiver and fallback receiver for unknown token ids. + address private defaultRoyaltyReceiver; + + /// @notice Fallback ERC2981 royalty percentage, expressed as whole percentage points. + uint256 private defaultRoyaltyPercentage; + + /// @notice Token-specific ERC2981 royalty percentage, expressed as whole percentage points. + mapping(uint256 => uint256) private tokenRoyaltyPercentages; + + /// @notice Token-specific ERC2981 royalty receiver override by token id. + mapping(uint256 => address) private tokenRoyaltyReceivers; + + /// @notice Receiver revision when the token-specific receiver was last set. + mapping(uint256 => uint256) private tokenRoyaltyReceiverRevisions; + + /// @notice Collection-wide receiver revision, incremented whenever the default receiver changes. + uint256 private royaltyReceiverRevision; + + /// @notice Ensures the collection has not been disabled. + modifier ifNotDisabled() { + // Atomic guard: disabled collections reject owner-managed writes before any state changes. + if (disabled) revert ContractIsDisabled(); + _; + } + + /// @notice Ensures a token id has been created. + /// @param _tokenId Token id that must exist. + modifier tokenExists(uint256 _tokenId) { + // Atomic guard: missing token ids cannot be minted or updated. + if (!tokenConfigs[_tokenId].exists) revert TokenDoesNotExist(_tokenId); + _; + } + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + /// @inheritdoc IRareERC1155 + function init( + string calldata _name, + string calldata _symbol, + string calldata _baseURI, + address _creator, + address _defaultMinter + ) public initializer { + // Atomic guard: a collection must always have a non-zero owner and royalty receiver. + if (_creator == address(0)) revert ZeroAddressUnsupported(); + + // State write: store public collection metadata before ownership is transferred. + name = _name; + symbol = _symbol; + disabled = false; + + // Initializer call: set up inherited upgradeable storage for the clone. + __Ownable_init(); + __ERC1155_init(_baseURI); + __ERC1155Burnable_init(); + __ERC1155Supply_init(); + __ERC2981_init(); + + // State write: expose EIP-2981 royalties as 10% to the collection creator. + _setDefaultRoyaltyConfig(_creator, DEFAULT_ROYALTY_PERCENTAGE); + + if (_defaultMinter != address(0)) { + // State write: grant optional marketplace or minter approval at initialization. + minterAddresses[_defaultMinter] = true; + emit MinterApprovalUpdated(_defaultMinter, true); + } + + // Ownership transfer: hand the clone from the initializer caller to the intended creator. + _transferOwnership(_creator); + } + + /// @inheritdoc IRareERC1155 + function createToken(string calldata _tokenURI, uint256 _maxSupply, address _royaltyReceiver) + external + onlyOwner + ifNotDisabled + returns (uint256) + { + return _createToken(_tokenURI, _maxSupply, _royaltyReceiver); + } + + /// @inheritdoc IRareERC1155 + function mintTo(address _receiver, uint256 _tokenId, uint256 _amount) external ifNotDisabled returns (uint256) { + uint256[] memory tokenIds = new uint256[](1); + uint256[] memory amounts = new uint256[](1); + tokenIds[0] = _tokenId; + amounts[0] = _amount; + + _mintBatchTo(_receiver, tokenIds, amounts); + return _tokenId; + } + + /// @inheritdoc IRareERC1155 + function mintBatchTo(address _receiver, uint256[] calldata _tokenIds, uint256[] calldata _amounts) + external + ifNotDisabled + { + _mintBatchTo(_receiver, _tokenIds, _amounts); + } + + /// @notice Mints existing token ids to a receiver after shared mint validation. + /// @param _receiver Address that receives the minted tokens. + /// @param _tokenIds Existing token ids to mint. + /// @param _amounts Quantities to mint for each token id. + function _mintBatchTo(address _receiver, uint256[] memory _tokenIds, uint256[] memory _amounts) internal { + // Atomic guards: validate receiver, collection-wide minter authority, and batch shape before supply math. + // Approved minters are deliberately not token-scoped so creators can approve a trusted marketplace once. + if (_receiver == address(0)) revert ZeroAddressUnsupported(); + if (msg.sender != owner() && !minterAddresses[msg.sender]) revert CallerCannotMint(msg.sender); + _validateMintBatch(_tokenIds, _amounts); + + for (uint256 i = 0; i < _tokenIds.length;) { + uint256 tokenId = _tokenIds[i]; + if (!tokenConfigs[tokenId].exists) revert TokenDoesNotExist(tokenId); + if (_amounts[i] == 0) revert AmountCannotBeZero(); + + // Atomic lifetime supply check: burns must not reopen edition supply. + uint256 requestedTotalMinted = tokenTotalMinted[tokenId] + _amounts[i]; + uint256 maxSupply = tokenConfigs[tokenId].maxSupply; + if (requestedTotalMinted > maxSupply) revert ExceededMaxSupply(tokenId, requestedTotalMinted, maxSupply); + + // State write: record lifetime minted supply before the ERC1155 receiver hook can run. + tokenTotalMinted[tokenId] = requestedTotalMinted; + + unchecked { + ++i; + } + } + + // Token mint: OpenZeppelin ERC1155 updates balances, total supply, and emits TransferBatch. + _mintBatch(_receiver, _tokenIds, _amounts, ""); + } + + /// @inheritdoc IRareERC1155 + function setMinterApproval(address _minter, bool _isMinter) external onlyOwner ifNotDisabled { + // Atomic guard: zero address minter entries are never meaningful and cannot mint. + if (_minter == address(0)) revert ZeroAddressUnsupported(); + + // State write: update the collection-wide minter allowlist for future mint calls. + minterAddresses[_minter] = _isMinter; + emit MinterApprovalUpdated(_minter, _isMinter); + } + + /// @inheritdoc IRareERC1155 + function setDefaultRoyaltyReceiver(address _receiver) external onlyOwner ifNotDisabled { + _setDefaultRoyaltyConfig(_receiver, defaultRoyaltyPercentage); + unchecked { + ++royaltyReceiverRevision; + } + } + + /// @inheritdoc IRareERC1155 + function setDefaultRoyaltyPercentage(uint256 _percentage) external onlyOwner ifNotDisabled { + _setDefaultRoyaltyConfig(defaultRoyaltyReceiver, _percentage); + } + + /// @inheritdoc IRareERC1155 + function setRoyaltyReceiverForToken(uint256 _tokenId, address _receiver) + external + onlyOwner + ifNotDisabled + tokenExists(_tokenId) + { + _setTokenRoyaltyReceiver(_tokenId, _receiver); + } + + /// @inheritdoc IRareERC1155 + function updateTokenURI(uint256 _tokenId, string calldata _tokenURI) + external + onlyOwner + ifNotDisabled + tokenExists(_tokenId) + { + // State write: replace the token-specific metadata URI. + tokenConfigs[_tokenId].tokenURI = _tokenURI; + + // ERC1155 metadata signal: notify indexers of the new URI. + emit URI(_tokenURI, _tokenId); + } + + /// @inheritdoc IRareERC1155 + function disableContract() external onlyOwner { + // State write: permanently stop owner-managed writes guarded by ifNotDisabled. + disabled = true; + emit ContractDisabled(msg.sender); + } + + /// @inheritdoc ITokenCreator + function tokenCreator(uint256) public view override(ITokenCreator) returns (address payable) { + return payable(owner()); + } + + /// @notice Prevents the collection owner, and therefore creator proxy, from becoming the zero address. + function renounceOwnership() public view override onlyOwner { + revert ZeroAddressUnsupported(); + } + + /// @inheritdoc IRareERC1155 + function isApprovedMinter(address _address) external view returns (bool) { + return minterAddresses[_address]; + } + + /// @inheritdoc IRareERC1155 + function maxSupplyForToken(uint256 _tokenId) external view returns (uint256) { + return tokenConfigs[_tokenId].maxSupply; + } + + /// @inheritdoc IRareERC1155 + function totalMintedForToken(uint256 _tokenId) external view returns (uint256) { + return tokenTotalMinted[_tokenId]; + } + + /// @inheritdoc IRareERC1155 + function uri(uint256 _tokenId) public view override(ERC1155Upgradeable, IRareERC1155) returns (string memory) { + string memory tokenURI = tokenConfigs[_tokenId].tokenURI; + return bytes(tokenURI).length > 0 ? tokenURI : super.uri(_tokenId); + } + + /// @inheritdoc IERC2981Upgradeable + function royaltyInfo(uint256 _tokenId, uint256 _salePrice) + public + view + override(ERC2981Upgradeable, IERC2981Upgradeable) + returns (address, uint256) + { + uint256 royaltyPercentage = + tokenConfigs[_tokenId].exists ? tokenRoyaltyPercentages[_tokenId] : defaultRoyaltyPercentage; + address royaltyReceiver = defaultRoyaltyReceiver; + address tokenRoyaltyReceiver = tokenRoyaltyReceivers[_tokenId]; + + if (tokenRoyaltyReceiverRevisions[_tokenId] == royaltyReceiverRevision && tokenRoyaltyReceiver != address(0)) { + royaltyReceiver = tokenRoyaltyReceiver; + } + + uint256 royaltyAmount = (_salePrice * royaltyPercentage * BASIS_POINTS_PER_PERCENT) / _feeDenominator(); + return (royaltyReceiver, royaltyAmount); + } + + /// @inheritdoc IERC165Upgradeable + function supportsInterface(bytes4 _interfaceId) + public + view + override(ERC1155Upgradeable, ERC2981Upgradeable, IERC165Upgradeable) + returns (bool) + { + return _interfaceId == type(IRareERC1155).interfaceId || _interfaceId == type(ITokenCreator).interfaceId + || super.supportsInterface(_interfaceId); + } + + /// @notice Creates a token id and configures token state. + /// @param _tokenURI Token-specific metadata URI. + /// @param _maxSupply Maximum supply for the token id. + /// @param _royaltyReceiver ERC2981 royalty receiver for the token id. + /// @return tokenId Newly created token id. + function _createToken(string calldata _tokenURI, uint256 _maxSupply, address _royaltyReceiver) + internal + returns (uint256) + { + // Atomic guard: token ids must be mintable. + if (_maxSupply == 0) revert MaxSupplyCannotBeZero(); + if (_royaltyReceiver == address(0)) revert ZeroAddressUnsupported(); + + // State write: advance the monotonically increasing token id counter. + tokenIdCounter++; + uint256 tokenId = tokenIdCounter; + + // State writes: register token constraints and royalty configuration. + tokenConfigs[tokenId] = TokenConfig(_maxSupply, _tokenURI, true); + tokenRoyaltyPercentages[tokenId] = defaultRoyaltyPercentage; + tokenRoyaltyReceivers[tokenId] = _royaltyReceiver; + tokenRoyaltyReceiverRevisions[tokenId] = royaltyReceiverRevision; + + // Metadata and domain events: expose the new URI and token config to indexers. + emit URI(_tokenURI, tokenId); + emit TokenCreated(tokenId, owner(), _royaltyReceiver, _maxSupply, _tokenURI); + + return tokenId; + } + + /// @notice Updates fallback ERC2981 royalty config used for future percentage and receiver changes. + /// @param _receiver Royalty receiver address. + /// @param _percentage Royalty percentage, expressed as whole percentage points. + function _setDefaultRoyaltyConfig(address _receiver, uint256 _percentage) internal { + if (_receiver == address(0)) revert ZeroAddressUnsupported(); + if (_percentage > MAX_ROYALTY_PERCENTAGE) { + revert RoyaltyPercentageTooHigh(_percentage, MAX_ROYALTY_PERCENTAGE); + } + + defaultRoyaltyReceiver = _receiver; + defaultRoyaltyPercentage = _percentage; + _setDefaultRoyalty(_receiver, uint96(_percentage * BASIS_POINTS_PER_PERCENT)); + } + + /// @notice Updates a token-specific ERC2981 royalty receiver. + /// @param _tokenId Token id whose receiver should be updated. + /// @param _receiver Royalty receiver address. + function _setTokenRoyaltyReceiver(uint256 _tokenId, address _receiver) internal { + if (_receiver == address(0)) revert ZeroAddressUnsupported(); + + tokenRoyaltyReceivers[_tokenId] = _receiver; + tokenRoyaltyReceiverRevisions[_tokenId] = royaltyReceiverRevision; + } + + /// @notice Validates batch mint input shape and token id ordering. + /// @param _tokenIds Token ids requested by the caller. + /// @param _amounts Amounts requested by the caller. + function _validateMintBatch(uint256[] memory _tokenIds, uint256[] memory _amounts) internal pure { + if (_tokenIds.length == 0) revert EmptyBatch(); + if (_tokenIds.length != _amounts.length) revert BatchLengthMismatch(); + if (_tokenIds.length > MAX_BATCH_SIZE) revert BatchSizeExceeded(_tokenIds.length, MAX_BATCH_SIZE); + + for (uint256 i = 1; i < _tokenIds.length;) { + if (_tokenIds[i] <= _tokenIds[i - 1]) revert TokenIdsNotStrictlyAscending(_tokenIds[i]); + + unchecked { + ++i; + } + } + } + + /// @notice Hook called by OpenZeppelin before ERC1155 token transfers, mints, and burns. + /// @dev Delegates to `ERC1155SupplyUpgradeable` so total supply accounting stays correct. + /// @param _operator Operator executing the transfer. + /// @param _from Source address. Zero address indicates mint. + /// @param _to Destination address. Zero address indicates burn. + /// @param _ids Token ids being transferred. + /// @param _amounts Amounts being transferred for each token id. + /// @param _data Additional transfer data. + function _beforeTokenTransfer( + address _operator, + address _from, + address _to, + uint256[] memory _ids, + uint256[] memory _amounts, + bytes memory _data + ) internal override(ERC1155Upgradeable, ERC1155SupplyUpgradeable) { + // Hook delegation: inherited supply extension performs atomic total-supply updates. + super._beforeTokenTransfer(_operator, _from, _to, _ids, _amounts, _data); + } +} diff --git a/src/token/ERC1155/RareERC1155ContractFactory.sol b/src/token/ERC1155/RareERC1155ContractFactory.sol new file mode 100644 index 0000000..cae6cbf --- /dev/null +++ b/src/token/ERC1155/RareERC1155ContractFactory.sol @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {Ownable} from "openzeppelin-contracts/access/Ownable.sol"; +import {Clones} from "openzeppelin-contracts/proxy/Clones.sol"; + +import {IRareERC1155ContractFactory} from "./IRareERC1155ContractFactory.sol"; +import {RareERC1155} from "./RareERC1155.sol"; + +/// @author SuperRare Labs Inc. +/// @title RareERC1155ContractFactory +/// @notice Clone factory for RARE Protocol ERC1155 collections. +/// @dev Deploys EIP-1167 minimal proxies initialized with the caller as collection owner. +contract RareERC1155ContractFactory is IRareERC1155ContractFactory, Ownable { + address public override rareERC1155; + address public override defaultMinter; + + /// @notice Deploys the initial ERC1155 implementation used for clones. + constructor() { + // Deployment operation: create the clone implementation controlled by the factory owner. + rareERC1155 = address(new RareERC1155()); + } + + /// @inheritdoc IRareERC1155ContractFactory + function setRareERC1155(address _rareERC1155) external onlyOwner { + // Atomic guard: clone implementation cannot be the zero address. + if (_rareERC1155 == address(0)) revert ZeroAddressUnsupported(); + + // State write: future clones use the new implementation. + rareERC1155 = _rareERC1155; + emit RareERC1155Updated(_rareERC1155); + } + + /// @inheritdoc IRareERC1155ContractFactory + function setDefaultMinter(address _defaultMinter) external onlyOwner { + // State write: future clones inherit this minter approval during initialization. + defaultMinter = _defaultMinter; + emit DefaultMinterUpdated(_defaultMinter); + } + + /// @inheritdoc IRareERC1155ContractFactory + function createRareERC1155Contract(string calldata _name, string calldata _symbol, string calldata _baseURI) + external + returns (address) + { + // Clone operation: deploy a minimal proxy that delegates to the current implementation. + address clone = Clones.clone(rareERC1155); + + // Initialization call: set clone metadata, owner, and optional default minter. + RareERC1155(clone).init(_name, _symbol, _baseURI, msg.sender, defaultMinter); + + emit RareERC1155ContractCreated(clone, msg.sender); + + return clone; + } +} diff --git a/src/v2/approver/ERC1155/ERC1155ApprovalManager.sol b/src/v2/approver/ERC1155/ERC1155ApprovalManager.sol new file mode 100644 index 0000000..7c3f1cb --- /dev/null +++ b/src/v2/approver/ERC1155/ERC1155ApprovalManager.sol @@ -0,0 +1,100 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; +import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; + +import {IERC1155ApprovalManager} from "./IERC1155ApprovalManager.sol"; + +/// @title ERC1155ApprovalManager +/// @notice A central approval manager for ERC1155 tokens that allows whitelisted contracts to transfer tokens. +/// @dev Users approve this manager on ERC1155 collections, and operator contracts execute transfers through it. +contract ERC1155ApprovalManager is IERC1155ApprovalManager, AccessControl { + /// @notice Role for managing operators. + bytes32 public constant MANAGER_ROLE = keccak256("MANAGER_ROLE"); + + /// @notice Role for contracts allowed to transfer tokens. + bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE"); + + /// @notice Whether the contract is disabled. + bool public override disabled; + + /// @notice Grants deployer admin and manager roles. + constructor() { + // Role setup: deployer receives admin authority for AccessControl role administration. + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); + + // Role setup: deployer receives explicit manager authority for this manager's admin methods. + _grantRole(MANAGER_ROLE, msg.sender); + + // State write: initialize transfer execution as enabled. + disabled = false; + } + + /// @notice Modifier to check if contract is not disabled. + modifier whenNotDisabled() { + // Atomic guard: disabled managers reject transfer execution before external token calls. + if (disabled) revert ContractDisabledError(); + _; + } + + /// @inheritdoc IERC1155ApprovalManager + function disable() external onlyRole(MANAGER_ROLE) { + // State write: permanently disable future transfer execution. + disabled = true; + emit ContractDisabled(msg.sender); + } + + /// @inheritdoc IERC1155ApprovalManager + function grantOperatorRole(address operator) external onlyRole(MANAGER_ROLE) { + // Role write: authorize one marketplace/operator contract to execute ERC1155 transfers. + _grantRole(OPERATOR_ROLE, operator); + } + + /// @inheritdoc IERC1155ApprovalManager + function revokeOperatorRole(address operator) external onlyRole(MANAGER_ROLE) { + // Role write: remove ERC1155 transfer authority from one operator contract. + _revokeRole(OPERATOR_ROLE, operator); + } + + /// @inheritdoc IERC1155ApprovalManager + function batchGrantOperatorRole(address[] calldata operators) external onlyRole(MANAGER_ROLE) { + for (uint256 i = 0; i < operators.length; i++) { + // Role write: authorize the current operator address in the batch. + _grantRole(OPERATOR_ROLE, operators[i]); + } + } + + /// @inheritdoc IERC1155ApprovalManager + function batchRevokeOperatorRole(address[] calldata operators) external onlyRole(MANAGER_ROLE) { + for (uint256 i = 0; i < operators.length; i++) { + // Role write: revoke the current operator address in the batch. + _revokeRole(OPERATOR_ROLE, operators[i]); + } + } + + /// @inheritdoc IERC1155ApprovalManager + function safeTransferFrom(address token, address from, address to, uint256 id, uint256 amount, bytes calldata data) + external + whenNotDisabled + onlyRole(OPERATOR_ROLE) + { + // External token call: token contract enforces holder approval, balance, and receiver acceptance. + IERC1155 erc1155 = IERC1155(token); + erc1155.safeTransferFrom(from, to, id, amount, data); + } + + /// @inheritdoc IERC1155ApprovalManager + function safeBatchTransferFrom( + address token, + address from, + address to, + uint256[] calldata ids, + uint256[] calldata amounts, + bytes calldata data + ) external whenNotDisabled onlyRole(OPERATOR_ROLE) { + // External token call: token contract enforces holder approval, balances, and receiver acceptance. + IERC1155 erc1155 = IERC1155(token); + erc1155.safeBatchTransferFrom(from, to, ids, amounts, data); + } +} diff --git a/src/v2/approver/ERC1155/IERC1155ApprovalManager.sol b/src/v2/approver/ERC1155/IERC1155ApprovalManager.sol new file mode 100644 index 0000000..ed83bd6 --- /dev/null +++ b/src/v2/approver/ERC1155/IERC1155ApprovalManager.sol @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +/// @title IERC1155ApprovalManager +/// @notice Interface for managing ERC1155 token approvals and transfers. +interface IERC1155ApprovalManager { + /// @notice Error thrown when caller is not an operator. + error NotOperator(); + + /// @notice Error thrown when contract is disabled. + error ContractDisabledError(); + + /// @notice Event emitted when contract is disabled. + /// @param disabler The manager that disabled the approval manager. + event ContractDisabled(address indexed disabler); + + /// @notice Returns whether the approval manager is permanently disabled. + /// @return True when token transfer execution is disabled. + function disabled() external view returns (bool); + + /// @notice Disables token transfers through the approval manager permanently. + /// @dev Callable by an account with the manager role. + function disable() external; + + /// @notice Grants operator transfer permissions to a contract. + /// @param operator The contract address to grant the role to. + function grantOperatorRole(address operator) external; + + /// @notice Revokes operator transfer permissions from a contract. + /// @param operator The contract address to revoke the role from. + function revokeOperatorRole(address operator) external; + + /// @notice Grants operator transfer permissions to multiple contracts. + /// @param operators Contract addresses to grant the role to. + function batchGrantOperatorRole(address[] calldata operators) external; + + /// @notice Revokes operator transfer permissions from multiple contracts. + /// @param operators Contract addresses to revoke the role from. + function batchRevokeOperatorRole(address[] calldata operators) external; + + /// @notice Safely transfer ERC1155 tokens from a user to a recipient. + /// @param token The ERC1155 token contract address. + /// @param from The address to transfer from. + /// @param to The recipient address. + /// @param id The token id to transfer. + /// @param amount The amount of tokens to transfer. + /// @param data Additional data with no specified format. + function safeTransferFrom(address token, address from, address to, uint256 id, uint256 amount, bytes calldata data) + external; + + /// @notice Safely transfer a batch of ERC1155 tokens from a user to a recipient. + /// @param token The ERC1155 token contract address. + /// @param from The address to transfer from. + /// @param to The recipient address. + /// @param ids The token ids to transfer. + /// @param amounts The amounts of each token id to transfer. + /// @param data Additional data with no specified format. + function safeBatchTransferFrom( + address token, + address from, + address to, + uint256[] calldata ids, + uint256[] calldata amounts, + bytes calldata data + ) external; +}