60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f51756f6b6b6120546f6b656e00000000000000000000000000000000000000008152506040518060400160405280600381526020017f514f4b000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000517565b508060049081620000a1919062000517565b50505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600069d3c21bcecceda1000000905066038d7ea4c680006005819055506200011433826200011b60201b60201c565b5062000719565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200018d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000184906200065f565b60405180910390fd5b620001a1600083836200029360201b60201c565b8060026000828254620001b59190620006b0565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200020c9190620006b0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002739190620006fc565b60405180910390a36200028f600083836200029860201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200031f57607f821691505b602082108103620003355762000334620002d7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200039f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000360565b620003ab868362000360565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003f8620003f2620003ec84620003c3565b620003cd565b620003c3565b9050919050565b6000819050919050565b6200041483620003d7565b6200042c6200042382620003ff565b8484546200036d565b825550505050565b600090565b6200044362000434565b6200045081848462000409565b505050565b5b8181101562000478576200046c60008262000439565b60018101905062000456565b5050565b601f821115620004c75762000491816200033b565b6200049c8462000350565b81016020851015620004ac578190505b620004c4620004bb8562000350565b83018262000455565b50505b505050565b600082821c905092915050565b6000620004ec60001984600802620004cc565b1980831691505092915050565b6000620005078383620004d9565b9150826002028217905092915050565b62000522826200029d565b67ffffffffffffffff8111156200053e576200053d620002a8565b5b6200054a825462000306565b620005578282856200047c565b600060209050601f8311600181146200058f57600084156200057a578287015190505b620005868582620004f9565b865550620005f6565b601f1984166200059f866200033b565b60005b82811015620005c957848901518255600182019150602085019450602081019050620005a2565b86831015620005e95784890151620005e5601f891682620004d9565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000647601f83620005fe565b915062000654826200060f565b602082019050919050565b600060208201905081810360008301526200067a8162000638565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006bd82620003c3565b9150620006ca83620003c3565b9250828201905080821115620006e557620006e462000681565b5b92915050565b620006f681620003c3565b82525050565b6000602082019050620007136000830184620006eb565b92915050565b611c2380620007296000396000f3fe6080604052600436106101145760003560e01c80638d6cc56d116100a0578063a9059cbb11610064578063a9059cbb146103c5578063abd70aa214610402578063ba3b21861461042d578063dd62ed3e14610437578063e71264fa1461047457610114565b80638d6cc56d146102e057806395d89b41146103095780639637723a14610334578063a035b1fe1461035d578063a457c2d71461038857610114565b806323b872dd116100e757806323b872dd146101d5578063313ce567146102125780633222f7651461023d578063395093511461026657806370a08231146102a357610114565b8063039114b51461011957806306fdde0314610142578063095ea7b31461016d57806318160ddd146101aa575b600080fd5b34801561012557600080fd5b50610140600480360381019061013b919061133d565b61049d565b005b34801561014e57600080fd5b506101576105c9565b60405161016491906113fa565b60405180910390f35b34801561017957600080fd5b50610194600480360381019061018f9190611452565b61065b565b6040516101a191906114ad565b60405180910390f35b3480156101b657600080fd5b506101bf61067e565b6040516101cc91906114d7565b60405180910390f35b3480156101e157600080fd5b506101fc60048036038101906101f791906114f2565b610688565b60405161020991906114ad565b60405180910390f35b34801561021e57600080fd5b506102276106b7565b6040516102349190611561565b60405180910390f35b34801561024957600080fd5b50610264600480360381019061025f91906114f2565b6106c0565b005b34801561027257600080fd5b5061028d60048036038101906102889190611452565b6107b8565b60405161029a91906114ad565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c5919061133d565b6107ef565b6040516102d791906114d7565b60405180910390f35b3480156102ec57600080fd5b506103076004803603810190610302919061157c565b610837565b005b34801561031557600080fd5b5061031e610841565b60405161032b91906113fa565b60405180910390f35b34801561034057600080fd5b5061035b600480360381019061035691906115e7565b6108d3565b005b34801561036957600080fd5b50610372610a34565b60405161037f91906114d7565b60405180910390f35b34801561039457600080fd5b506103af60048036038101906103aa9190611452565b610a3a565b6040516103bc91906114ad565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190611452565b610ab1565b6040516103f991906114ad565b60405180910390f35b34801561040e57600080fd5b50610417610ad4565b60405161042491906114d7565b60405180910390f35b610435610adc565b005b34801561044357600080fd5b5061045e6004803603810190610459919061163a565b610af7565b60405161046b91906114d7565b60405180910390f35b34801561048057600080fd5b5061049b6004803603810190610496919061157c565b610b7e565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806105465750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057c906116c6565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600380546105d890611715565b80601f016020809104026020016040519081016040528092919081815260200182805461060490611715565b80156106515780601f1061062657610100808354040283529160200191610651565b820191906000526020600020905b81548152906001019060200180831161063457829003601f168201915b5050505050905090565b600080610666610c95565b9050610673818585610c9d565b600191505092915050565b6000600254905090565b600080610693610c95565b90506106a0858285610e66565b6106ab858585610ef2565b60019150509392505050565b60006012905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107695750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6107a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079f906116c6565b60405180910390fd5b6107b3838383610ef2565b505050565b6000806107c3610c95565b90506107e48185856107d58589610af7565b6107df9190611775565b610c9d565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b8060058190555050565b60606004805461085090611715565b80601f016020809104026020016040519081016040528092919081815260200182805461087c90611715565b80156108c95780601f1061089e576101008083540402835291602001916108c9565b820191906000526020600020905b8154815290600101906020018083116108ac57829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061097c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b2906116c6565b60405180910390fd5b6109e883600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ef2565b8273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a2e573d6000803e3d6000fd5b50505050565b60055481565b600080610a45610c95565b90506000610a538286610af7565b905083811015610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f9061181b565b60405180910390fd5b610aa58286868403610c9d565b60019250505092915050565b600080610abc610c95565b9050610ac9818585610ef2565b600191505092915050565b600047905090565b3460086000828254610aee9190611775565b92505081905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c275750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5d906116c6565b60405180910390fd5b610c92600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611171565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d03906118ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d729061193f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e5991906114d7565b60405180910390a3505050565b6000610e728484610af7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610eec5781811015610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed5906119ab565b60405180910390fd5b610eeb8484848403610c9d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5890611a3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790611acf565b60405180910390fd5b610fdb8383836112d0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105890611b61565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110f49190611775565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161115891906114d7565b60405180910390a361116b8484846112d5565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790611bcd565b60405180910390fd5b6111ec600083836112d0565b80600260008282546111fe9190611775565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112539190611775565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112b891906114d7565b60405180910390a36112cc600083836112d5565b5050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061130a826112df565b9050919050565b61131a816112ff565b811461132557600080fd5b50565b60008135905061133781611311565b92915050565b600060208284031215611353576113526112da565b5b600061136184828501611328565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113a4578082015181840152602081019050611389565b60008484015250505050565b6000601f19601f8301169050919050565b60006113cc8261136a565b6113d68185611375565b93506113e6818560208601611386565b6113ef816113b0565b840191505092915050565b6000602082019050818103600083015261141481846113c1565b905092915050565b6000819050919050565b61142f8161141c565b811461143a57600080fd5b50565b60008135905061144c81611426565b92915050565b60008060408385031215611469576114686112da565b5b600061147785828601611328565b92505060206114888582860161143d565b9150509250929050565b60008115159050919050565b6114a781611492565b82525050565b60006020820190506114c2600083018461149e565b92915050565b6114d18161141c565b82525050565b60006020820190506114ec60008301846114c8565b92915050565b60008060006060848603121561150b5761150a6112da565b5b600061151986828701611328565b935050602061152a86828701611328565b925050604061153b8682870161143d565b9150509250925092565b600060ff82169050919050565b61155b81611545565b82525050565b60006020820190506115766000830184611552565b92915050565b600060208284031215611592576115916112da565b5b60006115a08482850161143d565b91505092915050565b60006115b4826112df565b9050919050565b6115c4816115a9565b81146115cf57600080fd5b50565b6000813590506115e1816115bb565b92915050565b600080600060608486031215611600576115ff6112da565b5b600061160e868287016115d2565b935050602061161f8682870161143d565b92505060406116308682870161143d565b9150509250925092565b60008060408385031215611651576116506112da565b5b600061165f85828601611328565b925050602061167085828601611328565b9150509250929050565b7f4f6e6c792061646d696e20697320616c6c6f7765640000000000000000000000600082015250565b60006116b0601583611375565b91506116bb8261167a565b602082019050919050565b600060208201905081810360008301526116df816116a3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061172d57607f821691505b6020821081036117405761173f6116e6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117808261141c565b915061178b8361141c565b92508282019050808211156117a3576117a2611746565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611805602583611375565b9150611810826117a9565b604082019050919050565b60006020820190508181036000830152611834816117f8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611897602483611375565b91506118a28261183b565b604082019050919050565b600060208201905081810360008301526118c68161188a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611929602283611375565b9150611934826118cd565b604082019050919050565b600060208201905081810360008301526119588161191c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611995601d83611375565b91506119a08261195f565b602082019050919050565b600060208201905081810360008301526119c481611988565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611a27602583611375565b9150611a32826119cb565b604082019050919050565b60006020820190508181036000830152611a5681611a1a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611ab9602383611375565b9150611ac482611a5d565b604082019050919050565b60006020820190508181036000830152611ae881611aac565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611b4b602683611375565b9150611b5682611aef565b604082019050919050565b60006020820190508181036000830152611b7a81611b3e565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611bb7601f83611375565b9150611bc282611b81565b602082019050919050565b60006020820190508181036000830152611be681611baa565b905091905056fea2646970667358221220b8fdb96fc7f928653bb596fc2a33b06d1918e80474158de30a65226e489c267e64736f6c63430008120033