{
  "_format": "hh-sol-artifact-1",
  "contractName": "GenericFactoryV1",
  "sourceName": "contracts/protocol/GenericFactoryV1.sol",
  "abi": [
    {
      "inputs": [],
      "name": "AccessDenied",
      "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": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "by",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "proxyAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "implAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ProxyDeployed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "by",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "requested",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assigned",
          "type": "uint256"
        }
      ],
      "name": "RoleUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ROLE_ACCESS_MANAGER",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ROLE_UPGRADE_MANAGER",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_implAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "clone",
      "outputs": [
        {
          "internalType": "address",
          "name": "proxyAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "features",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getImplementation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getInitializedVersion",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "getRole",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "required",
          "type": "uint256"
        }
      ],
      "name": "isFeatureEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "required",
          "type": "uint256"
        }
      ],
      "name": "isOperatorInRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "required",
          "type": "uint256"
        }
      ],
      "name": "isSenderInRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "postConstruct",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_mask",
          "type": "uint256"
        }
      ],
      "name": "updateFeatures",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "role",
          "type": "uint256"
        }
      ],
      "name": "updateRole",
      "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"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b50600054610100900460ff16158080156100355750600054600160ff909116105b8061004f5750303b15801561004f575060005460ff166001145b6100b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff1916600117905580156100d9576000805461ff0019166101001790555b801561011f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5060805161123e61015760003960008181610453015281816104930152818161051b0152818161055b01526105d7015261123e6000f3fe6080604052600436106100f35760003560e01c8063ae5b102e1161008a578063b3c6501511610059578063b3c650151461029d578063c688d693146102bf578063d5bb7f67146102df578063fcc2c078146102ff57600080fd5b8063ae5b102e14610238578063ae60bda414610258578063ae682e2e14610270578063af504c961461028857600080fd5b80634f1ef286116100c65780634f1ef286146101b357806352d1902d146101c6578063725f3626146101db578063aaf10f421461020b57600080fd5b80630fbe133c146100f85780632b5214161461012f5780633659cfe61461015b578063442767331461017d575b600080fd5b34801561010457600080fd5b50610118610113366004610e41565b61031f565b604051610126929190610f16565b60405180910390f35b34801561013b57600080fd5b50306000908152600160205260409020545b604051908152602001610126565b34801561016757600080fd5b5061017b610176366004610f3a565b610449565b005b34801561018957600080fd5b5061014d610198366004610f3a565b6001600160a01b031660009081526001602052604090205490565b61017b6101c1366004610f6b565b610511565b3480156101d257600080fd5b5061014d6105ca565b3480156101e757600080fd5b506101fb6101f6366004611035565b61067d565b6040519015158152602001610126565b34801561021757600080fd5b5061022061068e565b6040516001600160a01b039091168152602001610126565b34801561024457600080fd5b5061017b61025336600461104e565b610698565b34801561026457600080fd5b5061014d600160fe1b81565b34801561027c57600080fd5b5061014d600160ff1b81565b34801561029457600080fd5b5061017b6106a2565b3480156102a957600080fd5b5060005460405160ff9091168152602001610126565b3480156102cb57600080fd5b506101fb6102da36600461104e565b6107b5565b3480156102eb57600080fd5b5061017b6102fa366004611035565b6107c8565b34801561030b57600080fd5b506101fb61031a366004611035565b6107d2565b6000606061032c856107dd565b915082156103eb576000826001600160a01b03168585604051610350929190611078565b6000604051808303816000865af19150503d806000811461038d576040519150601f19603f3d011682016040523d82523d6000602084013e610392565b606091505b5092509050806103e95760405162461bcd60e51b815260206004820152601b60248201527f70726f787920696e697469616c697a6174696f6e206661696c6564000000000060448201526064015b60405180910390fd5b505b846001600160a01b0316336001600160a01b03167f712c33c376f9104bcb4369b5ef428db727ad5fdb8cbe636eae1fe34df88887d7848787866040516104349493929190611088565b60405180910390a3935093915050565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104915760405162461bcd60e51b81526004016103e0906110e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104c3610877565b6001600160a01b0316146104e95760405162461bcd60e51b81526004016103e09061112d565b6104f281610893565b6040805160008082526020820190925261050e918391906108a0565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105595760405162461bcd60e51b81526004016103e0906110e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058b610877565b6001600160a01b0316146105b15760405162461bcd60e51b81526004016103e09061112d565b6105ba82610893565b6105c6828260016108a0565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461066a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103e0565b506000805160206111c283398151915290565b600061068882610a10565b92915050565b6000610444610877565b6105c68282610a2c565b600054610100900460ff16158080156106c25750600054600160ff909116105b806106dc5750303b1580156106dc575060005460ff166001145b61073f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e0565b6000805460ff191660011790558015610762576000805461ff0019166101001790555b61076d336000610a95565b801561050e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60006107c18383610b27565b9392505050565b61050e3082610a2c565b600061068882610b49565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166108725760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b60448201526064016103e0565b919050565b6000805160206111c2833981519152546001600160a01b031690565b61050e600160fe1b610b55565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156108d8576108d383610b66565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610932575060408051601f3d908101601f1916820190925261092f91810190611179565b60015b6109955760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016103e0565b6000805160206111c28339815191528114610a045760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016103e0565b506108d3838383610c02565b30600090815260016020526040812054610688905b8316831490565b610a39600160ff1b610b55565b6105c68282610a9033610a61876001600160a01b031660009081526001602052604090205490565b6001600160a01b0391909116600090815260016020526040902054600019808818821618908716919091171690565b610c2d565b600054610100900460ff16610b005760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103e0565b6001600160a01b03821615610b1c57610b1c8260001980610c2d565b6105c6308283610c2d565b6001600160a01b0382166000908152600160205260408120546107c190610a25565b60006106883383610b27565b61050e610b6182610b49565b610c89565b6001600160a01b0381163b610bd35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103e0565b6000805160206111c283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610c0b83610ca7565b600082511180610c185750805b156108d357610c278383610ce7565b50505050565b6001600160a01b038316600081815260016020908152604091829020849055815185815290810184905233917f5a10526456f5116c0b7b80582c217d666243fd51b6a2d92c8011e601c2462e5f910160405180910390a3505050565b8061050e57604051634ca8886760e01b815260040160405180910390fd5b610cb081610b66565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606107c183836040518060600160405280602781526020016111e2602791396060600080856001600160a01b031685604051610d249190611192565b600060405180830381855af49150503d8060008114610d5f576040519150601f19603f3d011682016040523d82523d6000602084013e610d64565b606091505b5091509150610d7586838387610d7f565b9695505050505050565b60608315610dee578251600003610de7576001600160a01b0385163b610de75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103e0565b5081610df8565b610df88383610e00565b949350505050565b815115610e105781518083602001fd5b8060405162461bcd60e51b81526004016103e091906111ae565b80356001600160a01b038116811461087257600080fd5b600080600060408486031215610e5657600080fd5b610e5f84610e2a565b9250602084013567ffffffffffffffff811115610e7b57600080fd5b8401601f81018613610e8c57600080fd5b803567ffffffffffffffff811115610ea357600080fd5b866020828401011115610eb557600080fd5b939660209190910195509293505050565b60005b83811015610ee1578181015183820152602001610ec9565b50506000910152565b60008151808452610f02816020860160208601610ec6565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201819052600090610df890830184610eea565b600060208284031215610f4c57600080fd5b6107c182610e2a565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f7e57600080fd5b610f8783610e2a565b9150602083013567ffffffffffffffff811115610fa357600080fd5b8301601f81018513610fb457600080fd5b803567ffffffffffffffff811115610fce57610fce610f55565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610ffd57610ffd610f55565b60405281815282820160200187101561101557600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561104757600080fd5b5035919050565b6000806040838503121561106157600080fd5b61106a83610e2a565b946020939093013593505050565b8183823760009101908152919050565b6001600160a01b03851681526060602082018190528101839052828460808301376000608084830101526000601f19601f850116820160808382030160408401526110d66080820185610eea565b979650505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561118b57600080fd5b5051919050565b600082516111a4818460208701610ec6565b9190910192915050565b6020815260006107c16020830184610eea56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f70579c14e3e31d9d15ea06a21a9dec6193adca1cb9f906525e350bdd4630e3464736f6c634300081d0033",
  "deployedBytecode": "0x6080604052600436106100f35760003560e01c8063ae5b102e1161008a578063b3c6501511610059578063b3c650151461029d578063c688d693146102bf578063d5bb7f67146102df578063fcc2c078146102ff57600080fd5b8063ae5b102e14610238578063ae60bda414610258578063ae682e2e14610270578063af504c961461028857600080fd5b80634f1ef286116100c65780634f1ef286146101b357806352d1902d146101c6578063725f3626146101db578063aaf10f421461020b57600080fd5b80630fbe133c146100f85780632b5214161461012f5780633659cfe61461015b578063442767331461017d575b600080fd5b34801561010457600080fd5b50610118610113366004610e41565b61031f565b604051610126929190610f16565b60405180910390f35b34801561013b57600080fd5b50306000908152600160205260409020545b604051908152602001610126565b34801561016757600080fd5b5061017b610176366004610f3a565b610449565b005b34801561018957600080fd5b5061014d610198366004610f3a565b6001600160a01b031660009081526001602052604090205490565b61017b6101c1366004610f6b565b610511565b3480156101d257600080fd5b5061014d6105ca565b3480156101e757600080fd5b506101fb6101f6366004611035565b61067d565b6040519015158152602001610126565b34801561021757600080fd5b5061022061068e565b6040516001600160a01b039091168152602001610126565b34801561024457600080fd5b5061017b61025336600461104e565b610698565b34801561026457600080fd5b5061014d600160fe1b81565b34801561027c57600080fd5b5061014d600160ff1b81565b34801561029457600080fd5b5061017b6106a2565b3480156102a957600080fd5b5060005460405160ff9091168152602001610126565b3480156102cb57600080fd5b506101fb6102da36600461104e565b6107b5565b3480156102eb57600080fd5b5061017b6102fa366004611035565b6107c8565b34801561030b57600080fd5b506101fb61031a366004611035565b6107d2565b6000606061032c856107dd565b915082156103eb576000826001600160a01b03168585604051610350929190611078565b6000604051808303816000865af19150503d806000811461038d576040519150601f19603f3d011682016040523d82523d6000602084013e610392565b606091505b5092509050806103e95760405162461bcd60e51b815260206004820152601b60248201527f70726f787920696e697469616c697a6174696f6e206661696c6564000000000060448201526064015b60405180910390fd5b505b846001600160a01b0316336001600160a01b03167f712c33c376f9104bcb4369b5ef428db727ad5fdb8cbe636eae1fe34df88887d7848787866040516104349493929190611088565b60405180910390a3935093915050565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104915760405162461bcd60e51b81526004016103e0906110e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104c3610877565b6001600160a01b0316146104e95760405162461bcd60e51b81526004016103e09061112d565b6104f281610893565b6040805160008082526020820190925261050e918391906108a0565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105595760405162461bcd60e51b81526004016103e0906110e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058b610877565b6001600160a01b0316146105b15760405162461bcd60e51b81526004016103e09061112d565b6105ba82610893565b6105c6828260016108a0565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461066a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103e0565b506000805160206111c283398151915290565b600061068882610a10565b92915050565b6000610444610877565b6105c68282610a2c565b600054610100900460ff16158080156106c25750600054600160ff909116105b806106dc5750303b1580156106dc575060005460ff166001145b61073f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e0565b6000805460ff191660011790558015610762576000805461ff0019166101001790555b61076d336000610a95565b801561050e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60006107c18383610b27565b9392505050565b61050e3082610a2c565b600061068882610b49565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166108725760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b60448201526064016103e0565b919050565b6000805160206111c2833981519152546001600160a01b031690565b61050e600160fe1b610b55565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156108d8576108d383610b66565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610932575060408051601f3d908101601f1916820190925261092f91810190611179565b60015b6109955760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016103e0565b6000805160206111c28339815191528114610a045760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016103e0565b506108d3838383610c02565b30600090815260016020526040812054610688905b8316831490565b610a39600160ff1b610b55565b6105c68282610a9033610a61876001600160a01b031660009081526001602052604090205490565b6001600160a01b0391909116600090815260016020526040902054600019808818821618908716919091171690565b610c2d565b600054610100900460ff16610b005760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103e0565b6001600160a01b03821615610b1c57610b1c8260001980610c2d565b6105c6308283610c2d565b6001600160a01b0382166000908152600160205260408120546107c190610a25565b60006106883383610b27565b61050e610b6182610b49565b610c89565b6001600160a01b0381163b610bd35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103e0565b6000805160206111c283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610c0b83610ca7565b600082511180610c185750805b156108d357610c278383610ce7565b50505050565b6001600160a01b038316600081815260016020908152604091829020849055815185815290810184905233917f5a10526456f5116c0b7b80582c217d666243fd51b6a2d92c8011e601c2462e5f910160405180910390a3505050565b8061050e57604051634ca8886760e01b815260040160405180910390fd5b610cb081610b66565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606107c183836040518060600160405280602781526020016111e2602791396060600080856001600160a01b031685604051610d249190611192565b600060405180830381855af49150503d8060008114610d5f576040519150601f19603f3d011682016040523d82523d6000602084013e610d64565b606091505b5091509150610d7586838387610d7f565b9695505050505050565b60608315610dee578251600003610de7576001600160a01b0385163b610de75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103e0565b5081610df8565b610df88383610e00565b949350505050565b815115610e105781518083602001fd5b8060405162461bcd60e51b81526004016103e091906111ae565b80356001600160a01b038116811461087257600080fd5b600080600060408486031215610e5657600080fd5b610e5f84610e2a565b9250602084013567ffffffffffffffff811115610e7b57600080fd5b8401601f81018613610e8c57600080fd5b803567ffffffffffffffff811115610ea357600080fd5b866020828401011115610eb557600080fd5b939660209190910195509293505050565b60005b83811015610ee1578181015183820152602001610ec9565b50506000910152565b60008151808452610f02816020860160208601610ec6565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201819052600090610df890830184610eea565b600060208284031215610f4c57600080fd5b6107c182610e2a565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610f7e57600080fd5b610f8783610e2a565b9150602083013567ffffffffffffffff811115610fa357600080fd5b8301601f81018513610fb457600080fd5b803567ffffffffffffffff811115610fce57610fce610f55565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610ffd57610ffd610f55565b60405281815282820160200187101561101557600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561104757600080fd5b5035919050565b6000806040838503121561106157600080fd5b61106a83610e2a565b946020939093013593505050565b8183823760009101908152919050565b6001600160a01b03851681526060602082018190528101839052828460808301376000608084830101526000601f19601f850116820160808382030160408401526110d66080820185610eea565b979650505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561118b57600080fd5b5051919050565b600082516111a4818460208701610ec6565b9190910192915050565b6020815260006107c16020830184610eea56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f70579c14e3e31d9d15ea06a21a9dec6193adca1cb9f906525e350bdd4630e3464736f6c634300081d0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
