Mainnet
Testnet
Niki (NKI)

Niki (NKI)

Overview

Max Total supply:
300,000.0000000099999
NKI
Holders:
2 addresses
Total transfers:
4

Token info

Contract:
Name:
Niki
Symbol:
NKI
Decimals:
18
Token type:
wrc20
Contract Source Code Verified (Partial Match)

Contract Name:

Niki

Compiler Version:

0.8.9+commit.e5eed63a

EVM Version:

default evmVersion

Optimizations:

Disabled with 200 runs

License:

MIT License (MIT)

Contract source code and ABI

Creation bytecode

0x6101606040523480156200001257600080fd5b506040518060400160405280600481526020017f4e696b6900000000000000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e696b69000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4e4b4900000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001049291906200067b565b5080600490805190602001906200011d9291906200067b565b5050506000600560006101000a81548160ff0219169083151502179055506200015b6200014f6200025b60201b60201c565b6200026360201b60201c565b620001766006836200032960201b62000b901790919060201c565b6101208181525050620001996007826200032960201b62000b901790919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001d86200038d60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505050505062000255336200022b620003ea60201b60201c565b600a620002399190620008c5565b620493e062000249919062000916565b620003f360201b60201c565b62000d7f565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006020835110156200034f5762000347836200056160201b60201c565b905062000387565b826200036683620005ce60201b62000bdb1760201c565b60000190805190602001906200037e9291906200067b565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e051610100514630604051602001620003cf959493929190620009e8565b60405160208183030381529060405280519060200120905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000466576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200045d9062000aa6565b60405180910390fd5b6200047a60008383620005d860201b60201c565b80600260008282546200048e919062000ac8565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000541919062000b25565b60405180910390a36200055d600083836200060560201b60201c565b5050565b600080829050601f81511115620005b157826040517f305a27a9000000000000000000000000000000000000000000000000000000008152600401620005a8919062000bd5565b60405180910390fd5b805181620005bf9062000c38565b60001c1760001b915050919050565b6000819050919050565b620005e86200060a60201b60201c565b620006008383836200065f60201b62000be51760201c565b505050565b505050565b6200061a6200066460201b60201c565b156200065d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006549062000cf8565b60405180910390fd5b565b505050565b6000600560009054906101000a900460ff16905090565b828054620006899062000d49565b90600052602060002090601f016020900481019282620006ad5760008555620006f9565b82601f10620006c857805160ff1916838001178555620006f9565b82800160010185558215620006f9579182015b82811115620006f8578251825591602001919060010190620006db565b5b5090506200070891906200070c565b5090565b5b80821115620007275760008160009055506001016200070d565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007b9578086048111156200079157620007906200072b565b5b6001851615620007a15780820291505b8081029050620007b1856200075a565b945062000771565b94509492505050565b600082620007d45760019050620008a7565b81620007e45760009050620008a7565b8160018114620007fd576002811462000808576200083e565b6001915050620008a7565b60ff8411156200081d576200081c6200072b565b5b8360020a9150848211156200083757620008366200072b565b5b50620008a7565b5060208310610133831016604e8410600b8410161715620008785782820a9050838111156200087257620008716200072b565b5b620008a7565b62000887848484600162000767565b92509050818404811115620008a157620008a06200072b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008d282620008ae565b9150620008df83620008b8565b92506200090e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007c2565b905092915050565b60006200092382620008ae565b91506200093083620008ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200096c576200096b6200072b565b5b828202905092915050565b6000819050919050565b6200098c8162000977565b82525050565b6200099d81620008ae565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009d082620009a3565b9050919050565b620009e281620009c3565b82525050565b600060a082019050620009ff600083018862000981565b62000a0e602083018762000981565b62000a1d604083018662000981565b62000a2c606083018562000992565b62000a3b6080830184620009d7565b9695505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000a8e601f8362000a45565b915062000a9b8262000a56565b602082019050919050565b6000602082019050818103600083015262000ac18162000a7f565b9050919050565b600062000ad582620008ae565b915062000ae283620008ae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b1a5762000b196200072b565b5b828201905092915050565b600060208201905062000b3c600083018462000992565b92915050565b600081519050919050565b60005b8381101562000b6d57808201518184015260208101905062000b50565b8381111562000b7d576000848401525b50505050565b6000601f19601f8301169050919050565b600062000ba18262000b42565b62000bad818562000a45565b935062000bbf81856020860162000b4d565b62000bca8162000b83565b840191505092915050565b6000602082019050818103600083015262000bf1818462000b94565b905092915050565b600081519050919050565b6000819050602082019050919050565b600062000c22825162000977565b80915050919050565b600082821b905092915050565b600062000c458262000bf9565b8262000c518462000c04565b905062000c5e8162000c14565b9250602082101562000ca15762000c9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080262000c2b565b831692505b5050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600062000ce060108362000a45565b915062000ced8262000ca8565b602082019050919050565b6000602082019050818103600083015262000d138162000cd1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d6257607f821691505b6020821081141562000d795762000d7862000d1a565b5b50919050565b60805160a05160c05160e05161010051610120516101405161304962000dda6000396000610732015260006106fe015260006118d3015260006118b2015260006110c50152600061111b0152600061114401526130496000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c357806395d89b411161007c57806395d89b4114610397578063a457c2d7146103b5578063a9059cbb146103e5578063d505accf14610415578063dd62ed3e14610431578063f2fde38b1461046157610158565b8063715018a6146102f557806379cc6790146102ff5780637ecebe001461031b5780638456cb591461034b57806384b0196e146103555780638da5cb5b1461037957610158565b8063395093511161011557806339509351146102355780633f4ba83a1461026557806340c10f191461026f57806342966c681461028b5780635c975abb146102a757806370a08231146102c557610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063313ce567146101f95780633644e51514610217575b600080fd5b61016561047d565b6040516101729190611e5e565b60405180910390f35b61019560048036038101906101909190611f19565b61050f565b6040516101a29190611f74565b60405180910390f35b6101b3610532565b6040516101c09190611f9e565b60405180910390f35b6101e360048036038101906101de9190611fb9565b61053c565b6040516101f09190611f74565b60405180910390f35b61020161056b565b60405161020e9190612028565b60405180910390f35b61021f610574565b60405161022c919061205c565b60405180910390f35b61024f600480360381019061024a9190611f19565b610583565b60405161025c9190611f74565b60405180910390f35b61026d6105ba565b005b61028960048036038101906102849190611f19565b6105cc565b005b6102a560048036038101906102a09190612077565b6105e2565b005b6102af6105f6565b6040516102bc9190611f74565b60405180910390f35b6102df60048036038101906102da91906120a4565b61060d565b6040516102ec9190611f9e565b60405180910390f35b6102fd610655565b005b61031960048036038101906103149190611f19565b610669565b005b610335600480360381019061033091906120a4565b610689565b6040516103429190611f9e565b60405180910390f35b6103536106d9565b005b61035d6106eb565b60405161037097969594939291906121d9565b60405180910390f35b6103816107ed565b60405161038e919061225d565b60405180910390f35b61039f610817565b6040516103ac9190611e5e565b60405180910390f35b6103cf60048036038101906103ca9190611f19565b6108a9565b6040516103dc9190611f74565b60405180910390f35b6103ff60048036038101906103fa9190611f19565b610920565b60405161040c9190611f74565b60405180910390f35b61042f600480360381019061042a91906122d0565b610943565b005b61044b60048036038101906104469190612372565b610a85565b6040516104589190611f9e565b60405180910390f35b61047b600480360381019061047691906120a4565b610b0c565b005b60606003805461048c906123e1565b80601f01602080910402602001604051908101604052809291908181526020018280546104b8906123e1565b80156105055780601f106104da57610100808354040283529160200191610505565b820191906000526020600020905b8154815290600101906020018083116104e857829003601f168201915b5050505050905090565b60008061051a610bea565b9050610527818585610bf2565b600191505092915050565b6000600254905090565b600080610547610bea565b9050610554858285610dbd565b61055f858585610e49565b60019150509392505050565b60006012905090565b600061057e6110c1565b905090565b60008061058e610bea565b90506105af8185856105a08589610a85565b6105aa9190612442565b610bf2565b600191505092915050565b6105c2611178565b6105ca6111f6565b565b6105d4611178565b6105de8282611259565b5050565b6105f36105ed610bea565b826113b0565b50565b6000600560009054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61065d611178565b610667600061157e565b565b61067b82610675610bea565b83610dbd565b61068582826113b0565b5050565b60006106d2600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611644565b9050919050565b6106e1611178565b6106e9611652565b565b60006060806000806000606061072b60067f00000000000000000000000000000000000000000000000000000000000000006116b590919063ffffffff16565b61075f60077f00000000000000000000000000000000000000000000000000000000000000006116b590919063ffffffff16565b46306000801b600067ffffffffffffffff8111156107805761077f612498565b5b6040519080825280602002602001820160405280156107ae5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610826906123e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610852906123e1565b801561089f5780601f106108745761010080835404028352916020019161089f565b820191906000526020600020905b81548152906001019060200180831161088257829003601f168201915b5050505050905090565b6000806108b4610bea565b905060006108c28286610a85565b905083811015610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe90612539565b60405180910390fd5b6109148286868403610bf2565b60019250505092915050565b60008061092b610bea565b9050610938818585610e49565b600191505092915050565b83421115610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097d906125a5565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109b58c611765565b896040516020016109cb969594939291906125c5565b60405160208183030381529060405280519060200120905060006109ee826117c3565b905060006109fe828787876117dd565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6590612672565b60405180910390fd5b610a798a8a8a610bf2565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b14611178565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90612704565b60405180910390fd5b610b8d8161157e565b50565b6000602083511015610bac57610ba583611808565b9050610bd5565b82610bb683610bdb565b6000019080519060200190610bcc929190611d22565b5060ff60001b90505b92915050565b6000819050919050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5990612796565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990612828565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610db09190611f9e565b60405180910390a3505050565b6000610dc98484610a85565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e435781811015610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c90612894565b60405180910390fd5b610e428484848403610bf2565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb090612926565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f20906129b8565b60405180910390fd5b610f34838383611870565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb190612a4a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110a89190611f9e565b60405180910390a36110bb848484611888565b50505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561113d57507f000000000000000000000000000000000000000000000000000000000000000046145b1561116a577f00000000000000000000000000000000000000000000000000000000000000009050611175565b61117261188d565b90505b90565b611180610bea565b73ffffffffffffffffffffffffffffffffffffffff1661119e6107ed565b73ffffffffffffffffffffffffffffffffffffffff16146111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb90612ab6565b60405180910390fd5b565b6111fe611923565b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611242610bea565b60405161124f919061225d565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090612b22565b60405180910390fd5b6112d560008383611870565b80600260008282546112e79190612442565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113989190611f9e565b60405180910390a36113ac60008383611888565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141790612bb4565b60405180910390fd5b61142c82600083611870565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990612c46565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115659190611f9e565b60405180910390a361157983600084611888565b505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081600001549050919050565b61165a61196c565b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861169e610bea565b6040516116ab919061225d565b60405180910390a1565b606060ff60001b83146116d2576116cb836119b6565b905061175f565b8180546116de906123e1565b80601f016020809104026020016040519081016040528092919081815260200182805461170a906123e1565b80156117575780601f1061172c57610100808354040283529160200191611757565b820191906000526020600020905b81548152906001019060200180831161173a57829003601f168201915b505050505090505b92915050565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506117b281611644565b91506117bd81611a2a565b50919050565b60006117d66117d06110c1565b83611a40565b9050919050565b60008060006117ee87878787611a81565b915091506117fb81611b64565b8192505050949350505050565b600080829050601f8151111561185557826040517f305a27a900000000000000000000000000000000000000000000000000000000815260040161184c9190611e5e565b60405180910390fd5b80518161186190612ca3565b60001c1760001b915050919050565b61187861196c565b611883838383610be5565b505050565b505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611908959493929190612d0a565b60405160208183030381529060405280519060200120905090565b61192b6105f6565b61196a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196190612da9565b60405180910390fd5b565b6119746105f6565b156119b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ab90612e15565b60405180910390fd5b565b606060006119c383611cd2565b90506000602067ffffffffffffffff8111156119e2576119e1612498565b5b6040519080825280601f01601f191660200182016040528015611a145781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b6001816000016000828254019250508190555050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115611abc576000600391509150611b5b565b600060018787878760405160008152602001604052604051611ae19493929190612e35565b6020604051602081039080840390855afa158015611b03573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b5257600060019250925050611b5b565b80600092509250505b94509492505050565b60006004811115611b7857611b77612e7a565b5b816004811115611b8b57611b8a612e7a565b5b1415611b9657611ccf565b60016004811115611baa57611ba9612e7a565b5b816004811115611bbd57611bbc612e7a565b5b1415611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf590612ef5565b60405180910390fd5b60026004811115611c1257611c11612e7a565b5b816004811115611c2557611c24612e7a565b5b1415611c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5d90612f61565b60405180910390fd5b60036004811115611c7a57611c79612e7a565b5b816004811115611c8d57611c8c612e7a565b5b1415611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc590612ff3565b60405180910390fd5b5b50565b60008060ff8360001c169050601f811115611d19576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b828054611d2e906123e1565b90600052602060002090601f016020900481019282611d505760008555611d97565b82601f10611d6957805160ff1916838001178555611d97565b82800160010185558215611d97579182015b82811115611d96578251825591602001919060010190611d7b565b5b509050611da49190611da8565b5090565b5b80821115611dc1576000816000905550600101611da9565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611dff578082015181840152602081019050611de4565b83811115611e0e576000848401525b50505050565b6000601f19601f8301169050919050565b6000611e3082611dc5565b611e3a8185611dd0565b9350611e4a818560208601611de1565b611e5381611e14565b840191505092915050565b60006020820190508181036000830152611e788184611e25565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611eb082611e85565b9050919050565b611ec081611ea5565b8114611ecb57600080fd5b50565b600081359050611edd81611eb7565b92915050565b6000819050919050565b611ef681611ee3565b8114611f0157600080fd5b50565b600081359050611f1381611eed565b92915050565b60008060408385031215611f3057611f2f611e80565b5b6000611f3e85828601611ece565b9250506020611f4f85828601611f04565b9150509250929050565b60008115159050919050565b611f6e81611f59565b82525050565b6000602082019050611f896000830184611f65565b92915050565b611f9881611ee3565b82525050565b6000602082019050611fb36000830184611f8f565b92915050565b600080600060608486031215611fd257611fd1611e80565b5b6000611fe086828701611ece565b9350506020611ff186828701611ece565b925050604061200286828701611f04565b9150509250925092565b600060ff82169050919050565b6120228161200c565b82525050565b600060208201905061203d6000830184612019565b92915050565b6000819050919050565b61205681612043565b82525050565b6000602082019050612071600083018461204d565b92915050565b60006020828403121561208d5761208c611e80565b5b600061209b84828501611f04565b91505092915050565b6000602082840312156120ba576120b9611e80565b5b60006120c884828501611ece565b91505092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612106816120d1565b82525050565b61211581611ea5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61215081611ee3565b82525050565b60006121628383612147565b60208301905092915050565b6000602082019050919050565b60006121868261211b565b6121908185612126565b935061219b83612137565b8060005b838110156121cc5781516121b38882612156565b97506121be8361216e565b92505060018101905061219f565b5085935050505092915050565b600060e0820190506121ee600083018a6120fd565b81810360208301526122008189611e25565b905081810360408301526122148188611e25565b90506122236060830187611f8f565b612230608083018661210c565b61223d60a083018561204d565b81810360c083015261224f818461217b565b905098975050505050505050565b6000602082019050612272600083018461210c565b92915050565b6122818161200c565b811461228c57600080fd5b50565b60008135905061229e81612278565b92915050565b6122ad81612043565b81146122b857600080fd5b50565b6000813590506122ca816122a4565b92915050565b600080600080600080600060e0888a0312156122ef576122ee611e80565b5b60006122fd8a828b01611ece565b975050602061230e8a828b01611ece565b965050604061231f8a828b01611f04565b95505060606123308a828b01611f04565b94505060806123418a828b0161228f565b93505060a06123528a828b016122bb565b92505060c06123638a828b016122bb565b91505092959891949750929550565b6000806040838503121561238957612388611e80565b5b600061239785828601611ece565b92505060206123a885828601611ece565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123f957607f821691505b6020821081141561240d5761240c6123b2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061244d82611ee3565b915061245883611ee3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561248d5761248c612413565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612523602583611dd0565b915061252e826124c7565b604082019050919050565b6000602082019050818103600083015261255281612516565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b600061258f601d83611dd0565b915061259a82612559565b602082019050919050565b600060208201905081810360008301526125be81612582565b9050919050565b600060c0820190506125da600083018961204d565b6125e7602083018861210c565b6125f4604083018761210c565b6126016060830186611f8f565b61260e6080830185611f8f565b61261b60a0830184611f8f565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b600061265c601e83611dd0565b915061266782612626565b602082019050919050565b6000602082019050818103600083015261268b8161264f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006126ee602683611dd0565b91506126f982612692565b604082019050919050565b6000602082019050818103600083015261271d816126e1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612780602483611dd0565b915061278b82612724565b604082019050919050565b600060208201905081810360008301526127af81612773565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612812602283611dd0565b915061281d826127b6565b604082019050919050565b6000602082019050818103600083015261284181612805565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061287e601d83611dd0565b915061288982612848565b602082019050919050565b600060208201905081810360008301526128ad81612871565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612910602583611dd0565b915061291b826128b4565b604082019050919050565b6000602082019050818103600083015261293f81612903565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006129a2602383611dd0565b91506129ad82612946565b604082019050919050565b600060208201905081810360008301526129d181612995565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a34602683611dd0565b9150612a3f826129d8565b604082019050919050565b60006020820190508181036000830152612a6381612a27565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612aa0602083611dd0565b9150612aab82612a6a565b602082019050919050565b60006020820190508181036000830152612acf81612a93565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612b0c601f83611dd0565b9150612b1782612ad6565b602082019050919050565b60006020820190508181036000830152612b3b81612aff565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b9e602183611dd0565b9150612ba982612b42565b604082019050919050565b60006020820190508181036000830152612bcd81612b91565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c30602283611dd0565b9150612c3b82612bd4565b604082019050919050565b60006020820190508181036000830152612c5f81612c23565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612c8d8251612043565b80915050919050565b600082821b905092915050565b6000612cae82612c66565b82612cb884612c71565b9050612cc381612c81565b92506020821015612d0357612cfe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802612c96565b831692505b5050919050565b600060a082019050612d1f600083018861204d565b612d2c602083018761204d565b612d39604083018661204d565b612d466060830185611f8f565b612d53608083018461210c565b9695505050505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000612d93601483611dd0565b9150612d9e82612d5d565b602082019050919050565b60006020820190508181036000830152612dc281612d86565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612dff601083611dd0565b9150612e0a82612dc9565b602082019050919050565b60006020820190508181036000830152612e2e81612df2565b9050919050565b6000608082019050612e4a600083018761204d565b612e576020830186612019565b612e64604083018561204d565b612e71606083018461204d565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000612edf601883611dd0565b9150612eea82612ea9565b602082019050919050565b60006020820190508181036000830152612f0e81612ed2565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000612f4b601f83611dd0565b9150612f5682612f15565b602082019050919050565b60006020820190508181036000830152612f7a81612f3e565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fdd602283611dd0565b9150612fe882612f81565b604082019050919050565b6000602082019050818103600083015261300c81612fd0565b905091905056fea26469706673582212202a4c962bfddd061f3559b811c0c2b100cc24b04bc7e3fcc2d152967133985d9364736f6c63430008090033

