60806040523480156200001157600080fd5b5060405162001dac38038062001dac83398181016040528101906200003791906200040d565b620000576200004b6200015560201b60201c565b6200015d60201b60201c565b8260049081620000689190620006e8565b5081600590816200007a9190620006e8565b5080600381905550620000926200022160201b60201c565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001356200022160201b60201c565b604051620001449190620007e0565b60405180910390a3505050620007fd565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006b033b2e3c9fd0803ce8000000905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200029e8262000253565b810181811067ffffffffffffffff82111715620002c057620002bf62000264565b5b80604052505050565b6000620002d562000235565b9050620002e3828262000293565b919050565b600067ffffffffffffffff82111562000306576200030562000264565b5b620003118262000253565b9050602081019050919050565b60005b838110156200033e57808201518184015260208101905062000321565b838111156200034e576000848401525b50505050565b60006200036b6200036584620002e8565b620002c9565b9050828152602081018484840111156200038a57620003896200024e565b5b620003978482856200031e565b509392505050565b600082601f830112620003b757620003b662000249565b5b8151620003c984826020860162000354565b91505092915050565b6000819050919050565b620003e781620003d2565b8114620003f357600080fd5b50565b6000815190506200040781620003dc565b92915050565b6000806000606084860312156200042957620004286200023f565b5b600084015167ffffffffffffffff8111156200044a576200044962000244565b5b62000458868287016200039f565b935050602084015167ffffffffffffffff8111156200047c576200047b62000244565b5b6200048a868287016200039f565b92505060406200049d86828701620003f6565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004fa57607f821691505b60208210810362000510576200050f620004b2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200057a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200053b565b6200058686836200053b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620005c9620005c3620005bd84620003d2565b6200059e565b620003d2565b9050919050565b6000819050919050565b620005e583620005a8565b620005fd620005f482620005d0565b84845462000548565b825550505050565b600090565b6200061462000605565b62000621818484620005da565b505050565b5b8181101562000649576200063d6000826200060a565b60018101905062000627565b5050565b601f8211156200069857620006628162000516565b6200066d846200052b565b810160208510156200067d578190505b620006956200068c856200052b565b83018262000626565b50505b505050565b600082821c905092915050565b6000620006bd600019846008026200069d565b1980831691505092915050565b6000620006d88383620006aa565b9150826002028217905092915050565b620006f382620004a7565b67ffffffffffffffff8111156200070f576200070e62000264565b5b6200071b8254620004e1565b620007288282856200064d565b600060209050601f8311600181146200076057600084156200074b578287015190505b620007578582620006ca565b865550620007c7565b601f198416620007708662000516565b60005b828110156200079a5784890151825560018201915060208501945060208101905062000773565b86831015620007ba5784890151620007b6601f891682620006aa565b8355505b6001600288020188555050505b505050505050565b620007da81620003d2565b82525050565b6000602082019050620007f76000830184620007cf565b92915050565b61159f806200080d6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063715018a611610071578063715018a6146101a35780638b404639146101ad5780638da5cb5b146101c957806395d89b41146101e7578063a9059cbb14610205578063dd62ed3e14610235576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce5671461015557806370a0823114610173575b600080fd5b6100c1610265565b6040516100ce9190610d9f565b60405180910390f35b6100f160048036038101906100ec9190610e5a565b6102f7565b6040516100fe9190610eb5565b60405180910390f35b61010f610315565b60405161011c9190610edf565b60405180910390f35b61013f600480360381019061013a9190610efa565b610329565b60405161014c9190610eb5565b60405180910390f35b61015d610402565b60405161016a9190610f69565b60405180910390f35b61018d60048036038101906101889190610f84565b61040b565b60405161019a9190610edf565b60405180910390f35b6101ab610454565b005b6101c760048036038101906101c29190610fb1565b610468565b005b6101d161047a565b6040516101de9190610fed565b60405180910390f35b6101ef6104a3565b6040516101fc9190610d9f565b60405180910390f35b61021f600480360381019061021a9190610e5a565b610535565b60405161022c9190610eb5565b60405180910390f35b61024f600480360381019061024a9190611008565b610553565b60405161025c9190610edf565b60405180910390f35b60606004805461027490611077565b80601f01602080910402602001604051908101604052809291908181526020018280546102a090611077565b80156102ed5780601f106102c2576101008083540402835291602001916102ed565b820191906000526020600020905b8154815290600101906020018083116102d057829003601f168201915b5050505050905090565b600061030b6103046105da565b84846105e2565b6001905092915050565b60006b033b2e3c9fd0803ce8000000905090565b60006103368484846107ab565b6103f7846103426105da565b6103f28560405180606001604052806028815260200161154260289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103a86105da565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a489092919063ffffffff16565b6105e2565b600190509392505050565b60006012905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61045c610aac565b6104666000610b2a565b565b610470610aac565b8060068190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546104b290611077565b80601f01602080910402602001604051908101604052809291908181526020018280546104de90611077565b801561052b5780601f106105005761010080835404028352916020019161052b565b820191906000526020600020905b81548152906001019060200180831161050e57829003601f168201915b5050505050905090565b60006105496105426105da565b84846107ab565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610651576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106489061111a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b7906111ac565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161079e9190610edf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361081a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108119061123e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610889576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610880906112d0565b60405180910390fd5b610894838383610bee565b15610949576109058160405180606001604052806026815260200161151c60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a489092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61099b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a3b9190610edf565b60405180910390a3505050565b6000838311158290610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a879190610d9f565b60405180910390fd5b5060008385610a9f919061131f565b9050809150509392505050565b610ab46105da565b73ffffffffffffffffffffffffffffffffffffffff16610ad261047a565b73ffffffffffffffffffffffffffffffffffffffff1614610b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1f9061139f565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060035493508373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e86306040518363ffffffff1660e01b8152600401610c319291906113bf565b602060405180830381865afa158015610c4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7291906113fd565b90508091508115610c8e57600654331491508115915050610ca1565b60008314610c9f57610c9e61142a565b5b505b9392505050565b6000808284610cb79190611459565b905083811015610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf3906114fb565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d40578082015181840152602081019050610d25565b83811115610d4f576000848401525b50505050565b6000601f19601f8301169050919050565b6000610d7182610d06565b610d7b8185610d11565b9350610d8b818560208601610d22565b610d9481610d55565b840191505092915050565b60006020820190508181036000830152610db98184610d66565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610df182610dc6565b9050919050565b610e0181610de6565b8114610e0c57600080fd5b50565b600081359050610e1e81610df8565b92915050565b6000819050919050565b610e3781610e24565b8114610e4257600080fd5b50565b600081359050610e5481610e2e565b92915050565b60008060408385031215610e7157610e70610dc1565b5b6000610e7f85828601610e0f565b9250506020610e9085828601610e45565b9150509250929050565b60008115159050919050565b610eaf81610e9a565b82525050565b6000602082019050610eca6000830184610ea6565b92915050565b610ed981610e24565b82525050565b6000602082019050610ef46000830184610ed0565b92915050565b600080600060608486031215610f1357610f12610dc1565b5b6000610f2186828701610e0f565b9350506020610f3286828701610e0f565b9250506040610f4386828701610e45565b9150509250925092565b600060ff82169050919050565b610f6381610f4d565b82525050565b6000602082019050610f7e6000830184610f5a565b92915050565b600060208284031215610f9a57610f99610dc1565b5b6000610fa884828501610e0f565b91505092915050565b600060208284031215610fc757610fc6610dc1565b5b6000610fd584828501610e45565b91505092915050565b610fe781610de6565b82525050565b60006020820190506110026000830184610fde565b92915050565b6000806040838503121561101f5761101e610dc1565b5b600061102d85828601610e0f565b925050602061103e85828601610e0f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061108f57607f821691505b6020821081036110a2576110a1611048565b5b50919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611104602483610d11565b915061110f826110a8565b604082019050919050565b60006020820190508181036000830152611133816110f7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611196602283610d11565b91506111a18261113a565b604082019050919050565b600060208201905081810360008301526111c581611189565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611228602583610d11565b9150611233826111cc565b604082019050919050565b600060208201905081810360008301526112578161121b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006112ba602383610d11565b91506112c58261125e565b604082019050919050565b600060208201905081810360008301526112e9816112ad565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061132a82610e24565b915061133583610e24565b925082821015611348576113476112f0565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611389602083610d11565b915061139482611353565b602082019050919050565b600060208201905081810360008301526113b88161137c565b9050919050565b60006040820190506113d46000830185610fde565b6113e16020830184610fde565b9392505050565b6000815190506113f781610e2e565b92915050565b60006020828403121561141357611412610dc1565b5b6000611421848285016113e8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600061146482610e24565b915061146f83610e24565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156114a4576114a36112f0565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006114e5601b83610d11565b91506114f0826114af565b602082019050919050565b60006020820190508181036000830152611514816114d8565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a4eac18ee7f37d5b75ab1d4e4d91c4581e4ff637d136d66a94a0ced1c275f0f464736f6c634300080f0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000046783779fc7590809e0e7c96b6ddd4900c3901b200000000000000000000000000000000000000000000000000000000000000054d4f4f4e4b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054d4f4f4e4b000000000000000000000000000000000000000000000000000000