UNPKG

@settlemint/solidity-attestation-service

Version:
1,195 lines (1,193 loc) 104 kB
// This file was autogenerated by hardhat-viem, do not edit it. // prettier-ignore // tslint:disable // eslint-disable import type { Address } from "viem"; import type { AbiParameterToPrimitiveType, GetContractReturnType } from "@nomicfoundation/hardhat-viem/types"; import "@nomicfoundation/hardhat-viem/types"; export interface CustomEAS$Type { "_format": "hh-sol-artifact-1", "contractName": "CustomEAS", "sourceName": "contracts/CustomEAS.sol", "abi": [ { "inputs": [ { "internalType": "contract ISchemaRegistry", "name": "registry", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessDenied", "type": "error" }, { "inputs": [], "name": "AlreadyRevoked", "type": "error" }, { "inputs": [], "name": "AlreadyRevokedOffchain", "type": "error" }, { "inputs": [], "name": "AlreadyTimestamped", "type": "error" }, { "inputs": [], "name": "DeadlineExpired", "type": "error" }, { "inputs": [], "name": "FailedCall", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InsufficientValue", "type": "error" }, { "inputs": [], "name": "InvalidAttestation", "type": "error" }, { "inputs": [], "name": "InvalidAttestations", "type": "error" }, { "inputs": [], "name": "InvalidExpirationTime", "type": "error" }, { "inputs": [], "name": "InvalidLength", "type": "error" }, { "inputs": [], "name": "InvalidNonce", "type": "error" }, { "inputs": [], "name": "InvalidOffset", "type": "error" }, { "inputs": [], "name": "InvalidRegistry", "type": "error" }, { "inputs": [], "name": "InvalidRevocation", "type": "error" }, { "inputs": [], "name": "InvalidRevocations", "type": "error" }, { "inputs": [], "name": "InvalidSchema", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [], "name": "InvalidSignature", "type": "error" }, { "inputs": [], "name": "InvalidVerifier", "type": "error" }, { "inputs": [], "name": "Irrevocable", "type": "error" }, { "inputs": [], "name": "NotFound", "type": "error" }, { "inputs": [], "name": "NotPayable", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [], "name": "WrongSchema", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": true, "internalType": "address", "name": "attester", "type": "address" }, { "indexed": false, "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "schemaUID", "type": "bytes32" } ], "name": "Attested", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldNonce", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newNonce", "type": "uint256" } ], "name": "NonceIncreased", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": true, "internalType": "address", "name": "attester", "type": "address" }, { "indexed": false, "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "schemaUID", "type": "bytes32" } ], "name": "Revoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "revoker", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "data", "type": "bytes32" }, { "indexed": true, "internalType": "uint64", "name": "timestamp", "type": "uint64" } ], "name": "RevokedOffchain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "data", "type": "bytes32" }, { "indexed": true, "internalType": "uint64", "name": "timestamp", "type": "uint64" } ], "name": "Timestamped", "type": "event" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "expirationTime", "type": "uint64" }, { "internalType": "bool", "name": "revocable", "type": "bool" }, { "internalType": "bytes32", "name": "refUID", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct AttestationRequestData", "name": "data", "type": "tuple" } ], "internalType": "struct AttestationRequest", "name": "request", "type": "tuple" } ], "name": "attest", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "expirationTime", "type": "uint64" }, { "internalType": "bool", "name": "revocable", "type": "bool" }, { "internalType": "bytes32", "name": "refUID", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct AttestationRequestData", "name": "data", "type": "tuple" }, { "components": [ { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "internalType": "struct Signature", "name": "signature", "type": "tuple" }, { "internalType": "address", "name": "attester", "type": "address" }, { "internalType": "uint64", "name": "deadline", "type": "uint64" } ], "internalType": "struct DelegatedAttestationRequest", "name": "delegatedRequest", "type": "tuple" } ], "name": "attestByDelegation", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAttestTypeHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" } ], "name": "getAttestation", "outputs": [ { "components": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "internalType": "uint64", "name": "time", "type": "uint64" }, { "internalType": "uint64", "name": "expirationTime", "type": "uint64" }, { "internalType": "uint64", "name": "revocationTime", "type": "uint64" }, { "internalType": "bytes32", "name": "refUID", "type": "bytes32" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "address", "name": "attester", "type": "address" }, { "internalType": "bool", "name": "revocable", "type": "bool" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "internalType": "struct Attestation", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDomainSeparator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getName", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "revoker", "type": "address" }, { "internalType": "bytes32", "name": "data", "type": "bytes32" } ], "name": "getRevokeOffchain", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRevokeTypeHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getSchemaRegistry", "outputs": [ { "internalType": "contract ISchemaRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "data", "type": "bytes32" } ], "name": "getTimestamp", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNonce", "type": "uint256" } ], "name": "increaseNonce", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" } ], "name": "isAttestationValid", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "expirationTime", "type": "uint64" }, { "internalType": "bool", "name": "revocable", "type": "bool" }, { "internalType": "bytes32", "name": "refUID", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct AttestationRequestData[]", "name": "data", "type": "tuple[]" } ], "internalType": "struct MultiAttestationRequest[]", "name": "multiRequests", "type": "tuple[]" } ], "name": "multiAttest", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "expirationTime", "type": "uint64" }, { "internalType": "bool", "name": "revocable", "type": "bool" }, { "internalType": "bytes32", "name": "refUID", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct AttestationRequestData[]", "name": "data", "type": "tuple[]" }, { "components": [ { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "internalType": "struct Signature[]", "name": "signatures", "type": "tuple[]" }, { "internalType": "address", "name": "attester", "type": "address" }, { "internalType": "uint64", "name": "deadline", "type": "uint64" } ], "internalType": "struct MultiDelegatedAttestationRequest[]", "name": "multiDelegatedRequests", "type": "tuple[]" } ], "name": "multiAttestByDelegation", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct RevocationRequestData[]", "name": "data", "type": "tuple[]" } ], "internalType": "struct MultiRevocationRequest[]", "name": "multiRequests", "type": "tuple[]" } ], "name": "multiRevoke", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct RevocationRequestData[]", "name": "data", "type": "tuple[]" }, { "components": [ { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "internalType": "struct Signature[]", "name": "signatures", "type": "tuple[]" }, { "internalType": "address", "name": "revoker", "type": "address" }, { "internalType": "uint64", "name": "deadline", "type": "uint64" } ], "internalType": "struct MultiDelegatedRevocationRequest[]", "name": "multiDelegatedRequests", "type": "tuple[]" } ], "name": "multiRevokeByDelegation", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "data", "type": "bytes32[]" } ], "name": "multiRevokeOffchain", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "data", "type": "bytes32[]" } ], "name": "multiTimestamp", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct RevocationRequestData", "name": "data", "type": "tuple" } ], "internalType": "struct RevocationRequest", "name": "request", "type": "tuple" } ], "name": "revoke", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct RevocationRequestData", "name": "data", "type": "tuple" }, { "components": [ { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "internalType": "struct Signature", "name": "signature", "type": "tuple" }, { "internalType": "address", "name": "revoker", "type": "address" }, { "internalType": "uint64", "name": "deadline", "type": "uint64" } ], "internalType": "struct DelegatedRevocationRequest", "name": "delegatedRequest", "type": "tuple" } ], "name": "revokeByDelegation", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "data", "type": "bytes32" } ], "name": "revokeOffchain", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "data", "type": "bytes32" } ], "name": "timestamp", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x6101e0806040523461033b57602081614bd580380380916100208285610340565b83398101031261033b57516001600160a01b0381169081810361033b576040519161004c604084610340565b60038352602083016245415360e81b81526040519061006c604083610340565b600582526020820190640312e332e360dc1b82526001608052600360a052600060c05261009886610363565b610180526100a58361050f565b6101a05285519020918261014052519020806101605246610100526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261011160c082610340565b51902060e052306101205282516001600160401b03811161032557600254600181811c9116801561031b575b602082101461030557601f81116102a0575b506020601f8211600114610239578192939460009261022e575b50508160011b916000199060031b1c1916176002555b1561021d576101c05260405161452790816106ae823960805181610900015260a0518161092e015260c05181610959015260e05181613840015261010051816138fd015261012051816138110152610140518161388f015261016051816138b50152610180518161077a01526101a051816107a601526101c0518181816101e901528181611f2301528181612254015281816126b00152612e300152f35b6311a1e69760e01b60005260046000fd5b015190503880610169565b601f198216906002600052806000209160005b8181106102885750958360019596971061026f575b505050811b0160025561017f565b015160001960f88460031b161c19169055388080610261565b9192602060018192868b01518155019401920161024c565b60026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f830160051c810191602084106102fb575b601f0160051c01905b8181106102ef575061014f565b600081556001016102e2565b90915081906102d9565b634e487b7160e01b600052602260045260246000fd5b90607f169061013d565b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b0382119082101761032557604052565b908151602081106000146103fb575090601f81511161039f57602081519101516020821061038f571790565b6000198260200360031b1b161790565b6040519063305a27a960e01b8252602060048301528181519182602483015260005b8381106103e35750508160006044809484010152601f80199101168101030190fd5b602082820181015160448784010152859350016103c1565b6001600160401b03811161032557600054600181811c91168015610505575b602082101461030557601f81116104d0575b50602092601f821160011461046c5792819293600092610461575b50508160011b916000199060031b1c19161760005560ff90565b015190503880610447565b601f1982169360008052806000209160005b8681106104b8575083600195961061049f575b505050811b0160005560ff90565b015160001960f88460031b161c19169055388080610491565b9192602060018192868501518155019401920161047e565b60008052601f6020600020910160051c810190601f830160051c015b8181106104f9575061042c565b600081556001016104ec565b90607f169061041a565b90815160208110600014610597575090601f81511161053b57602081519101516020821061038f571790565b6040519063305a27a960e01b8252602060048301528181519182602483015260005b83811061057f5750508160006044809484010152601f80199101168101030190fd5b6020828201810151604487840101528593500161055d565b6001600160401b03811161032557600154600181811c911680156106a3575b602082101461030557601f811161066d575b50602092601f821160011461060857928192936000926105fd575b50508160011b916000199060031b1c19161760015560ff90565b0151905038806105e3565b601f198216936001600052806000209160005b868110610655575083600195961061063c575b505050811b0160015560ff90565b015160001960f88460031b161c1916905538808061062e565b9192602060018192868501518155019401920161061b565b6001600052601f6020600020910160051c810190601f830160051c015b81811061069757506105c8565b6000815560010161068a565b90607f16906105b656fe6080604052600436101561001257600080fd5b60003560e01c80630eabf66014610f1a57806312b11a1714610edf57806313893f6114610e6d57806317d7de7c14610d825780632d0335ab14610d3b5780633c04271514610c4957806344adc90e14610b6e5780634692626714610b2e5780634cb7e9e514610a5b5780634d00307014610a3157806354fd4d50146108e757806379f7573a1461085057806384b0196e146107625780639541152514610520578063a3112a64146104d3578063a6d4dbc7146103d2578063b469318d14610373578063b83010d314610338578063cf190f341461030d578063d45c4435146102d7578063e30bb563146102a1578063e71ff36514610230578063ed24911d1461020d578063f10b5cc8146101bc5763f17325e71461012f57600080fd5b60206003193601126101b75760043567ffffffffffffffff81116101b75780600401604060031983360301126101b75760206101a781936101ae936101896101756117d4565b9261018460243692018461183f565b611716565b61019283611598565b5261019c82611598565b503491339135612641565b0151611598565b51604051908152f35b600080fd5b346101b75760006003193601126101b757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b75760006003193601126101b75760206102286137fa565b604051908152f35b346101b75760206003193601126101b75760043567ffffffffffffffff81116101b75761026190369060040161113b565b9067ffffffffffffffff42169160005b81811061028357602084604051908152f35b8061029b8561029560019486886115f5565b356135bf565b01610271565b346101b75760206003193601126101b75760206102cd6004356000526004602052604060002054151590565b6040519015158152f35b346101b75760206003193601126101b7576004356000526005602052602067ffffffffffffffff60406000205416604051908152f35b346101b75760206003193601126101b757602067ffffffffffffffff4216610228816004353361241b565b346101b75760006003193601126101b75760206040517fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e758152f35b346101b75760406003193601126101b75773ffffffffffffffffffffffffffffffffffffffff6103a16111b4565b1660005260066020526040600020602435600052602052602067ffffffffffffffff60406000205416604051908152f35b6101006003193601126101b7576040516103eb81611396565b6004358082526103fa3661148d565b602083015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c3601126101b757604051610435816113fd565b60643560ff811681036101b7578152608435602082015260a4356040820152604083015260c43573ffffffffffffffffffffffffffffffffffffffff811681036101b75780606084015260e43567ffffffffffffffff811681036101b757836104a59160806104d1960152611bd5565b6104ad6119dc565b6104b63661148d565b6104bf82611598565b526104c981611598565b503492611ed7565b005b346101b75760206003193601126101b7576104ec611ab0565b50600435600052600460205261051c6105086040600020611b03565b604051918291602083526020830190611266565b0390f35b60206003193601126101b75760043567ffffffffffffffff81116101b75761054c90369060040161113b565b61055581611893565b9060009234916000916000198201925b8281106105855761051c6105798888613554565b604051918291826111f8565b919395909294610596838686611327565b966105a4602089018961191c565b90958115801561074a575b6107205760808a0135979060005b838110156106b25760008c6105e56105da8460051b8d018d61183f565b916040810190611a5c565b849291921015610685576105fb8f606001611872565b928d67ffffffffffffffff811603610682575073ffffffffffffffffffffffffffffffffffffffff8f919361065c61067c9461064b600198976040519661064188611396565b3587523690611716565b602086015236906060880201611545565b604084015216606082015267ffffffffffffffff8d1660808201526124f0565b016105bd565b80fd5b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b50959989985083976106f69296946020946106ed936106e68f9e60019a9f14946106de60608401611872565b933691611970565b9035612dbe565b968751906115b9565b950180516107048a8a6115a5565b5261070f89896115a5565b505151019601939293919091610565565b7f947d5a840000000000000000000000000000000000000000000000000000000060005260046000fd5b5061075860408b018b611a5c565b90508214156105af565b346101b75760006003193601126101b75760e061079e7f0000000000000000000000000000000000000000000000000000000000000000614041565b61051c6107ca7f00000000000000000000000000000000000000000000000000000000000000006140bf565b9161082f602093610821604051936107e28786611452565b6000855260003681376040519788977f0f00000000000000000000000000000000000000000000000000000000000000895288015260e087019061118f565b90858203604087015261118f565b90466060850152306080850152600060a085015283820360c0850152611232565b346101b75760206003193601126101b75760043533600052600360205260406000205490818111156108bd577f57b09af877df9068fd60a69d7b21f5576b8b38955812d6ae4ac52942f1e38fb79160409133600052600360205280836000205582519182526020820152a1005b7f756688fe0000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b75760006003193601126101b75761051c6109247f0000000000000000000000000000000000000000000000000000000000000000613672565b610a1d60016109527f0000000000000000000000000000000000000000000000000000000000000000613672565b928161097d7f0000000000000000000000000000000000000000000000000000000000000000613672565b60206040519684610997899651809285808a01910161116c565b85017f2e00000000000000000000000000000000000000000000000000000000000000838201526109d1825180938560218501910161116c565b01017f2e0000000000000000000000000000000000000000000000000000000000000083820152610a0c82518093602060028501910161116c565b01010301601f198101835282611452565b60405191829160208352602083019061118f565b346101b75760206003193601126101b757602067ffffffffffffffff4216610228816004356135bf565b60206003193601126101b75760043567ffffffffffffffff81116101b757610a8790369060040161113b565b60001981019190600090345b818310610a9c57005b610aa78383866118dc565b60208101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156101b75781019182359267ffffffffffffffff84116101b757602001928060061b360384136101b75760019382610b2092610b2695610b198c8b1494339336916114d3565b9035612207565b906115b9565b920191610a93565b60606003193601126101b7576104d1610b456119dc565b610b4e3661148d565b610b5782611598565b52610b6181611598565b5034903390600435611ed7565b60206003193601126101b75760043567ffffffffffffffff81116101b757610b9a90369060040161113b565b90610ba482611893565b9160009134906000926000198101905b808510610bc85761051c6105798789613554565b9091929394610bd88683866118dc565b906020820191610be8838261191c565b90501561072057610c21610c18898988856106e6610c0a60019a60209961191c565b939095149433933691611970565b978851906115b9565b96018051610c2f898b6115a5565b52610c3a888a6115a5565b50515101950193929190610bb4565b60206003193601126101b75760043567ffffffffffffffff81116101b757806004019060e060031982360301126101b757604051610c8681611396565b823592838252602483019384359467ffffffffffffffff86116101b757610d336101ae95610d1a6101a795610d0760209a98610cc98c9a60043691880101611716565b8a820152610cda3660448701611545565b6040820152610cfd60c460a4870196610cf2886111d7565b606085015201611583565b60808201526124f0565b610184610d126117d4565b95369261183f565b610d2384611598565b52610d2d83611598565b50611872565b903492612641565b346101b75760206003193601126101b75773ffffffffffffffffffffffffffffffffffffffff610d696111b4565b1660005260036020526020604060002054604051908152f35b346101b75760006003193601126101b7576040516000600254610da481611605565b8084529060018116908115610e2b5750600114610dcc575b61051c83610a1d81850382611452565b600260009081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b808210610e1157509091508101602001610a1d610dbc565b919260018160209254838588010152019101909291610df9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b84019091019150610a1d9050610dbc565b346101b75760206003193601126101b75760043567ffffffffffffffff81116101b757610e9e90369060040161113b565b9067ffffffffffffffff42169160005b818110610ec057602084604051908152f35b80610ed985610ed260019486886115f5565b353361241b565b01610eae565b346101b75760006003193601126101b75760206040517ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880768152f35b60206003193601126101b75760043567ffffffffffffffff81116101b757610f4690369060040161113b565b600019810191600091345b818410610f5a57005b610f65848385611327565b60a0813603126101b757604051610f7b81611396565b81358152602082013567ffffffffffffffff81116101b757820136601f820112156101b757610fb19036906020813591016114d3565b9060208101918252604083013567ffffffffffffffff81116101b757830136601f820112156101b757803590610fe682611475565b91610ff46040519384611452565b808352602060608185019202830101913683116101b757602001905b82821061112157505050604082018181526110406080611032606088016111d7565b966060860197885201611583565b936080840194855251938451928315908115611115575b506107205760005b8381106110a2575050505061109a928460019593610b2093519073ffffffffffffffffffffffffffffffffffffffff8c8c1494511691612207565b930192610f51565b60019061110f86516110b4838a6115a5565b516110c08488516115a5565b5173ffffffffffffffffffffffffffffffffffffffff8c51169067ffffffffffffffff88511692604051946110f486611396565b85526020850152604084015260608301526080820152611bd5565b0161105f565b9050518314158c611057565b60206060916111303685611545565b815201910190611010565b9181601f840112156101b75782359167ffffffffffffffff83116101b7576020808501948460051b0101116101b757565b60005b83811061117f5750506000910152565b818101518382015260200161116f565b90601f19601f6020936111ad8151809281875287808801910161116c565b0116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101b757565b359073ffffffffffffffffffffffffffffffffffffffff821682036101b757565b602060408183019282815284518094520192019060005b81811061121c5750505090565b825184526020938401939092019160010161120f565b906020808351928381520192019060005b8181106112505750505090565b8251845260209384019390920191600101611243565b9061014061012061132493805184526020810151602085015267ffffffffffffffff604082015116604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015260a081015160a085015273ffffffffffffffffffffffffffffffffffffffff60c08201511660c085015273ffffffffffffffffffffffffffffffffffffffff60e08201511660e0850152610100810151151561010085015201519181610120820152019061118f565b90565b91908110156113675760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61813603018212156101b7570190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60a0810190811067ffffffffffffffff8211176113b257604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff8211176113b257604052565b6060810190811067ffffffffffffffff8211176113b257604052565b60c0810190811067ffffffffffffffff8211176113b257604052565b610140810190811067ffffffffffffffff8211176113b257604052565b90601f601f19910116810190811067ffffffffffffffff8211176113b257604052565b67ffffffffffffffff81116113b25760051b60200190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc60409101126101b757604051906114c4826113e1565b60243582526044356020830152565b9291926114df82611475565b936114ed6040519586611452565b602085848152019260061b8201918183116101b757925b8284106115115750505050565b600060408584031261068257506020604091825161152e816113e1565b863581528287013583820152815201930192611504565b91908260609103126101b75760405161155d816113fd565b8092803560ff811681036101b75760409182918452602081013560208501520135910152565b359067ffffffffffffffff821682036101b757565b8051156113675760200190565b80518210156113675760209160051b010190565b919082039182116115c657565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b91908110156113675760051b0190565b90600182811c9216801561164e575b602083101461161f57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691611614565b6000929181549161166883611605565b80835292600181169081156116be575060011461168457505050565b60009081526020812093945091925b8383106116a4575060209250010190565b600181602092949394548385870101520191019190611693565b905060209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b67ffffffffffffffff81116113b257601f01601f191660200190565b919060c0838203126101b7576040519061172f82611419565b819361173a816111d7565b835261174860208201611583565b6020840152604081013580151581036101b757604084015260608101356060840152608081013567ffffffffffffffff81116101b75781019082601f830112156101b757813592611798846116fa565b906117a66040519283611452565b848252602085850101116101b757600060208560a09682889701838601378301015260808501520135910152565b604080519091906117e58382611452565b6001815291601f19018260005b8281106117fe57505050565b60209060405161180d81611419565b60008152600083820152600060408201526000606082015260606080820152600060a0820152828285010152016117f2565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41813603018212156101b7570190565b3573ffffffffffffffffffffffffffffffffffffffff811681036101b75790565b9061189d82611475565b6118aa6040519182611452565b828152601f196118ba8294611475565b019060005b8281106118cb57505050565b8060606020809385010152016118bf565b91908110156113675760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1813603018212156101b7570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101b7570180359067ffffffffffffffff82116101b757602001918160051b360383136101b757565b92919061197c81611475565b9361198a6040519586611452565b602085838152019160051b8101918383116101b75781905b8382106119b0575050505050565b813567ffffffffffffffff81116101b7576020916119d18784938701611716565b8152019101906119a2565b604080519091906119ed8382611452565b6001815291601f19018260005b828110611a0657505050565b602090604051611a15816113e1565b60008152600083820152828285010152016119fa565b90611a3582611475565b611a426040519182611452565b828152601f19611a528294611475565b0190602036910137565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101b7570180359067ffffffffffffffff82116101b7576020019160608202360383136101b757565b60405190611abd82611435565b60606101208360008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e082015260006101008201520152565b906006610120604051611b1581611435565b611bc28195805483526001810154602084015267ffffffffffffffff60028201548181166040860152818160401c16606086015260801c166080840152600381015460a084015273ffffffffffffffffffffffffffffffffffffffff60048201541660c084015260ff600582015473ffffffffffffffffffffffffffffffffffffffff811660e086015260a01c161515610100840152611bbb6040518096819301611658565b0384611452565b0152565b60001981146115c65760010190565b6080810167ffffffffffffffff8151168015159081611d85575b50611d5b578173ffffffffffffffffffffffffffffffffffffffff611cba6020611d2a950151926040810151946060820194848651169251916020825192015184600052600360205267ffffffffffffffff604060002092835493611c5385611bc6565b90555116926040519460208601967fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e75885260408701526060860152608085015260a084015260c083015260e082015260e08152611cb261010082611452565b519020613923565b915116611d256020840151611d1760ff60408701519651166040519687936020850191926041937fff00000000000000000000000000000000000000000000000000000000000000928452602084015260f81b1660408201520190565b03601f198101855284611452565b613964565b15611d3157565b7f8baa579f0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f1ab7da6b0000000000000000000000000000000000000000000000000000000060005260046000fd5b905067ffffffffffffffff42161138611bef565b519081151582036101b757565b6020818303126101b75780519067ffffffffffffffff82116101b75701906080828203126101b757604051916080830183811067ffffffffffffffff8211176113b25760405280518352602081015173ffffffffffffffffffffffffffffffffffffffff811681036101b7576020840152611e2360408201611d99565b604084015260608101519067ffffffffffffffff82116101b7570181601f820112156101b7578051611e54816116fa565b92611e626040519485611452565b818452602082840101116101b757611e80916020808501910161116c565b606082015290565b90611e9282611475565b611e9f6040519182611452565b828152601f19611eaf8294611475565b019060005b828110611ec057505050565b602090611ecb611ab0565b82828501015201611eb4565b9190604051907fa2ea7c6e00000000000000000000000000000000000000000000000000000000825283600483015260008260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9182156121fb576000926121d6575b508151156121825792835190611f6982611e88565b93611f7383611a2b565b954267ffffffffffffffff169060005b858110611f9e57505050505050916113249391600193613b26565b611fa881836115a5565b5190815160005260046020526040600020918254156121ac578660018401540361218257600583015473ffffffffffffffffffffffffffffffffffffffff8716908173ffffffffffffffffffffffffffffffffffffffff8216036121585760a01c60ff161561212e57600284019167ffffffffffffffff835460801c16612104577ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f615602073ffffffffffffffffffffffffffffffffffffffff8f8f886120f1918f99936120c78f9d6120c260019f60c098907fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff77ffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b611b03565b6120d184846115a5565b526120dc83836115a5565b506120eb83888b0151926115a5565b526115a5565b510151169251604051908152a401611f83565b7f905e71070000000000000000000000000000000000000000000000000000000060005260046000fd5b7f157bd4c30000000000000000000000000000000000000000000000000000000060005260046000fd5b7f4ca888670000000000000000000000000000000000000000000000000000000060005260046000fd5b7fbf37b20e0000000000000000000000000000000000000000000000000000000060005260046000fd5b7fc5723b510000000000000000000000000000000000000000000000000000000060005260046000fd5b6121f49192503d806000833e6121ec8183611452565b810190611da6565b9038611f54565b6040513d6000823e3d90fd5b949392916040517fa2ea7c6e00000000000000000000000000000000000000000000000000000000815286600482015260008160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156121fb57600091612400575b5080511561218257825161229881611e88565b926122a282611a2b565b944267ffffffffffffffff169060005b8481106122c9575050505050611324959650613b26565b6122d381836115a5565b51908151600052600460205260406000208054156121ac578d60018201540361218257600581015473ffffffffffffffffffffffffffffffffffffffff8716908173ffffffffffffffffffffffffffffffffffffffff8216036121585760a01c60ff161561212e57600282019367ffffffffffffffff855460801c16612104578f92602073ffffffffffffffffffffffffffffffffffffffff60c08f8f89906123ed926120c78f986120c260019f9a7ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f6159b907fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff77fffffffff