6080604052604051806060016040528060368152602001620040ac60369139600990805190602001906200003592919062000223565b50611e61600a556611c37937e08000600b556000600c60006101000a81548160ff0219169083151502179055503480156200006f57600080fd5b506040518060400160405280600e81526020017f4461726b4e69676874576f726c640000000000000000000000000000000000008152506040518060400160405280600381526020017f444e5700000000000000000000000000000000000000000000000000000000008152508160029080519060200190620000f492919062000223565b5080600390805190602001906200010d92919062000223565b506200011e6200014c60201b60201c565b6000819055505050620001466200013a6200015560201b60201c565b6200015d60201b60201c565b62000337565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002319062000302565b90600052602060002090601f016020900481019282620002555760008555620002a1565b82601f106200027057805160ff1916838001178555620002a1565b82800160010185558215620002a1579182015b82811115620002a057825182559160200191906001019062000283565b5b509050620002b09190620002b4565b5090565b5b80821115620002cf576000816000905550600101620002b5565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200031b57607f821691505b602082108103620003315762000330620002d3565b5b50919050565b613d6580620003476000396000f3fe6080604052600436106101ee5760003560e01c806370a082311161010d578063a0712d68116100a0578063c87b56dd1161006f578063c87b56dd146106a4578063cd7c0326146106e1578063e985e9c51461070c578063f2fde38b14610749578063f43a22dc14610772576101ee565b8063a0712d681461060d578063a22cb46514610629578063b88d4fde14610652578063c6119f301461067b576101ee565b80638da5cb5b116100dc5780638da5cb5b1461056357806391b7f5ed1461058e57806395d89b41146105b7578063a035b1fe146105e2576101ee565b806370a08231146104b9578063715018a6146104f65780638069876d1461050d57806381511e2314610538576101ee565b806332cb6b0c116101855780635c975abb116101545780635c975abb1461040f5780636352211e1461043a578063698982ba146104775780636c0360eb1461048e576101ee565b806332cb6b0c1461037b5780633ccfd60b146103a657806342842e0e146103bd57806355f804b3146103e6576101ee565b8063095ea7b3116101c1578063095ea7b3146102c157806318160ddd146102ea5780631e7269c51461031557806323b872dd14610352576101ee565b806301ffc9a7146101f357806302329a291461023057806306fdde0314610259578063081812fc14610284575b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190612d09565b61079d565b6040516102279190612d51565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612d98565b61087f565b005b34801561026557600080fd5b5061026e610918565b60405161027b9190612e5e565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a69190612eb6565b6109aa565b6040516102b89190612f24565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e39190612f6b565b610a26565b005b3480156102f657600080fd5b506102ff610b30565b60405161030c9190612fba565b60405180910390f35b34801561032157600080fd5b5061033c60048036038101906103379190612fd5565b610b47565b6040516103499190612fba565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190613002565b610b59565b005b34801561038757600080fd5b50610390610b69565b60405161039d9190612fba565b60405180910390f35b3480156103b257600080fd5b506103bb610b6f565b005b3480156103c957600080fd5b506103e460048036038101906103df9190613002565b610ca7565b005b3480156103f257600080fd5b5061040d6004803603810190610408919061318a565b610cc7565b005b34801561041b57600080fd5b50610424610d5d565b6040516104319190612d51565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190612eb6565b610d70565b60405161046e9190612f24565b60405180910390f35b34801561048357600080fd5b5061048c610d86565b005b34801561049a57600080fd5b506104a3610e16565b6040516104b09190612e5e565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db9190612fd5565b610ea4565b6040516104ed9190612fba565b60405180910390f35b34801561050257600080fd5b5061050b610f73565b005b34801561051957600080fd5b50610522610ffb565b60405161052f9190612fba565b60405180910390f35b34801561054457600080fd5b5061054d611001565b60405161055a9190612fba565b60405180910390f35b34801561056f57600080fd5b50610578611006565b6040516105859190612f24565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190612eb6565b611030565b005b3480156105c357600080fd5b506105cc6110b6565b6040516105d99190612e5e565b60405180910390f35b3480156105ee57600080fd5b506105f7611148565b6040516106049190612fba565b60405180910390f35b61062760048036038101906106229190612eb6565b61114e565b005b34801561063557600080fd5b50610650600480360381019061064b91906131d3565b611391565b005b34801561065e57600080fd5b50610679600480360381019061067491906132b4565b611508565b005b34801561068757600080fd5b506106a2600480360381019061069d9190612eb6565b611584565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190612eb6565b61160a565b6040516106d89190612e5e565b60405180910390f35b3480156106ed57600080fd5b506106f66116b2565b6040516107039190612f24565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190613337565b6116ca565b6040516107409190612d51565b60405180910390f35b34801561075557600080fd5b50610770600480360381019061076b9190612fd5565b6117ae565b005b34801561077e57600080fd5b506107876118a5565b6040516107949190612fba565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061086857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108785750610877826118aa565b5b9050919050565b610887611914565b73ffffffffffffffffffffffffffffffffffffffff166108a5611006565b73ffffffffffffffffffffffffffffffffffffffff16146108fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f2906133c3565b60405180910390fd5b80600c60006101000a81548160ff02191690831515021790555050565b60606002805461092790613412565b80601f016020809104026020016040519081016040528092919081815260200182805461095390613412565b80156109a05780601f10610975576101008083540402835291602001916109a0565b820191906000526020600020905b81548152906001019060200180831161098357829003601f168201915b5050505050905090565b60006109b58261191c565b6109eb576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a3182610d70565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a98576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ab7611914565b73ffffffffffffffffffffffffffffffffffffffff1614158015610ae95750610ae781610ae2611914565b6116ca565b155b15610b20576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b2b83838361196a565b505050565b6000610b3a611a1c565b6001546000540303905090565b6000610b5282611a25565b9050919050565b610b64838383611af4565b505050565b600a5481565b610b77611914565b73ffffffffffffffffffffffffffffffffffffffff16610b95611006565b73ffffffffffffffffffffffffffffffffffffffff1614610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be2906133c3565b60405180910390fd5b60004790506000610bfa611914565b73ffffffffffffffffffffffffffffffffffffffff1682604051610c1d90613474565b60006040518083038185875af1925050503d8060008114610c5a576040519150601f19603f3d011682016040523d82523d6000602084013e610c5f565b606091505b5050905080610ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9a906134d5565b60405180910390fd5b5050565b610cc283838360405180602001604052806000815250611508565b505050565b610ccf611914565b73ffffffffffffffffffffffffffffffffffffffff16610ced611006565b73ffffffffffffffffffffffffffffffffffffffff1614610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a906133c3565b60405180910390fd5b8060099080519060200190610d59929190612bb7565b5050565b600c60009054906101000a900460ff1681565b6000610d7b82611fe3565b600001519050919050565b610d8e611914565b73ffffffffffffffffffffffffffffffffffffffff16610dac611006565b73ffffffffffffffffffffffffffffffffffffffff1614610e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df9906133c3565b60405180910390fd5b610e14610e0d611914565b6001612272565b565b60098054610e2390613412565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4f90613412565b8015610e9c5780601f10610e7157610100808354040283529160200191610e9c565b820191906000526020600020905b815481529060010190602001808311610e7f57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0b576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610f7b611914565b73ffffffffffffffffffffffffffffffffffffffff16610f99611006565b73ffffffffffffffffffffffffffffffffffffffff1614610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe6906133c3565b60405180910390fd5b610ff96000612290565b565b611e6181565b600181565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611038611914565b73ffffffffffffffffffffffffffffffffffffffff16611056611006565b73ffffffffffffffffffffffffffffffffffffffff16146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a3906133c3565b60405180910390fd5b80600b8190555050565b6060600380546110c590613412565b80601f01602080910402602001604051908101604052809291908181526020018280546110f190613412565b801561113e5780601f106111135761010080835404028352916020019161113e565b820191906000526020600020905b81548152906001019060200180831161112157829003601f168201915b5050505050905090565b600b5481565b6000600b5490506000600a90506001611e6161116a9190613524565b83611173610b30565b61117d9190613524565b101561118c5760009150600590505b6000611196611914565b9050600c60009054906101000a900460ff16156111e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111df906135c6565b60405180910390fd5b836111f1610b30565b6111fb9190613524565b600a54101561123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690613632565b60405180910390fd5b60008411611282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112799061369e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e79061370a565b60405180910390fd5b83821015611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90613776565b60405180910390fd5b3483856113409190613796565b1115611381576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113789061383c565b60405180910390fd5b61138b8185612272565b50505050565b611399611914565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113fd576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061140a611914565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114b7611914565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114fc9190612d51565b60405180910390a35050565b611513848484611af4565b6115328373ffffffffffffffffffffffffffffffffffffffff16612356565b8015611547575061154584848484612379565b155b1561157e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b61158c611914565b73ffffffffffffffffffffffffffffffffffffffff166115aa611006565b73ffffffffffffffffffffffffffffffffffffffff1614611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f7906133c3565b60405180910390fd5b80600a8190555050565b60606116158261191c565b611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b906138a8565b60405180910390fd5b60006009805461166390613412565b90501161167f57604051806020016040528060008152506116ab565b600961168a836124c9565b60405160200161169b9291906139e4565b6040516020818303038152906040525b9050919050565b73f73ad95b3ed22c7331331589f6cae07aa6a6dfc381565b60008073f73ad95b3ed22c7331331589f6cae07aa6a6dfc390508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff1660e01b81526004016117349190612f24565b602060405180830381865afa158015611751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117759190613a51565b73ffffffffffffffffffffffffffffffffffffffff160361179a5760019150506117a8565b6117a48484612629565b9150505b92915050565b6117b6611914565b73ffffffffffffffffffffffffffffffffffffffff166117d4611006565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611821906133c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090613af0565b60405180910390fd5b6118a281612290565b50565b600a81565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600081611927611a1c565b11158015611936575060005482105b8015611963575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a8c576040517f35ebb31900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6000611aff82611fe3565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611b26611914565b73ffffffffffffffffffffffffffffffffffffffff161480611b595750611b588260000151611b53611914565b6116ca565b5b80611b9e5750611b67611914565b73ffffffffffffffffffffffffffffffffffffffff16611b86846109aa565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611bd7576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611c40576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ca6576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cb385858560016126bd565b611cc3600084846000015161196a565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611f7357600054811015611f725782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611fdc85858560016126c3565b5050505050565b611feb612c3d565b600082905080611ff9611a1c565b11158015612008575060005481105b1561223b576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161223957600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461211d57809250505061226d565b5b60011561223857818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461223357809250505061226d565b61211e565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b61228c8282604051806020016040528060008152506126c9565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261239f611914565b8786866040518563ffffffff1660e01b81526004016123c19493929190613b65565b6020604051808303816000875af19250505080156123fd57506040513d601f19601f820116820180604052508101906123fa9190613bc6565b60015b612476573d806000811461242d576040519150601f19603f3d011682016040523d82523d6000602084013e612432565b606091505b50600081510361246e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b606060008203612510576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612624565b600082905060005b6000821461254257808061252b90613bf3565b915050600a8261253b9190613c6a565b9150612518565b60008167ffffffffffffffff81111561255e5761255d61305f565b5b6040519080825280601f01601f1916602001820160405280156125905781602001600182028036833780820191505090505b5090505b6000851461261d576001826125a99190613c9b565b9150600a856125b89190613ccf565b60306125c49190613524565b60f81b8183815181106125da576125d9613d00565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856126169190613c6a565b9450612594565b8093505050505b919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b50505050565b50505050565b6126d683838360016126db565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612747576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403612781576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61278e60008683876126bd565b73a5f6d896e8b4d29ac6e5d8c4b26f8d2073ac90ae73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061281b5750736ea8f3b9187df360b0c3e76549b22095acae771b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80612865575073e749e9e7eaa02203c925a036226af80e2c79403e73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156128a057600080600090505b615ecd81101561289d57818061288790613bf3565b925050808061289590613bf3565b915050612872565b50505b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015612a6a5750612a698773ffffffffffffffffffffffffffffffffffffffff16612356565b5b15612b2f575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612adf6000888480600101955088612379565b612b15576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203612a70578260005414612b2a57600080fd5b612b9a565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612b30575b816000819055505050612bb060008683876126c3565b5050505050565b828054612bc390613412565b90600052602060002090601f016020900481019282612be55760008555612c2c565b82601f10612bfe57805160ff1916838001178555612c2c565b82800160010185558215612c2c579182015b82811115612c2b578251825591602001919060010190612c10565b5b509050612c399190612c80565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115612c99576000816000905550600101612c81565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612ce681612cb1565b8114612cf157600080fd5b50565b600081359050612d0381612cdd565b92915050565b600060208284031215612d1f57612d1e612ca7565b5b6000612d2d84828501612cf4565b91505092915050565b60008115159050919050565b612d4b81612d36565b82525050565b6000602082019050612d666000830184612d42565b92915050565b612d7581612d36565b8114612d8057600080fd5b50565b600081359050612d9281612d6c565b92915050565b600060208284031215612dae57612dad612ca7565b5b6000612dbc84828501612d83565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dff578082015181840152602081019050612de4565b83811115612e0e576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e3082612dc5565b612e3a8185612dd0565b9350612e4a818560208601612de1565b612e5381612e14565b840191505092915050565b60006020820190508181036000830152612e788184612e25565b905092915050565b6000819050919050565b612e9381612e80565b8114612e9e57600080fd5b50565b600081359050612eb081612e8a565b92915050565b600060208284031215612ecc57612ecb612ca7565b5b6000612eda84828501612ea1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f0e82612ee3565b9050919050565b612f1e81612f03565b82525050565b6000602082019050612f396000830184612f15565b92915050565b612f4881612f03565b8114612f5357600080fd5b50565b600081359050612f6581612f3f565b92915050565b60008060408385031215612f8257612f81612ca7565b5b6000612f9085828601612f56565b9250506020612fa185828601612ea1565b9150509250929050565b612fb481612e80565b82525050565b6000602082019050612fcf6000830184612fab565b92915050565b600060208284031215612feb57612fea612ca7565b5b6000612ff984828501612f56565b91505092915050565b60008060006060848603121561301b5761301a612ca7565b5b600061302986828701612f56565b935050602061303a86828701612f56565b925050604061304b86828701612ea1565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61309782612e14565b810181811067ffffffffffffffff821117156130b6576130b561305f565b5b80604052505050565b60006130c9612c9d565b90506130d5828261308e565b919050565b600067ffffffffffffffff8211156130f5576130f461305f565b5b6130fe82612e14565b9050602081019050919050565b82818337600083830152505050565b600061312d613128846130da565b6130bf565b9050828152602081018484840111156131495761314861305a565b5b61315484828561310b565b509392505050565b600082601f83011261317157613170613055565b5b813561318184826020860161311a565b91505092915050565b6000602082840312156131a05761319f612ca7565b5b600082013567ffffffffffffffff8111156131be576131bd612cac565b5b6131ca8482850161315c565b91505092915050565b600080604083850312156131ea576131e9612ca7565b5b60006131f885828601612f56565b925050602061320985828601612d83565b9150509250929050565b600067ffffffffffffffff82111561322e5761322d61305f565b5b61323782612e14565b9050602081019050919050565b600061325761325284613213565b6130bf565b9050828152602081018484840111156132735761327261305a565b5b61327e84828561310b565b509392505050565b600082601f83011261329b5761329a613055565b5b81356132ab848260208601613244565b91505092915050565b600080600080608085870312156132ce576132cd612ca7565b5b60006132dc87828801612f56565b94505060206132ed87828801612f56565b93505060406132fe87828801612ea1565b925050606085013567ffffffffffffffff81111561331f5761331e612cac565b5b61332b87828801613286565b91505092959194509250565b6000806040838503121561334e5761334d612ca7565b5b600061335c85828601612f56565b925050602061336d85828601612f56565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006133ad602083612dd0565b91506133b882613377565b602082019050919050565b600060208201905081810360008301526133dc816133a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061342a57607f821691505b60208210810361343d5761343c6133e3565b5b50919050565b600081905092915050565b50565b600061345e600083613443565b91506134698261344e565b600082019050919050565b600061347f82613451565b9150819050919050565b7f4661696c656420746f2073656e64000000000000000000000000000000000000600082015250565b60006134bf600e83612dd0565b91506134ca82613489565b602082019050919050565b600060208201905081810360008301526134ee816134b2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061352f82612e80565b915061353a83612e80565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561356f5761356e6134f5565b5b828201905092915050565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b60006135b0600683612dd0565b91506135bb8261357a565b602082019050919050565b600060208201905081810360008301526135df816135a3565b9050919050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b600061361c601283612dd0565b9150613627826135e6565b602082019050919050565b6000602082019050818103600083015261364b8161360f565b9050919050565b7f4e6f2030206d696e747300000000000000000000000000000000000000000000600082015250565b6000613688600a83612dd0565b915061369382613652565b602082019050919050565b600060208201905081810360008301526136b78161367b565b9050919050565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b60006136f4600c83612dd0565b91506136ff826136be565b602082019050919050565b60006020820190508181036000830152613723816136e7565b9050919050565b7f457863657373206d617820706572207478000000000000000000000000000000600082015250565b6000613760601183612dd0565b915061376b8261372a565b602082019050919050565b6000602082019050818103600083015261378f81613753565b9050919050565b60006137a182612e80565b91506137ac83612e80565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156137e5576137e46134f5565b5b828202905092915050565b7f496e76616c69642066756e64732070726f766964656400000000000000000000600082015250565b6000613826601683612dd0565b9150613831826137f0565b602082019050919050565b6000602082019050818103600083015261385581613819565b9050919050565b7f546f6b656e20646f6573206e6f742065786973742e0000000000000000000000600082015250565b6000613892601583612dd0565b915061389d8261385c565b602082019050919050565b600060208201905081810360008301526138c181613885565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546138f581613412565b6138ff81866138c8565b9450600182166000811461391a576001811461392b5761395e565b60ff1983168652818601935061395e565b613934856138d3565b60005b8381101561395657815481890152600182019150602081019050613937565b838801955050505b50505092915050565b600061397282612dc5565b61397c81856138c8565b935061398c818560208601612de1565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006139ce6005836138c8565b91506139d982613998565b600582019050919050565b60006139f082856138e8565b91506139fc8284613967565b9150613a07826139c1565b91508190509392505050565b6000613a1e82612f03565b9050919050565b613a2e81613a13565b8114613a3957600080fd5b50565b600081519050613a4b81613a25565b92915050565b600060208284031215613a6757613a66612ca7565b5b6000613a7584828501613a3c565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ada602683612dd0565b9150613ae582613a7e565b604082019050919050565b60006020820190508181036000830152613b0981613acd565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613b3782613b10565b613b418185613b1b565b9350613b51818560208601612de1565b613b5a81612e14565b840191505092915050565b6000608082019050613b7a6000830187612f15565b613b876020830186612f15565b613b946040830185612fab565b8181036060830152613ba68184613b2c565b905095945050505050565b600081519050613bc081612cdd565b92915050565b600060208284031215613bdc57613bdb612ca7565b5b6000613bea84828501613bb1565b91505092915050565b6000613bfe82612e80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c3057613c2f6134f5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c7582612e80565b9150613c8083612e80565b925082613c9057613c8f613c3b565b5b828204905092915050565b6000613ca682612e80565b9150613cb183612e80565b925082821015613cc457613cc36134f5565b5b828203905092915050565b6000613cda82612e80565b9150613ce583612e80565b925082613cf557613cf4613c3b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220dbe74782967d68e7ced03e34882643bf0881d6d09a36b5395375f9315bd976d864736f6c634300080e0033697066733a2f2f516d554868326f345a445042336f6b3256507266595570397734506278526a5235517468707046767a3744546d7a2f