Deployed bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c357806395d89b411161007c57806395d89b4114610397578063a457c2d7146103b5578063a9059cbb146103e5578063d505accf14610415578063dd62ed3e14610431578063f2fde38b1461046157610158565b8063715018a6146102f557806379cc6790146102ff5780637ecebe001461031b5780638456cb591461034b57806384b0196e146103555780638da5cb5b1461037957610158565b8063395093511161011557806339509351146102355780633f4ba83a1461026557806340c10f191461026f57806342966c681461028b5780635c975abb146102a757806370a08231146102c557610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063313ce567146101f95780633644e51514610217575b600080fd5b61016561047d565b6040516101729190611e5e565b60405180910390f35b61019560048036038101906101909190611f19565b61050f565b6040516101a29190611f74565b60405180910390f35b6101b3610532565b6040516101c09190611f9e565b60405180910390f35b6101e360048036038101906101de9190611fb9565b61053c565b6040516101f09190611f74565b60405180910390f35b61020161056b565b60405161020e9190612028565b60405180910390f35b61021f610574565b60405161022c919061205c565b60405180910390f35b61024f600480360381019061024a9190611f19565b610583565b60405161025c9190611f74565b60405180910390f35b61026d6105ba565b005b61028960048036038101906102849190611f19565b6105cc565b005b6102a560048036038101906102a09190612077565b6105e2565b005b6102af6105f6565b6040516102bc9190611f74565b60405180910390f35b6102df60048036038101906102da91906120a4565b61060d565b6040516102ec9190611f9e565b60405180910390f35b6102fd610655565b005b61031960048036038101906103149190611f19565b610669565b005b610335600480360381019061033091906120a4565b610689565b6040516103429190611f9e565b60405180910390f35b6103536106d9565b005b61035d6106eb565b60405161037097969594939291906121d9565b60405180910390f35b6103816107ed565b60405161038e919061225d565b60405180910390f35b61039f610817565b6040516103ac9190611e5e565b60405180910390f35b6103cf60048036038101906103ca9190611f19565b6108a9565b6040516103dc9190611f74565b60405180910390f35b6103ff60048036038101906103fa9190611f19565b610920565b60405161040c9190611f74565b60405180910390f35b61042f600480360381019061042a91906122d0565b610943565b005b61044b60048036038101906104469190612372565b610a85565b6040516104589190611f9e565b60405180910390f35b61047b600480360381019061047691906120a4565b610b0c565b005b60606003805461048c906123e1565b80601f01602080910402602001604051908101604052809291908181526020018280546104b8906123e1565b80156105055780601f106104da57610100808354040283529160200191610505565b820191906000526020600020905b8154815290600101906020018083116104e857829003601f168201915b5050505050905090565b60008061051a610bea565b9050610527818585610bf2565b600191505092915050565b6000600254905090565b600080610547610bea565b9050610554858285610dbd565b61055f858585610e49565b60019150509392505050565b60006012905090565b600061057e6110c1565b905090565b60008061058e610bea565b90506105af8185856105a08589610a85565b6105aa9190612442565b610bf2565b600191505092915050565b6105c2611178565b6105ca6111f6565b565b6105d4611178565b6105de8282611259565b5050565b6105f36105ed610bea565b826113b0565b50565b6000600560009054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61065d611178565b610667600061157e565b565b61067b82610675610bea565b83610dbd565b61068582826113b0565b5050565b60006106d2600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611644565b9050919050565b6106e1611178565b6106e9611652565b565b60006060806000806000606061072b60067f4e696b69000000000000000000000000000000000000000000000000000000046116b590919063ffffffff16565b61075f60077f31000000000000000000000000000000000000000000000000000000000000016116b590919063ffffffff16565b46306000801b600067ffffffffffffffff8111156107805761077f612498565b5b6040519080825280602002602001820160405280156107ae5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610826906123e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610852906123e1565b801561089f5780601f106108745761010080835404028352916020019161089f565b820191906000526020600020905b81548152906001019060200180831161088257829003601f168201915b5050505050905090565b6000806108b4610bea565b905060006108c28286610a85565b905083811015610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe90612539565b60405180910390fd5b6109148286868403610bf2565b60019250505092915050565b60008061092b610bea565b9050610938818585610e49565b600191505092915050565b83421115610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097d906125a5565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109b58c611765565b896040516020016109cb969594939291906125c5565b60405160208183030381529060405280519060200120905060006109ee826117c3565b905060006109fe828787876117dd565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6590612672565b60405180910390fd5b610a798a8a8a610bf2565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b14611178565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90612704565b60405180910390fd5b610b8d8161157e565b50565b6000602083511015610bac57610ba583611808565b9050610bd5565b82610bb683610bdb565b6000019080519060200190610bcc929190611d22565b5060ff60001b90505b92915050565b6000819050919050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5990612796565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990612828565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610db09190611f9e565b60405180910390a3505050565b6000610dc98484610a85565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e435781811015610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c90612894565b60405180910390fd5b610e428484848403610bf2565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb090612926565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f20906129b8565b60405180910390fd5b610f34838383611870565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb190612a4a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110a89190611f9e565b60405180910390a36110bb848484611888565b50505050565b60007f000000000000000000000000b83a08b6fec8f48a82c7fd8dae41e0b18adac61473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561113d57507f0000000000000000000000000000000000000000000000000000000000000a4146145b1561116a577f6af4b15628126584b7a099e1f5daa8610353d3e4580dd266cc62f321eb1065f79050611175565b61117261188d565b90505b90565b611180610bea565b73ffffffffffffffffffffffffffffffffffffffff1661119e6107ed565b73ffffffffffffffffffffffffffffffffffffffff16146111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb90612ab6565b60405180910390fd5b565b6111fe611923565b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611242610bea565b60405161124f919061225d565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090612b22565b60405180910390fd5b6112d560008383611870565b80600260008282546112e79190612442565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113989190611f9e565b60405180910390a36113ac60008383611888565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141790612bb4565b60405180910390fd5b61142c82600083611870565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990612c46565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115659190611f9e565b60405180910390a361157983600084611888565b505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081600001549050919050565b61165a61196c565b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861169e610bea565b6040516116ab919061225d565b60405180910390a1565b606060ff60001b83146116d2576116cb836119b6565b905061175f565b8180546116de906123e1565b80601f016020809104026020016040519081016040528092919081815260200182805461170a906123e1565b80156117575780601f1061172c57610100808354040283529160200191611757565b820191906000526020600020905b81548152906001019060200180831161173a57829003601f168201915b505050505090505b92915050565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506117b281611644565b91506117bd81611a2a565b50919050565b60006117d66117d06110c1565b83611a40565b9050919050565b60008060006117ee87878787611a81565b915091506117fb81611b64565b8192505050949350505050565b600080829050601f8151111561185557826040517f305a27a900000000000000000000000000000000000000000000000000000000815260040161184c9190611e5e565b60405180910390fd5b80518161186190612ca3565b60001c1760001b915050919050565b61187861196c565b611883838383610be5565b505050565b505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7fa08302ed7c06ecccbbc8eb73b91f9a57e097e9c79cff0bfbb2597a9c25a1c4397fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611908959493929190612d0a565b60405160208183030381529060405280519060200120905090565b61192b6105f6565b61196a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196190612da9565b60405180910390fd5b565b6119746105f6565b156119b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ab90612e15565b60405180910390fd5b565b606060006119c383611cd2565b90506000602067ffffffffffffffff8111156119e2576119e1612498565b5b6040519080825280601f01601f191660200182016040528015611a145781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b6001816000016000828254019250508190555050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115611abc576000600391509150611b5b565b600060018787878760405160008152602001604052604051611ae19493929190612e35565b6020604051602081039080840390855afa158015611b03573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b5257600060019250925050611b5b565b80600092509250505b94509492505050565b60006004811115611b7857611b77612e7a565b5b816004811115611b8b57611b8a612e7a565b5b1415611b9657611ccf565b60016004811115611baa57611ba9612e7a565b5b816004811115611bbd57611bbc612e7a565b5b1415611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf590612ef5565b60405180910390fd5b60026004811115611c1257611c11612e7a565b5b816004811115611c2557611c24612e7a565b5b1415611c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5d90612f61565b60405180910390fd5b60036004811115611c7a57611c79612e7a565b5b816004811115611c8d57611c8c612e7a565b5b1415611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc590612ff3565b60405180910390fd5b5b50565b60008060ff8360001c169050601f811115611d19576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b828054611d2e906123e1565b90600052602060002090601f016020900481019282611d505760008555611d97565b82601f10611d6957805160ff1916838001178555611d97565b82800160010185558215611d97579182015b82811115611d96578251825591602001919060010190611d7b565b5b509050611da49190611da8565b5090565b5b80821115611dc1576000816000905550600101611da9565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611dff578082015181840152602081019050611de4565b83811115611e0e576000848401525b50505050565b6000601f19601f8301169050919050565b6000611e3082611dc5565b611e3a8185611dd0565b9350611e4a818560208601611de1565b611e5381611e14565b840191505092915050565b60006020820190508181036000830152611e788184611e25565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611eb082611e85565b9050919050565b611ec081611ea5565b8114611ecb57600080fd5b50565b600081359050611edd81611eb7565b92915050565b6000819050919050565b611ef681611ee3565b8114611f0157600080fd5b50565b600081359050611f1381611eed565b92915050565b60008060408385031215611f3057611f2f611e80565b5b6000611f3e85828601611ece565b9250506020611f4f85828601611f04565b9150509250929050565b60008115159050919050565b611f6e81611f59565b82525050565b6000602082019050611f896000830184611f65565b92915050565b611f9881611ee3565b82525050565b6000602082019050611fb36000830184611f8f565b92915050565b600080600060608486031215611fd257611fd1611e80565b5b6000611fe086828701611ece565b9350506020611ff186828701611ece565b925050604061200286828701611f04565b9150509250925092565b600060ff82169050919050565b6120228161200c565b82525050565b600060208201905061203d6000830184612019565b92915050565b6000819050919050565b61205681612043565b82525050565b6000602082019050612071600083018461204d565b92915050565b60006020828403121561208d5761208c611e80565b5b600061209b84828501611f04565b91505092915050565b6000602082840312156120ba576120b9611e80565b5b60006120c884828501611ece565b91505092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612106816120d1565b82525050565b61211581611ea5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61215081611ee3565b82525050565b60006121628383612147565b60208301905092915050565b6000602082019050919050565b60006121868261211b565b6121908185612126565b935061219b83612137565b8060005b838110156121cc5781516121b38882612156565b97506121be8361216e565b92505060018101905061219f565b5085935050505092915050565b600060e0820190506121ee600083018a6120fd565b81810360208301526122008189611e25565b905081810360408301526122148188611e25565b90506122236060830187611f8f565b612230608083018661210c565b61223d60a083018561204d565b81810360c083015261224f818461217b565b905098975050505050505050565b6000602082019050612272600083018461210c565b92915050565b6122818161200c565b811461228c57600080fd5b50565b60008135905061229e81612278565b92915050565b6122ad81612043565b81146122b857600080fd5b50565b6000813590506122ca816122a4565b92915050565b600080600080600080600060e0888a0312156122ef576122ee611e80565b5b60006122fd8a828b01611ece565b975050602061230e8a828b01611ece565b965050604061231f8a828b01611f04565b95505060606123308a828b01611f04565b94505060806123418a828b0161228f565b93505060a06123528a828b016122bb565b92505060c06123638a828b016122bb565b91505092959891949750929550565b6000806040838503121561238957612388611e80565b5b600061239785828601611ece565b92505060206123a885828601611ece565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123f957607f821691505b6020821081141561240d5761240c6123b2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061244d82611ee3565b915061245883611ee3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561248d5761248c612413565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612523602583611dd0565b915061252e826124c7565b604082019050919050565b6000602082019050818103600083015261255281612516565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b600061258f601d83611dd0565b915061259a82612559565b602082019050919050565b600060208201905081810360008301526125be81612582565b9050919050565b600060c0820190506125da600083018961204d565b6125e7602083018861210c565b6125f4604083018761210c565b6126016060830186611f8f565b61260e6080830185611f8f565b61261b60a0830184611f8f565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b600061265c601e83611dd0565b915061266782612626565b602082019050919050565b6000602082019050818103600083015261268b8161264f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006126ee602683611dd0565b91506126f982612692565b604082019050919050565b6000602082019050818103600083015261271d816126e1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612780602483611dd0565b915061278b82612724565b604082019050919050565b600060208201905081810360008301526127af81612773565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612812602283611dd0565b915061281d826127b6565b604082019050919050565b6000602082019050818103600083015261284181612805565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061287e601d83611dd0565b915061288982612848565b602082019050919050565b600060208201905081810360008301526128ad81612871565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612910602583611dd0565b915061291b826128b4565b604082019050919050565b6000602082019050818103600083015261293f81612903565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006129a2602383611dd0565b91506129ad82612946565b604082019050919050565b600060208201905081810360008301526129d181612995565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a34602683611dd0565b9150612a3f826129d8565b604082019050919050565b60006020820190508181036000830152612a6381612a27565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612aa0602083611dd0565b9150612aab82612a6a565b602082019050919050565b60006020820190508181036000830152612acf81612a93565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612b0c601f83611dd0565b9150612b1782612ad6565b602082019050919050565b60006020820190508181036000830152612b3b81612aff565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b9e602183611dd0565b9150612ba982612b42565b604082019050919050565b60006020820190508181036000830152612bcd81612b91565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c30602283611dd0565b9150612c3b82612bd4565b604082019050919050565b60006020820190508181036000830152612c5f81612c23565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612c8d8251612043565b80915050919050565b600082821b905092915050565b6000612cae82612c66565b82612cb884612c71565b9050612cc381612c81565b92506020821015612d0357612cfe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802612c96565b831692505b5050919050565b600060a082019050612d1f600083018861204d565b612d2c602083018761204d565b612d39604083018661204d565b612d466060830185611f8f565b612d53608083018461210c565b9695505050505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000612d93601483611dd0565b9150612d9e82612d5d565b602082019050919050565b60006020820190508181036000830152612dc281612d86565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612dff601083611dd0565b9150612e0a82612dc9565b602082019050919050565b60006020820190508181036000830152612e2e81612df2565b9050919050565b6000608082019050612e4a600083018761204d565b612e576020830186612019565b612e64604083018561204d565b612e71606083018461204d565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000612edf601883611dd0565b9150612eea82612ea9565b602082019050919050565b60006020820190508181036000830152612f0e81612ed2565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000612f4b601f83611dd0565b9150612f5682612f15565b602082019050919050565b60006020820190508181036000830152612f7a81612f3e565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fdd602283611dd0565b9150612fe882612f81565b604082019050919050565b6000602082019050818103600083015261300c81612fd0565b905091905056fea26469706673582212202a4c962bfddd061f3559b811c0c2b100cc24b04bc7e3fcc2d152967133985d9364736f6c63430008090033

