60806040526040518060800160405280600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001606467ffffffffffffffff16815260200167ffffffffffffffff801667ffffffffffffffff1681525060069060046200006c92919062000338565b503480156200007a57600080fd5b5060405162002752380380620027528339818101604052810190620000a0919062000484565b6000620000b26200030760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600460026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001a1919062000650565b62989680620001b19190620006a1565b60016000620001c56200030760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620002196200030f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200027a6200030760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620002d9919062000650565b62989680620002e99190620006a1565b604051620002f89190620006fd565b60405180910390a3506200071a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805482825590600052602060002090600301600490048101928215620003e85791602002820160005b83821115620003b057835183826101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550926020019260080160208160070104928301926001030262000362565b8015620003e65782816101000a81549067ffffffffffffffff0219169055600801602081600701049283019260010302620003b0565b505b509050620003f79190620003fb565b5090565b5b8082111562000416576000816000905550600101620003fc565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200044c826200041f565b9050919050565b6200045e816200043f565b81146200046a57600080fd5b50565b6000815190506200047e8162000453565b92915050565b6000602082840312156200049d576200049c6200041a565b5b6000620004ad848285016200046d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000544578086048111156200051c576200051b620004b6565b5b60018516156200052c5780820291505b80810290506200053c85620004e5565b9450620004fc565b94509492505050565b6000826200055f576001905062000632565b816200056f576000905062000632565b81600181146200058857600281146200059357620005c9565b600191505062000632565b60ff841115620005a857620005a7620004b6565b5b8360020a915084821115620005c257620005c1620004b6565b5b5062000632565b5060208310610133831016604e8410600b8410161715620006035782820a905083811115620005fd57620005fc620004b6565b5b62000632565b620006128484846001620004f2565b925090508184048111156200062c576200062b620004b6565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200065d8262000639565b91506200066a8362000643565b9250620006997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200054d565b905092915050565b6000620006ae8262000639565b9150620006bb8362000639565b9250828202620006cb8162000639565b91508282048414831517620006e557620006e4620004b6565b5b5092915050565b620006f78162000639565b82525050565b6000602082019050620007146000830184620006ec565b92915050565b612028806200072a6000396000f3fe6080604052600436106100a05760003560e01c80635be2088d116100645780635be2088d146101a757806370a08231146101be5780638da5cb5b146101fb57806395d89b4114610226578063a9059cbb14610251578063dd62ed3e1461028e576100a7565b806306fdde03146100ac578063095ea7b3146100d757806318160ddd1461011457806323b872dd1461013f578063313ce5671461017c576100a7565b366100a757005b600080fd5b3480156100b857600080fd5b506100c16102cb565b6040516100ce919061155a565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f99190611615565b610308565b60405161010b9190611670565b60405180910390f35b34801561012057600080fd5b50610129610326565b604051610136919061169a565b60405180910390f35b34801561014b57600080fd5b50610166600480360381019061016191906116b5565b610349565b6040516101739190611670565b60405180910390f35b34801561018857600080fd5b50610191610422565b60405161019e9190611724565b60405180910390f35b3480156101b357600080fd5b506101bc61042b565b005b3480156101ca57600080fd5b506101e560048036038101906101e0919061173f565b61057e565b6040516101f2919061169a565b60405180910390f35b34801561020757600080fd5b506102106105c7565b60405161021d919061177b565b60405180910390f35b34801561023257600080fd5b5061023b6105f0565b604051610248919061155a565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190611615565b61062d565b6040516102859190611670565b60405180910390f35b34801561029a57600080fd5b506102b560048036038101906102b09190611796565b61064b565b6040516102c2919061169a565b60405180910390f35b60606040518060400160405280600c81526020017f53636872c3b664696e6765720000000000000000000000000000000000000000815250905090565b600061031c6103156106d2565b84846106da565b6001905092915050565b60006009600a6103369190611938565b629896806103449190611983565b905090565b60006103568484846108a3565b610417846103626106d2565b61041285604051806060016040528060288152602001611fcb60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103c86106d2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112979092919063ffffffff16565b6106da565b600190509392505050565b60006009905090565b6104336106d2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b790611a11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600c81526020017f53636872c3b664696e6765720000000000000000000000000000000000000000815250905090565b600061064161063a6106d2565b84846108a3565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074090611aa3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107af90611b35565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610896919061169a565b60405180910390a3505050565b6108ab6105c7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061091657506108e76105c7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061096a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806109be5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80610a3457506001600460009054906101000a900460ff1660ff16108015610a335750600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b15610e2457600080600460009054906101000a900460ff1660ff16118015610a8f5750610a5f6105c7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ae85750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015610b3d5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508015610b62576001600460016101000a81548160ff021916908360ff1602179055505b610bb482600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112fb90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ced610c9f82610c46576006600081548110610c1757610c16611b55565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff16610c86565b6006600381548110610c5b57610c5a611b55565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff165b67ffffffffffffffff168461134590919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461134590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600460009054906101000a900460ff1660ff16108015610d9f5750600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610e1e5783600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600081819054906101000a900460ff1680929190610e0490611b84565b91906101000a81548160ff021916908360ff160217905550505b5061122d565b6000600460009054906101000a900460ff1660ff1611610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090611bf9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90611c8b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4e90611d1d565b60405180910390fd5b60008111610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190611daf565b60405180910390fd5b600061100a6064610ffc6006600081548110610fb957610fb8611b55565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff16856113a390919063ffffffff16565b61141d90919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146110ef576110ec60646110de6006600460019054906101000a900460ff1660016110879190611dcf565b60ff168154811061109b5761109a611b55565b5b90600052602060002090600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff16856113a390919063ffffffff16565b61141d90919063ffffffff16565b90505b61114182600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112fb90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111e861119a82846112fb90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461134590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161128a919061169a565b60405180910390a3505050565b60008383111582906112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d6919061155a565b60405180910390fd5b50600083856112ee9190611e04565b9050809150509392505050565b600061133d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611297565b905092915050565b60008082846113549190611e38565b905083811015611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139090611eb8565b60405180910390fd5b8091505092915050565b60008083036113b55760009050611417565b600082846113c39190611983565b90508284826113d29190611f07565b14611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990611faa565b60405180910390fd5b809150505b92915050565b600061145f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611467565b905092915050565b600080831182906114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a5919061155a565b60405180910390fd5b50600083856114bd9190611f07565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115045780820151818401526020810190506114e9565b60008484015250505050565b6000601f19601f8301169050919050565b600061152c826114ca565b61153681856114d5565b93506115468185602086016114e6565b61154f81611510565b840191505092915050565b600060208201905081810360008301526115748184611521565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115ac82611581565b9050919050565b6115bc816115a1565b81146115c757600080fd5b50565b6000813590506115d9816115b3565b92915050565b6000819050919050565b6115f2816115df565b81146115fd57600080fd5b50565b60008135905061160f816115e9565b92915050565b6000806040838503121561162c5761162b61157c565b5b600061163a858286016115ca565b925050602061164b85828601611600565b9150509250929050565b60008115159050919050565b61166a81611655565b82525050565b60006020820190506116856000830184611661565b92915050565b611694816115df565b82525050565b60006020820190506116af600083018461168b565b92915050565b6000806000606084860312156116ce576116cd61157c565b5b60006116dc868287016115ca565b93505060206116ed868287016115ca565b92505060406116fe86828701611600565b9150509250925092565b600060ff82169050919050565b61171e81611708565b82525050565b60006020820190506117396000830184611715565b92915050565b6000602082840312156117555761175461157c565b5b6000611763848285016115ca565b91505092915050565b611775816115a1565b82525050565b6000602082019050611790600083018461176c565b92915050565b600080604083850312156117ad576117ac61157c565b5b60006117bb858286016115ca565b92505060206117cc858286016115ca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561185c57808604811115611838576118376117d6565b5b60018516156118475780820291505b808102905061185585611805565b945061181c565b94509492505050565b6000826118755760019050611931565b816118835760009050611931565b816001811461189957600281146118a3576118d2565b6001915050611931565b60ff8411156118b5576118b46117d6565b5b8360020a9150848211156118cc576118cb6117d6565b5b50611931565b5060208310610133831016604e8410600b84101617156119075782820a905083811115611902576119016117d6565b5b611931565b6119148484846001611812565b9250905081840481111561192b5761192a6117d6565b5b81810290505b9392505050565b6000611943826115df565b915061194e83611708565b925061197b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611865565b905092915050565b600061198e826115df565b9150611999836115df565b92508282026119a7816115df565b915082820484148315176119be576119bd6117d6565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006119fb6020836114d5565b9150611a06826119c5565b602082019050919050565b60006020820190508181036000830152611a2a816119ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611a8d6024836114d5565b9150611a9882611a31565b604082019050919050565b60006020820190508181036000830152611abc81611a80565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b1f6022836114d5565b9150611b2a82611ac3565b604082019050919050565b60006020820190508181036000830152611b4e81611b12565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611b8f82611708565b915060ff8203611ba257611ba16117d6565b5b600182019050919050565b7f45524332303a2054726164696e672070616972206e6f7420666f756e64000000600082015250565b6000611be3601d836114d5565b9150611bee82611bad565b602082019050919050565b60006020820190508181036000830152611c1281611bd6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611c756025836114d5565b9150611c8082611c19565b604082019050919050565b60006020820190508181036000830152611ca481611c68565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611d076023836114d5565b9150611d1282611cab565b604082019050919050565b60006020820190508181036000830152611d3681611cfa565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000611d996029836114d5565b9150611da482611d3d565b604082019050919050565b60006020820190508181036000830152611dc881611d8c565b9050919050565b6000611dda82611708565b9150611de583611708565b9250828201905060ff811115611dfe57611dfd6117d6565b5b92915050565b6000611e0f826115df565b9150611e1a836115df565b9250828203905081811115611e3257611e316117d6565b5b92915050565b6000611e43826115df565b9150611e4e836115df565b9250828201905080821115611e6657611e656117d6565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611ea2601b836114d5565b9150611ead82611e6c565b602082019050919050565b60006020820190508181036000830152611ed181611e95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611f12826115df565b9150611f1d836115df565b925082611f2d57611f2c611ed8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f946021836114d5565b9150611f9f82611f38565b604082019050919050565b60006020820190508181036000830152611fc381611f87565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bb5bf199d2a55ce4e21df1eed1cc9af8053329b4a6e9bfad71cc894deb04694a64736f6c6343000813003300000000000000000000000084c6d8aea119be7d3e9d8f2ab12c19de4434a234