{
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "isEnabled",
              "type": "bool"
            },
            {
              "internalType": "uint128",
              "name": "capacity",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "rate",
              "type": "uint128"
            }
          ],
          "internalType": "struct RateLimiter.Config",
          "name": "config",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "OnlyCallableByAdminOrOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "PriceNotFoundForToken",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentRateLimiterState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "tokens",
              "type": "uint128"
            },
            {
              "internalType": "uint32",
              "name": "lastUpdated",
              "type": "uint32"
            },
            {
              "internalType": "bool",
              "name": "isEnabled",
              "type": "bool"
            },
            {
              "internalType": "uint128",
              "name": "capacity",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "rate",
              "type": "uint128"
            }
          ],
          "internalType": "struct RateLimiter.TokenBucket",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTokenLimitAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "setAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "isEnabled",
              "type": "bool"
            },
            {
              "internalType": "uint128",
              "name": "capacity",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "rate",
              "type": "uint128"
            }
          ],
          "internalType": "struct RateLimiter.Config",
          "name": "config",
          "type": "tuple"
        }
      ],
      "name": "setRateLimiterConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b50604051610d26380380610d2683398101604081905261002f91610205565b33806000816100855760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b03848116919091179091558116156100b5576100b581610140565b50506040805160a081018252602084810180516001600160801b039081168085524263ffffffff169385018490528751151585870181905292518216606086018190529790950151166080909301839052600380546001600160a01b031916909417600160801b9283021760ff60a01b1916600160a01b909102179092550290911760045550610285565b336001600160a01b038216036101985760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161007c565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160801b038116811461020057600080fd5b919050565b60006060828403121561021757600080fd5b604051606081016001600160401b038111828210171561024757634e487b7160e01b600052604160045260246000fd5b6040528251801515811461025a57600080fd5b8152610268602084016101e9565b6020820152610279604084016101e9565b60408201529392505050565b610a92806102946000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806379ba50971161005b57806379ba5097146101435780638da5cb5b1461014b578063c92b283214610169578063f2fde38b1461017c57600080fd5b8063546719cd14610082578063599f6431146100ef578063704b6c021461012e575b600080fd5b61008a61018f565b6040516100e6919081516fffffffffffffffffffffffffffffffff908116825260208084015163ffffffff1690830152604080840151151590830152606080840151821690830152608092830151169181019190915260a00190565b60405180910390f35b60025473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e6565b61014161013c36600461091d565b610244565b005b610141610334565b60005473ffffffffffffffffffffffffffffffffffffffff16610109565b61014161017736600461097f565b610436565b61014161018a36600461091d565b6104bb565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805160a0810182526003546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000080830463ffffffff1660208501527401000000000000000000000000000000000000000090920460ff16151593830193909352600454808416606084015204909116608082015261023f906104cc565b905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314801590610284575060025473ffffffffffffffffffffffffffffffffffffffff163314155b156102bb576040517ff6cd562000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f8fe72c3e0020beb3234e76ae6676fa576fbfcae600af1c4fea44784cf0db329c9060200160405180910390a150565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60005473ffffffffffffffffffffffffffffffffffffffff163314801590610476575060025473ffffffffffffffffffffffffffffffffffffffff163314155b156104ad576040517ff6cd562000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104b860038261057e565b50565b6104c3610763565b6104b8816107e6565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915261055a82606001516fffffffffffffffffffffffffffffffff1683600001516fffffffffffffffffffffffffffffffff16846020015163ffffffff164261053e9190610a48565b85608001516fffffffffffffffffffffffffffffffff166108db565b6fffffffffffffffffffffffffffffffff1682525063ffffffff4216602082015290565b81546000906105a790700100000000000000000000000000000000900463ffffffff1642610a48565b9050801561064957600183015483546105ef916fffffffffffffffffffffffffffffffff808216928116918591700100000000000000000000000000000000909104166108db565b83546fffffffffffffffffffffffffffffffff919091167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116177001000000000000000000000000000000004263ffffffff16021783555b6020820151835461066f916fffffffffffffffffffffffffffffffff9081169116610903565b83548351151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffff000000000000000000000000000000009091166fffffffffffffffffffffffffffffffff92831617178455602083015160408085015183167001000000000000000000000000000000000291909216176001850155517f9ea3374b67bf275e6bb9c8ae68f9cae023e1c528b4b27e092f0bb209d3531c19906107569084908151151581526020808301516fffffffffffffffffffffffffffffffff90811691830191909152604092830151169181019190915260600190565b60405180910390a1505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016103b1565b565b3373ffffffffffffffffffffffffffffffffffffffff821603610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016103b1565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60006108fa856108eb8486610a5b565b6108f59087610a72565b610903565b95945050505050565b60008183106109125781610914565b825b90505b92915050565b60006020828403121561092f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461095357600080fd5b9392505050565b80356fffffffffffffffffffffffffffffffff8116811461097a57600080fd5b919050565b60006060828403121561099157600080fd5b6040516060810181811067ffffffffffffffff821117156109db577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052823580151581146109ee57600080fd5b81526109fc6020840161095a565b6020820152610a0d6040840161095a565b60408201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561091757610917610a19565b808202811582820484141761091757610917610a19565b8082018082111561091757610917610a1956fea164736f6c6343000813000a",
    "sourceMap": "629:3232:0:-:0;;;1213:272;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;291:10:15;;345:1:13;291:10:15;529:59:14;;;;-1:-1:-1;;;529:59:14;;1203:2:26;529:59:14;;;1185:21:26;1242:2;1222:18;;;1215:30;1281:26;1261:18;;;1254:54;1325:18;;529:59:14;;;;;;;;;595:7;:18;;-1:-1:-1;;;;;;595:18:14;-1:-1:-1;;;;;595:18:14;;;;;;;;;;623:26;;;619:79;;659:32;678:12;659:18;:32::i;:::-;-1:-1:-1;;1281:199:0;;;;;;;;1379:15;;;;;;-1:-1:-1;;;;;1281:199:0;;;;;;1422:15;1281:199;;;;;;;;1457:16;;1281:199;;;;;;;;1348:15;;1281:199;;;;;;;;1319:11;;;;;1281:199;;;;;;;;1265:13;:215;;-1:-1:-1;;;;;;1265:215:0;;;;-1:-1:-1;;;1265:215:0;;;;-1:-1:-1;;;;1265:215:0;-1:-1:-1;;;1265:215:0;;;;;;;;;;;;;-1:-1:-1;629:3232:0;;1482:188:14;1550:10;-1:-1:-1;;;;;1544:16:14;;;1536:52;;;;-1:-1:-1;;;1536:52:14;;1556:2:26;1536:52:14;;;1538:21:26;1595:2;1575:18;;;1568:30;1634:25;1614:18;;;1607:53;1677:18;;1536:52:14;1354:347:26;1536:52:14;1595:14;:19;;-1:-1:-1;;;;;;1595:19:14;-1:-1:-1;;;;;1595:19:14;;;;;;;;;-1:-1:-1;1653:7:14;;1626:39;;1595:19;;1653:7;;1626:39;;-1:-1:-1;1626:39:14;1482:188;:::o;14:177:26:-;93:13;;-1:-1:-1;;;;;135:31:26;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:800::-;290:6;343:2;331:9;322:7;318:23;314:32;311:52;;;359:1;356;349:12;311:52;392:2;386:9;434:2;422:15;;-1:-1:-1;;;;;452:34:26;;488:22;;;449:62;446:185;;;553:10;548:3;544:20;541:1;534:31;588:4;585:1;578:15;616:4;613:1;606:15;446:185;647:2;640:22;684:16;;736:13;;729:21;719:32;;709:60;;765:1;762;755:12;709:60;778:21;;832:49;877:2;862:18;;832:49;:::i;:::-;827:2;819:6;815:15;808:74;915:49;960:2;949:9;945:18;915:49;:::i;:::-;910:2;898:15;;891:74;902:6;196:800;-1:-1:-1;;;196:800:26:o;1354:347::-;629:3232:0;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806379ba50971161005b57806379ba5097146101435780638da5cb5b1461014b578063c92b283214610169578063f2fde38b1461017c57600080fd5b8063546719cd14610082578063599f6431146100ef578063704b6c021461012e575b600080fd5b61008a61018f565b6040516100e6919081516fffffffffffffffffffffffffffffffff908116825260208084015163ffffffff1690830152604080840151151590830152606080840151821690830152608092830151169181019190915260a00190565b60405180910390f35b60025473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e6565b61014161013c36600461091d565b610244565b005b610141610334565b60005473ffffffffffffffffffffffffffffffffffffffff16610109565b61014161017736600461097f565b610436565b61014161018a36600461091d565b6104bb565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040805160a0810182526003546fffffffffffffffffffffffffffffffff808216835270010000000000000000000000000000000080830463ffffffff1660208501527401000000000000000000000000000000000000000090920460ff16151593830193909352600454808416606084015204909116608082015261023f906104cc565b905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314801590610284575060025473ffffffffffffffffffffffffffffffffffffffff163314155b156102bb576040517ff6cd562000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f8fe72c3e0020beb3234e76ae6676fa576fbfcae600af1c4fea44784cf0db329c9060200160405180910390a150565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60005473ffffffffffffffffffffffffffffffffffffffff163314801590610476575060025473ffffffffffffffffffffffffffffffffffffffff163314155b156104ad576040517ff6cd562000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104b860038261057e565b50565b6104c3610763565b6104b8816107e6565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915261055a82606001516fffffffffffffffffffffffffffffffff1683600001516fffffffffffffffffffffffffffffffff16846020015163ffffffff164261053e9190610a48565b85608001516fffffffffffffffffffffffffffffffff166108db565b6fffffffffffffffffffffffffffffffff1682525063ffffffff4216602082015290565b81546000906105a790700100000000000000000000000000000000900463ffffffff1642610a48565b9050801561064957600183015483546105ef916fffffffffffffffffffffffffffffffff808216928116918591700100000000000000000000000000000000909104166108db565b83546fffffffffffffffffffffffffffffffff919091167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116177001000000000000000000000000000000004263ffffffff16021783555b6020820151835461066f916fffffffffffffffffffffffffffffffff9081169116610903565b83548351151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffff000000000000000000000000000000009091166fffffffffffffffffffffffffffffffff92831617178455602083015160408085015183167001000000000000000000000000000000000291909216176001850155517f9ea3374b67bf275e6bb9c8ae68f9cae023e1c528b4b27e092f0bb209d3531c19906107569084908151151581526020808301516fffffffffffffffffffffffffffffffff90811691830191909152604092830151169181019190915260600190565b60405180910390a1505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016103b1565b565b3373ffffffffffffffffffffffffffffffffffffffff821603610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016103b1565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60006108fa856108eb8486610a5b565b6108f59087610a72565b610903565b95945050505050565b60008183106109125781610914565b825b90505b92915050565b60006020828403121561092f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461095357600080fd5b9392505050565b80356fffffffffffffffffffffffffffffffff8116811461097a57600080fd5b919050565b60006060828403121561099157600080fd5b6040516060810181811067ffffffffffffffff821117156109db577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052823580151581146109ee57600080fd5b81526109fc6020840161095a565b6020820152610a0d6040840161095a565b60408201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561091757610917610a19565b808202811582820484141761091757610917610a19565b8082018082111561091757610917610a1956fea164736f6c6343000813000a",
    "sourceMap": "629:3232:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2435:148;;;:::i;:::-;;;;;;294:13:26;;229:34;290:22;;;272:41;;373:4;361:17;;;355:24;381:10;351:41;329:20;;;322:71;463:4;451:17;;;445:24;438:32;431:40;409:20;;;402:70;532:4;520:17;;;514:24;510:33;;488:20;;;481:63;604:4;592:17;;;586:24;582:33;560:20;;;553:63;;;;206:3;191:19;;14:608;2435:148:0;;;;;;;;3208:87;3283:7;;;;3208:87;;;803:42:26;791:55;;;773:74;;761:2;746:18;3208:87:0;627:226:26;3475:120:0;;;;;;:::i;:::-;;:::i;:::-;;1001:265:14;;;:::i;1317:81::-;1364:7;1386;;;1317:81;;2750:144:0;;;;;;:::i;:::-;;:::i;811:98:14:-;;;;;;:::i;:::-;;:::i;2435:148:0:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2538:38:0;;;;;;;;:13;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:40;;:38;:40::i;:::-;2531:47;;2435:148;:::o;3475:120::-;1364:7:14;1386;;;3752:10:0;:21;;;;:46;;-1:-1:-1;3791:7:0;;;;3777:10;:21;;3752:46;3748:99;;;3807:40;;;;;;;;;;;;;;3748:99;3543:7:::1;:18:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;3572::::1;::::0;773:74:26;;;3572:18:0::1;::::0;761:2:26;746:18;3572::0::1;;;;;;;3475:120:::0;:::o;1001:265:14:-;1074:14;;;;1060:10;:28;1052:63;;;;;;;2403:2:26;1052:63:14;;;2385:21:26;2442:2;2422:18;;;2415:30;2481:24;2461:18;;;2454:52;2523:18;;1052:63:14;;;;;;;;;1122:16;1141:7;;1164:10;1154:20;;;;;;;;-1:-1:-1;1180:27:14;;;;;;;1219:42;;1141:7;;;;;1164:10;;1141:7;;1219:42;;;1046:220;1001:265::o;2750:144:0:-;1364:7:14;1386;;;3752:10:0;:21;;;;:46;;-1:-1:-1;3791:7:0;;;;3777:10;:21;;3752:46;3748:99;;;3807:40;;;;;;;;;;;;;;3748:99;2846:43:::1;:13;2882:6:::0;2846:35:::1;:43::i;:::-;2750:144:::0;:::o;811:98:14:-;1941:20;:18;:20::i;:::-;882:22:::1;901:2;882:18;:22::i;4289:528:10:-:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4638:99:10;4655:6;:15;;;4638:99;;4672:6;:13;;;4638:99;;4705:6;:18;;;4687:36;;:15;:36;;;;:::i;:::-;4725:6;:11;;;4638:99;;:16;:99::i;:::-;4607:136;;;;-1:-1:-1;4749:44:10;4777:15;4749:44;:18;;;:44;4607:6;4289:528::o;4939:700::-;5194:20;;5157:16;;5176:38;;5194:20;;;;;5176:15;:38;:::i;:::-;5157:57;-1:-1:-1;5224:13:10;;5220:193;;5290:17;;;;5309:15;;5273:77;;5290:17;;;;;5309:15;;;5326:8;;5336:13;;;;;5273:16;:77::i;:::-;5247:104;;;;;;;5360:46;;;;;;5390:15;5360:46;;;;;;5220:193;5450:15;;;;5467;;5445:38;;;;;;;5467:15;5445:4;:38::i;:::-;5419:65;;5511:16;;5490:37;;;;;;;;5419:65;;;;5490:37;;;;5553:15;;;;5590:11;;;;;5574:27;;;;5533:35;;;;5574:27;5419:65;5533:17;;5574:27;5613:21;;;;;5511:6;;3100:13:26;;3093:21;3086:29;3068:48;;3163:4;3151:17;;;3145:24;3188:34;3260:21;;;3238:20;;;3231:51;;;;3342:4;3330:17;;;3324:24;3320:33;3298:20;;;3291:63;;;;3056:2;3041:18;;2874:486;5613:21:10;;;;;;;;5031:608;4939:700;;:::o;1715:111:14:-;1787:7;;;;1773:10;:21;1765:56;;;;;;;3567:2:26;1765:56:14;;;3549:21:26;3606:2;3586:18;;;3579:30;3645:24;3625:18;;;3618:52;3687:18;;1765:56:14;3365:346:26;1765:56:14;1715:111::o;1482:188::-;1550:10;1544:16;;;;1536:52;;;;;;;3918:2:26;1536:52:14;;;3900:21:26;3957:2;3937:18;;;3930:30;3996:25;3976:18;;;3969:53;4039:18;;1536:52:14;3716:347:26;1536:52:14;1595:14;:19;;;;;;;;;;;;;;-1:-1:-1;1653:7:14;;1626:39;;1595:19;;1653:7;;1626:39;;-1:-1:-1;1626:39:14;1482:188;:::o;5909:201:10:-;6043:7;6065:40;6070:8;6089:15;6100:4;6089:8;:15;:::i;:::-;6080:24;;:6;:24;:::i;:::-;6065:4;:40::i;:::-;6058:47;5909:201;-1:-1:-1;;;;;5909:201:10:o;6238:99::-;6297:7;6323:1;6319;:5;:13;;6331:1;6319:13;;;6327:1;6319:13;6312:20;;6238:99;;;;;:::o;858:309:26:-;917:6;970:2;958:9;949:7;945:23;941:32;938:52;;;986:1;983;976:12;938:52;1025:9;1012:23;1075:42;1068:5;1064:54;1057:5;1054:65;1044:93;;1133:1;1130;1123:12;1044:93;1156:5;858:309;-1:-1:-1;;;858:309:26:o;1172:188::-;1240:20;;1300:34;1289:46;;1279:57;;1269:85;;1350:1;1347;1340:12;1269:85;1172:188;;;:::o;1365:831::-;1448:6;1501:2;1489:9;1480:7;1476:23;1472:32;1469:52;;;1517:1;1514;1507:12;1469:52;1550:2;1544:9;1592:2;1584:6;1580:15;1661:6;1649:10;1646:22;1625:18;1613:10;1610:34;1607:62;1604:242;;;1702:77;1699:1;1692:88;1803:4;1800:1;1793:15;1831:4;1828:1;1821:15;1604:242;1862:2;1855:22;1899:23;;1958:13;;1951:21;1941:32;;1931:60;;1987:1;1984;1977:12;1931:60;2000:21;;2054:38;2088:2;2073:18;;2054:38;:::i;:::-;2049:2;2041:6;2037:15;2030:63;2126:38;2160:2;2149:9;2145:18;2126:38;:::i;:::-;2121:2;2109:15;;2102:63;2113:6;1365:831;-1:-1:-1;;;1365:831:26:o;2552:184::-;2604:77;2601:1;2594:88;2701:4;2698:1;2691:15;2725:4;2722:1;2715:15;2741:128;2808:9;;;2829:11;;;2826:37;;;2843:18;;:::i;4068:168::-;4141:9;;;4172;;4189:15;;;4183:22;;4169:37;4159:71;;4210:18;;:::i;4241:125::-;4306:9;;;4327:10;;;4324:36;;;4340:18;;:::i",
    "linkReferences": {}
  }
}