Source map

71538:626:0:-:0;;;71614:116;;;;;;;;;;68570:52;;;;;;;;;;;;;;;;;68609:4;39796:431;;;;;;;;;;;;;;;;;56022:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;56096:5;56088;:13;;;;;;;;;;;;:::i;:::-;;56121:7;56111;:17;;;;;;;;;;;;:::i;:::-;;56022:113;;49079:5;49069:7;;:15;;;;;;;;;;;;;;;;;;46392:32;46411:12;:10;;;:12;;:::i;:::-;46392:18;;;:32;;:::i;:::-;39869:45;39900:13;39869:4;:30;;;;;;:45;;;;:::i;:::-;39861:53;;;;;;39935:51;39969:16;39935:7;:33;;;;;;:51;;;;:::i;:::-;39924:62;;;;;;40026:4;40010:22;;;;;;39996:36;;;;;;40075:7;40059:25;;;;;;40042:42;;;;;;40112:13;40095:30;;;;;;40160:23;:21;;;:23;;:::i;:::-;40135:48;;;;;;40215:4;40193:27;;;;;;;;;;39796:431;;68570:52;71679:44:::2;71685:10;71712;:8;;;:10;;:::i;:::-;71706:2;:16;;;;:::i;:::-;71697:6;:25;;;;:::i;:::-;71679:5;;;:44;;:::i;:::-;71538:626:::0;;45254:96;45307:7;45333:10;45326:17;;45254:96;:::o;47882:187::-;47955:16;47974:6;;;;;;;;;;;47955:25;;47999:8;47990:6;;:17;;;;;;;;;;;;;;;;;;48053:8;48022:40;;48043:8;48022:40;;;;;;;;;;;;47945:124;47882:187;:::o;9267:341::-;9363:11;9412:2;9396:5;9390:19;:24;9386:216;;;9437:20;9451:5;9437:13;;;:20;;:::i;:::-;9430:27;;;;9386:216;9529:5;9488:32;9514:5;9488:25;;;;;:32;;:::i;:::-;:38;;:46;;;;;;;;;;;;:::i;:::-;;7743:66;9572:18;;9548:43;;9267:341;;;;;:::o;40581:180::-;40636:7;38547:95;40695:11;;40708:14;;40724:13;40747:4;40672:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;40662:92;;;;;;40655:99;;40581:180;:::o;57146:91::-;57204:5;57228:2;57221:9;;57146:91;:::o;62562:535::-;62664:1;62645:21;;:7;:21;;;;62637:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;62713:49;62742:1;62746:7;62755:6;62713:20;;;:49;;:::i;:::-;62789:6;62773:12;;:22;;;;;;;:::i;:::-;;;;;;;;62963:6;62941:9;:18;62951:7;62941:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;63015:7;62994:37;;63011:1;62994:37;;;63024:6;62994:37;;;;;;:::i;:::-;;;;;;;;63042:48;63070:1;63074:7;63083:6;63042:19;;;:48;;:::i;:::-;62562:535;;:::o;8061:286::-;8126:11;8149:17;8175:3;8149:30;;8207:2;8193:4;:11;:16;8189:72;;;8246:3;8232:18;;;;;;;;;;;:::i;:::-;;;;;;;;8189:72;8327:4;:11;8318:4;8310:13;;;:::i;:::-;8302:22;;:36;8294:45;;8270:70;;;8061:286;;;:::o;5571:202::-;5639:20;5747:10;5737:20;;5571:202;;;:::o;71969:193::-;49312:19;:17;;;:19;;:::i;:::-;72111:44:::1;72138:4;72144:2;72148:6;72111:26;;;;;:44;;:::i;:::-;71969:193:::0;;;:::o;66794:90::-;;;;:::o;49840:106::-;49910:8;:6;;;:8;;:::i;:::-;49909:9;49901:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;49840:106::o;66115:91::-;;;;:::o;49688:84::-;49735:4;49758:7;;;;;;;;;;;49751:14;;49688:84;:::o;71538:626::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:180:1:-;55:77;52:1;45:88;152:4;149:1;142:15;176:4;173:1;166:15;193:102;235:8;282:5;279:1;275:13;254:34;;193:102;;;:::o;301:848::-;362:5;369:4;393:6;384:15;;417:5;408:14;;431:712;452:1;442:8;439:15;431:712;;;547:4;542:3;538:14;532:4;529:24;526:50;;;556:18;;:::i;:::-;526:50;606:1;596:8;592:16;589:451;;;1021:4;1014:5;1010:16;1001:25;;589:451;1071:4;1065;1061:15;1053:23;;1101:32;1124:8;1101:32;:::i;:::-;1089:44;;431:712;;;301:848;;;;;;;:::o;1155:1073::-;1209:5;1400:8;1390:40;;1421:1;1412:10;;1423:5;;1390:40;1449:4;1439:36;;1466:1;1457:10;;1468:5;;1439:36;1535:4;1583:1;1578:27;;;;1619:1;1614:191;;;;1528:277;;1578:27;1596:1;1587:10;;1598:5;;;1614:191;1659:3;1649:8;1646:17;1643:43;;;1666:18;;:::i;:::-;1643:43;1715:8;1712:1;1708:16;1699:25;;1750:3;1743:5;1740:14;1737:40;;;1757:18;;:::i;:::-;1737:40;1790:5;;;1528:277;;1914:2;1904:8;1901:16;1895:3;1889:4;1886:13;1882:36;1864:2;1854:8;1851:16;1846:2;1840:4;1837:12;1833:35;1817:111;1814:246;;;1970:8;1964:4;1960:19;1951:28;;2005:3;1998:5;1995:14;1992:40;;;2012:18;;:::i;:::-;1992:40;2045:5;;1814:246;2085:42;2123:3;2113:8;2107:4;2104:1;2085:42;:::i;:::-;2070:57;;;;2159:4;2154:3;2150:14;2143:5;2140:25;2137:51;;;2168:18;;:::i;:::-;2137:51;2217:4;2210:5;2206:16;2197:25;;1155:1073;;;;;;:::o;2234:77::-;2271:7;2300:5;2289:16;;2234:77;;;:::o;2317:86::-;2352:7;2392:4;2385:5;2381:16;2370:27;;2317:86;;;:::o;2409:281::-;2467:5;2491:23;2509:4;2491:23;:::i;:::-;2483:31;;2535:25;2551:8;2535:25;:::i;:::-;2523:37;;2579:104;2616:66;2606:8;2600:4;2579:104;:::i;:::-;2570:113;;2409:281;;;;:::o;2696:348::-;2736:7;2759:20;2777:1;2759:20;:::i;:::-;2754:25;;2793:20;2811:1;2793:20;:::i;:::-;2788:25;;2981:1;2913:66;2909:74;2906:1;2903:81;2898:1;2891:9;2884:17;2880:105;2877:131;;;2988:18;;:::i;:::-;2877:131;3036:1;3033;3029:9;3018:20;;2696:348;;;;:::o;3050:77::-;3087:7;3116:5;3105:16;;3050:77;;;:::o;3133:118::-;3220:24;3238:5;3220:24;:::i;:::-;3215:3;3208:37;3133:118;;:::o;3257:::-;3344:24;3362:5;3344:24;:::i;:::-;3339:3;3332:37;3257:118;;:::o;3381:126::-;3418:7;3458:42;3451:5;3447:54;3436:65;;3381:126;;;:::o;3513:96::-;3550:7;3579:24;3597:5;3579:24;:::i;:::-;3568:35;;3513:96;;;:::o;3615:118::-;3702:24;3720:5;3702:24;:::i;:::-;3697:3;3690:37;3615:118;;:::o;3739:664::-;3944:4;3982:3;3971:9;3967:19;3959:27;;3996:71;4064:1;4053:9;4049:17;4040:6;3996:71;:::i;:::-;4077:72;4145:2;4134:9;4130:18;4121:6;4077:72;:::i;:::-;4159;4227:2;4216:9;4212:18;4203:6;4159:72;:::i;:::-;4241;4309:2;4298:9;4294:18;4285:6;4241:72;:::i;:::-;4323:73;4391:3;4380:9;4376:19;4367:6;4323:73;:::i;:::-;3739:664;;;;;;;;:::o;4409:169::-;4493:11;4527:6;4522:3;4515:19;4567:4;4562:3;4558:14;4543:29;;4409:169;;;;:::o;4584:181::-;4724:33;4720:1;4712:6;4708:14;4701:57;4584:181;:::o;4771:366::-;4913:3;4934:67;4998:2;4993:3;4934:67;:::i;:::-;4927:74;;5010:93;5099:3;5010:93;:::i;:::-;5128:2;5123:3;5119:12;5112:19;;4771:366;;;:::o;5143:419::-;5309:4;5347:2;5336:9;5332:18;5324:26;;5396:9;5390:4;5386:20;5382:1;5371:9;5367:17;5360:47;5424:131;5550:4;5424:131;:::i;:::-;5416:139;;5143:419;;;:::o;5568:305::-;5608:3;5627:20;5645:1;5627:20;:::i;:::-;5622:25;;5661:20;5679:1;5661:20;:::i;:::-;5656:25;;5815:1;5747:66;5743:74;5740:1;5737:81;5734:107;;;5821:18;;:::i;:::-;5734:107;5865:1;5862;5858:9;5851:16;;5568:305;;;;:::o;5879:222::-;5972:4;6010:2;5999:9;5995:18;5987:26;;6023:71;6091:1;6080:9;6076:17;6067:6;6023:71;:::i;:::-;5879:222;;;;:::o;6107:99::-;6159:6;6193:5;6187:12;6177:22;;6107:99;;;:::o;6212:307::-;6280:1;6290:113;6304:6;6301:1;6298:13;6290:113;;;6389:1;6384:3;6380:11;6374:18;6370:1;6365:3;6361:11;6354:39;6326:2;6323:1;6319:10;6314:15;;6290:113;;;6421:6;6418:1;6415:13;6412:101;;;6501:1;6492:6;6487:3;6483:16;6476:27;6412:101;6261:258;6212:307;;;:::o;6525:102::-;6566:6;6617:2;6613:7;6608:2;6601:5;6597:14;6593:28;6583:38;;6525:102;;;:::o;6633:364::-;6721:3;6749:39;6782:5;6749:39;:::i;:::-;6804:71;6868:6;6863:3;6804:71;:::i;:::-;6797:78;;6884:52;6929:6;6924:3;6917:4;6910:5;6906:16;6884:52;:::i;:::-;6961:29;6983:6;6961:29;:::i;:::-;6956:3;6952:39;6945:46;;6725:272;6633:364;;;;:::o;7003:313::-;7116:4;7154:2;7143:9;7139:18;7131:26;;7203:9;7197:4;7193:20;7189:1;7178:9;7174:17;7167:47;7231:78;7304:4;7295:6;7231:78;:::i;:::-;7223:86;;7003:313;;;;:::o;7322:98::-;7373:6;7407:5;7401:12;7391:22;;7322:98;;;:::o;7426:116::-;7477:4;7500:3;7492:11;;7530:4;7525:3;7521:14;7513:22;;7426:116;;;:::o;7548:154::-;7591:11;7627:29;7651:3;7645:10;7627:29;:::i;:::-;7690:5;7666:29;;7603:99;7548:154;;;:::o;7708:107::-;7752:8;7802:5;7796:4;7792:16;7771:37;;7708:107;;;;:::o;7821:594::-;7905:5;7936:38;7968:5;7936:38;:::i;:::-;7999:5;8026:40;8060:5;8026:40;:::i;:::-;8014:52;;8085:35;8111:8;8085:35;:::i;:::-;8076:44;;8144:2;8136:6;8133:14;8130:278;;;8215:169;8300:66;8270:6;8266:2;8262:15;8259:1;8255:23;8215:169;:::i;:::-;8192:5;8171:227;8162:236;;8130:278;7911:504;;7821:594;;;:::o;8421:166::-;8561:18;8557:1;8549:6;8545:14;8538:42;8421:166;:::o;8593:366::-;8735:3;8756:67;8820:2;8815:3;8756:67;:::i;:::-;8749:74;;8832:93;8921:3;8832:93;:::i;:::-;8950:2;8945:3;8941:12;8934:19;;8593:366;;;:::o;8965:419::-;9131:4;9169:2;9158:9;9154:18;9146:26;;9218:9;9212:4;9208:20;9204:1;9193:9;9189:17;9182:47;9246:131;9372:4;9246:131;:::i;:::-;9238:139;;8965:419;;;:::o;9390:180::-;9438:77;9435:1;9428:88;9535:4;9532:1;9525:15;9559:4;9556:1;9549:15;9576:320;9620:6;9657:1;9651:4;9647:12;9637:22;;9704:1;9698:4;9694:12;9725:18;9715:81;;9781:4;9773:6;9769:17;9759:27;;9715:81;9843:2;9835:6;9832:14;9812:18;9809:38;9806:84;;;9862:18;;:::i;:::-;9806:84;9627:269;9576:320;;;:::o;71538:626:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;