608060405266038d7ea4c68000600e553480156200001b575f80fd5b5060405162004b4d38038062004b4d833981810160405281019062000041919062000368565b8585815f90816200005391906200068b565b5080600190816200006591906200068b565b50505081600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360099081620000b991906200068b565b508060078190555082600d819055506001600b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050505050506200076f565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620001ab8262000163565b810181811067ffffffffffffffff82111715620001cd57620001cc62000173565b5b80604052505050565b5f620001e16200014a565b9050620001ef8282620001a0565b919050565b5f67ffffffffffffffff82111562000211576200021062000173565b5b6200021c8262000163565b9050602081019050919050565b5f5b83811015620002485780820151818401526020810190506200022b565b5f8484015250505050565b5f620002696200026384620001f4565b620001d6565b9050828152602081018484840111156200028857620002876200015f565b5b6200029584828562000229565b509392505050565b5f82601f830112620002b457620002b36200015b565b5b8151620002c684826020860162000253565b91505092915050565b5f819050919050565b620002e381620002cf565b8114620002ee575f80fd5b50565b5f815190506200030181620002d8565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620003328262000307565b9050919050565b620003448162000326565b81146200034f575f80fd5b50565b5f81519050620003628162000339565b92915050565b5f805f805f8060c0878903121562000385576200038462000153565b5b5f87015167ffffffffffffffff811115620003a557620003a462000157565b5b620003b389828a016200029d565b965050602087015167ffffffffffffffff811115620003d757620003d662000157565b5b620003e589828a016200029d565b955050604087015167ffffffffffffffff81111562000409576200040862000157565b5b6200041789828a016200029d565b94505060606200042a89828a01620002f1565b93505060806200043d89828a0162000352565b92505060a06200045089828a01620002f1565b9150509295509295509295565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620004ac57607f821691505b602082108103620004c257620004c162000467565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004e9565b620005328683620004e9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620005736200056d6200056784620002cf565b6200054a565b620002cf565b9050919050565b5f819050919050565b6200058e8362000553565b620005a66200059d826200057a565b848454620004f5565b825550505050565b5f90565b620005bc620005ae565b620005c981848462000583565b505050565b5b81811015620005f057620005e45f82620005b2565b600181019050620005cf565b5050565b601f8211156200063f576200060981620004c8565b6200061484620004da565b8101602085101562000624578190505b6200063c6200063385620004da565b830182620005ce565b50505b505050565b5f82821c905092915050565b5f620006615f198460080262000644565b1980831691505092915050565b5f6200067b838362000650565b9150826002028217905092915050565b62000696826200045d565b67ffffffffffffffff811115620006b257620006b162000173565b5b620006be825462000494565b620006cb828285620005f4565b5f60209050601f83116001811462000701575f8415620006ec578287015190505b620006f885826200066e565b86555062000767565b601f1984166200071186620004c8565b5f5b828110156200073a5784890151825560018201915060208501945060208101905062000713565b868310156200075a578489015162000756601f89168262000650565b8355505b6001600288020188555050505b505050505050565b6143d0806200077d5f395ff3fe608060405260043610610203575f3560e01c80638a72ea6a11610117578063a5097ebf1161009f578063b88d4fde1161006e578063b88d4fde1461078a578063c87b56dd146107b2578063e0391b09146107ee578063e985e9c514610818578063ee43fbb91461085457610203565b8063a5097ebf146106e4578063aa46a4001461070e578063b4e73b8914610738578063b6261d0a1461076257610203565b80639a6f2559116100e65780639a6f2559146105fe5780639b1225c41461063a5780639ffa9d0814610656578063a22cb46514610692578063a2d95d86146106ba57610203565b80638a72ea6a146105455780638da5cb5b1461058257806395d89b41146105ac5780639a2f6474146105d657610203565b8063277e54cc1161019a5780634d5b9536116101695780634d5b9536146104695780636352211e1461047357806368f1945f146104af57806370a08231146104d957806372b3b6201461051557610203565b8063277e54cc146103b1578063351a2b09146103ed5780633d26bb671461041757806342842e0e1461044157610203565b8063081812fc116101d6578063081812fc146102e9578063095ea7b31461032557806323b872dd1461034d578063262da5b51461037557610203565b806301b51e7f1461020757806301ffc9a71461024357806303c618c91461027f57806306fdde03146102bf575b5f80fd5b348015610212575f80fd5b5061022d6004803603810190610228919061321c565b610890565b60405161023a9190613261565b60405180910390f35b34801561024e575f80fd5b50610269600480360381019061026491906132cf565b6108ad565b6040516102769190613261565b60405180910390f35b34801561028a575f80fd5b506102a560048036038101906102a0919061332d565b61090d565b6040516102b6959493929190613387565b60405180910390f35b3480156102ca575f80fd5b506102d3610989565b6040516102e09190613462565b60405180910390f35b3480156102f4575f80fd5b5061030f600480360381019061030a919061332d565b610a18565b60405161031c9190613491565b60405180910390f35b348015610330575f80fd5b5061034b600480360381019061034691906134aa565b610a33565b005b348015610358575f80fd5b50610373600480360381019061036e91906134e8565b610a49565b005b348015610380575f80fd5b5061039b6004803603810190610396919061321c565b610b48565b6040516103a89190613538565b60405180910390f35b3480156103bc575f80fd5b506103d760048036038101906103d2919061321c565b610b5d565b6040516103e49190613261565b60405180910390f35b3480156103f8575f80fd5b50610401610baf565b60405161040e9190613538565b60405180910390f35b348015610422575f80fd5b5061042b610bb5565b6040516104389190613538565b60405180910390f35b34801561044c575f80fd5b50610467600480360381019061046291906134e8565b610bbb565b005b610471610bda565b005b34801561047e575f80fd5b506104996004803603810190610494919061332d565b610ed2565b6040516104a69190613491565b60405180910390f35b3480156104ba575f80fd5b506104c3610ee3565b6040516104d09190613538565b60405180910390f35b3480156104e4575f80fd5b506104ff60048036038101906104fa919061321c565b610eec565b60405161050c9190613538565b60405180910390f35b61052f600480360381019061052a919061367d565b610fa2565b60405161053c9190613538565b60405180910390f35b348015610550575f80fd5b5061056b6004803603810190610566919061332d565b611071565b6040516105799291906136d7565b60405180910390f35b34801561058d575f80fd5b506105966110bf565b6040516105a39190613491565b60405180910390f35b3480156105b7575f80fd5b506105c06110e4565b6040516105cd9190613462565b60405180910390f35b3480156105e1575f80fd5b506105fc60048036038101906105f7919061332d565b611174565b005b348015610609575f80fd5b50610624600480360381019061061f919061332d565b61148c565b6040516106319190613791565b60405180910390f35b610654600480360381019061064f919061332d565b61158e565b005b348015610661575f80fd5b5061067c6004803603810190610677919061321c565b611773565b6040516106899190613261565b60405180910390f35b34801561069d575f80fd5b506106b860048036038101906106b391906137d4565b611790565b005b3480156106c5575f80fd5b506106ce6117a6565b6040516106db9190613538565b60405180910390f35b3480156106ef575f80fd5b506106f8611805565b6040516107059190613462565b60405180910390f35b348015610719575f80fd5b50610722611891565b60405161072f9190613538565b60405180910390f35b348015610743575f80fd5b5061074c61189c565b6040516107599190613538565b60405180910390f35b34801561076d575f80fd5b506107886004803603810190610783919061321c565b6118a8565b005b348015610795575f80fd5b506107b060048036038101906107ab91906138b0565b611b76565b005b3480156107bd575f80fd5b506107d860048036038101906107d3919061332d565b611b93565b6040516107e59190613462565b60405180910390f35b3480156107f9575f80fd5b50610802611c9e565b60405161080f9190613a3e565b60405180910390f35b348015610823575f80fd5b5061083e60048036038101906108399190613a5e565b611e5f565b60405161084b9190613261565b60405180910390f35b34801561085f575f80fd5b5061087a6004803603810190610875919061321c565b611eed565b6040516108879190613538565b60405180910390f35b6013602052805f5260405f205f915054906101000a900460ff1681565b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610906575061090582611f02565b5b9050919050565b6014602052805f5260405f205f91509050805f015490806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004015f9054906101000a900460ff16905085565b60605f805461099790613ac9565b80601f01602080910402602001604051908101604052809291908181526020018280546109c390613ac9565b8015610a0e5780601f106109e557610100808354040283529160200191610a0e565b820191905f5260205f20905b8154815290600101906020018083116109f157829003601f168201915b5050505050905090565b5f610a2282611fe3565b50610a2c82612069565b9050919050565b610a458282610a406120a2565b6120a9565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ab9575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610ab09190613491565b60405180910390fd5b5f610acc8383610ac76120a2565b6120bb565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b42578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610b3993929190613af9565b60405180910390fd5b50505050565b6011602052805f5260405f205f915090505481565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60075481565b610bd583838360405180602001604052805f815250611b76565b505050565b5f610be560086122c6565b9050600d543414610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2290613b78565b60405180910390fd5b5f600b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f600190505b818111610d5f575f60145f8381526020019081526020015f206002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610cef8133846122d2565b3360145f8481526020019081526020015f206002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d4b3083610a33565b508080610d5790613bc3565b915050610ca6565b50600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f19350505050158015610dc4573d5f803e3d5ffd5b5033600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f610edc82611fe3565b9050919050565b5f600e54905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f5d575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610f549190613491565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990613c54565b60405180910390fd5b61103c600861243a565b5f61104760086122c6565b9050611053338261244e565b61105d818561246b565b61106781846124c5565b8091505092915050565b600f8181548110611080575f80fd5b905f5260205f2090600202015f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600180546110f390613ac9565b80601f016020809104026020016040519081016040528092919081815260200182805461111f90613ac9565b801561116a5780601f106111415761010080835404028352916020019161116a565b820191905f5260205f20905b81548152906001019060200180831161114d57829003601f168201915b5050505050905090565b6001151560135f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036112a75760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200182815250600f60125f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548154811061124557611244613c72565b5b905f5260205f2090600202015f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050611489565b600f60405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200183815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015550505f60105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600f805490506113f29190613c9f565b60125f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160135f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b50565b611494613159565b60145f8381526020019081526020015f206040518060a00160405290815f8201548152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015f9054906101000a900460ff1615151515815250509050919050565b5f60145f8381526020019081526020015f206003015490505f60145f8481526020019081526020015f206002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081341461161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161690613d42565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361168d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168490613daa565b60405180910390fd5b600160145f8581526020019081526020015f206004015f6101000a81548160ff0219169083151502179055503360145f8581526020019081526020015f206002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611715600a61243a565b6117208133856122d2565b61172a3084610a33565b8073ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f1935050505015801561176d573d5f803e3d5ffd5b50505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b6117a261179b6120a2565b83836126b5565b5050565b5f806117b260086122c6565b90505f80600190505b8281116117fc575f60145f8381526020019081526020015f2060030154905080836117e69190613dc8565b92505080806117f490613bc3565b9150506117bb565b50809250505090565b6009805461181290613ac9565b80601f016020809104026020016040519081016040528092919081815260200182805461183e90613ac9565b80156118895780601f1061186057610100808354040283529160200191611889565b820191905f5260205f20905b81548152906001019060200180831161186c57829003601f168201915b505050505081565b6008805f0154905081565b5f600f80549050905090565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90613e45565b60405180910390fd5b60115f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600d81905550600160105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f5b600f80549050811015611b0a575f600f82815481106119f4576119f3613c72565b5b905f5260205f2090600202015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505080806001019150506119d2565b505b5f600f805490501115611b7357600f805480611b2b57611b2a613e63565b5b600190038181905f5260205f2090600202015f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f905550509055611b0c565b50565b611b81848484610a49565b611b8d8484848461281e565b50505050565b6060611b9e82611fe3565b505f60065f8481526020019081526020015f208054611bbc90613ac9565b80601f0160208091040260200160405190810160405280929190818152602001828054611be890613ac9565b8015611c335780601f10611c0a57610100808354040283529160200191611c33565b820191905f5260205f20905b815481529060010190602001808311611c1657829003601f168201915b505050505090505f611c436129d0565b90505f815103611c57578192505050611c99565b5f82511115611c8b578082604051602001611c73929190613eca565b60405160208183030381529060405292505050611c99565b611c94846129e6565b925050505b919050565b60605f611cab60086122c6565b90505f8167ffffffffffffffff811115611cc857611cc7613559565b5b604051908082528060200260200182016040528015611d0157816020015b611cee613159565b815260200190600190039081611ce65790505b5090505f80805f90505b84811015611e5457600181611d209190613dc8565b91505f60145f8481526020019081526020015f209050806040518060a00160405290815f8201548152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015f9054906101000a900460ff161515151581525050858581518110611e2c57611e2b613c72565b5b6020026020010181905250600184611e449190613dc8565b9350508080600101915050611d0b565b508294505050505090565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6012602052805f5260405f205f915090505481565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611fcc57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611fdc5750611fdb82612a4c565b5b9050919050565b5f80611fee83612ab5565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361206057826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016120579190613538565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6120b68383836001612aee565b505050565b5f806120c684612ab5565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461210757612106818486612cad565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612192576121465f855f80612aee565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461221157600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b5f815f01549050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612342575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016123399190613491565b60405180910390fd5b5f61234e83835f6120bb565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123c057816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016123b79190613538565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612434578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161242b93929190613af9565b60405180910390fd5b50505050565b6001815f015f828254019250508190555050565b612467828260405180602001604052805f815250612d70565b5050565b8060065f8481526020019081526020015f209081612489919061408a565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516124b99190613538565b60405180910390a15050565b600e543414612509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612500906141c9565b60405180910390fd5b5f811161254b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254290614231565b60405180910390fd5b6040518060a001604052808381526020013073ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020016001151581525060145f8481526020019081526020015f205f820151815f01556020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050817f9339409317fd01fabff48b703019016f49159bacc801ae872d2ca637d226e4c030338460016040516126a9949392919061424f565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361272557816040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161271c9190613491565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516128119190613261565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b11156129ca578273ffffffffffffffffffffffffffffffffffffffff1663150b7a026128616120a2565b8685856040518563ffffffff1660e01b815260040161288394939291906142e4565b6020604051808303815f875af19250505080156128be57506040513d601f19601f820116820180604052508101906128bb9190614342565b60015b61293f573d805f81146128ec576040519150601f19603f3d011682016040523d82523d5f602084013e6128f1565b606091505b505f81510361293757836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161292e9190613491565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146129c857836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016129bf9190613491565b60405180910390fd5b505b50505050565b606060405180602001604052805f815250905090565b60606129f182611fe3565b505f6129fb6129d0565b90505f815111612a195760405180602001604052805f815250612a44565b80612a2384612d8b565b604051602001612a34929190613eca565b6040516020818303038152906040525b915050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080612b2657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c58575f612b3584611fe3565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612b9f57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612bb25750612bb08184611e5f565b155b15612bf457826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401612beb9190613491565b60405180910390fd5b8115612c5657838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b612cb8838383612e55565b612d6b575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d2c57806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612d239190613538565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612d629291906136d7565b60405180910390fd5b505050565b612d7a8383612f15565b612d865f84848461281e565b505050565b60605f6001612d9984613008565b0190505f8167ffffffffffffffff811115612db757612db6613559565b5b6040519080825280601f01601f191660200182016040528015612de95781602001600182028036833780820191505090505b5090505f82602001820190505b600115612e4a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612e3f57612e3e61436d565b5b0494505f8503612df6575b819350505050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f0c57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612ecd5750612ecc8484611e5f565b5b80612f0b57508273ffffffffffffffffffffffffffffffffffffffff16612ef383612069565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f85575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612f7c9190613491565b60405180910390fd5b5f612f9183835f6120bb565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613003575f6040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401612ffa9190613491565b60405180910390fd5b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613064577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161305a5761305961436d565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106130a1576d04ee2d6d415b85acef810000000083816130975761309661436d565b5b0492506020810190505b662386f26fc1000083106130d057662386f26fc1000083816130c6576130c561436d565b5b0492506010810190505b6305f5e10083106130f9576305f5e10083816130ef576130ee61436d565b5b0492506008810190505b612710831061311e5761271083816131145761311361436d565b5b0492506004810190505b6064831061314157606483816131375761313661436d565b5b0492506002810190505b600a8310613150576001810190505b80915050919050565b6040518060a001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f151581525090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6131eb826131c2565b9050919050565b6131fb816131e1565b8114613205575f80fd5b50565b5f81359050613216816131f2565b92915050565b5f60208284031215613231576132306131ba565b5b5f61323e84828501613208565b91505092915050565b5f8115159050919050565b61325b81613247565b82525050565b5f6020820190506132745f830184613252565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6132ae8161327a565b81146132b8575f80fd5b50565b5f813590506132c9816132a5565b92915050565b5f602082840312156132e4576132e36131ba565b5b5f6132f1848285016132bb565b91505092915050565b5f819050919050565b61330c816132fa565b8114613316575f80fd5b50565b5f8135905061332781613303565b92915050565b5f60208284031215613342576133416131ba565b5b5f61334f84828501613319565b91505092915050565b613361816132fa565b82525050565b5f613371826131c2565b9050919050565b61338181613367565b82525050565b5f60a08201905061339a5f830188613358565b6133a76020830187613378565b6133b46040830186613378565b6133c16060830185613358565b6133ce6080830184613252565b9695505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561340f5780820151818401526020810190506133f4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613434826133d8565b61343e81856133e2565b935061344e8185602086016133f2565b6134578161341a565b840191505092915050565b5f6020820190508181035f83015261347a818461342a565b905092915050565b61348b816131e1565b82525050565b5f6020820190506134a45f830184613482565b92915050565b5f80604083850312156134c0576134bf6131ba565b5b5f6134cd85828601613208565b92505060206134de85828601613319565b9150509250929050565b5f805f606084860312156134ff576134fe6131ba565b5b5f61350c86828701613208565b935050602061351d86828701613208565b925050604061352e86828701613319565b9150509250925092565b5f60208201905061354b5f830184613358565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61358f8261341a565b810181811067ffffffffffffffff821117156135ae576135ad613559565b5b80604052505050565b5f6135c06131b1565b90506135cc8282613586565b919050565b5f67ffffffffffffffff8211156135eb576135ea613559565b5b6135f48261341a565b9050602081019050919050565b828183375f83830152505050565b5f61362161361c846135d1565b6135b7565b90508281526020810184848401111561363d5761363c613555565b5b613648848285613601565b509392505050565b5f82601f83011261366457613663613551565b5b813561367484826020860161360f565b91505092915050565b5f8060408385031215613693576136926131ba565b5b5f83013567ffffffffffffffff8111156136b0576136af6131be565b5b6136bc85828601613650565b92505060206136cd85828601613319565b9150509250929050565b5f6040820190506136ea5f830185613482565b6136f76020830184613358565b9392505050565b613707816132fa565b82525050565b61371681613367565b82525050565b61372581613247565b82525050565b60a082015f82015161373f5f8501826136fe565b506020820151613752602085018261370d565b506040820151613765604085018261370d565b50606082015161377860608501826136fe565b50608082015161378b608085018261371c565b50505050565b5f60a0820190506137a45f83018461372b565b92915050565b6137b381613247565b81146137bd575f80fd5b50565b5f813590506137ce816137aa565b92915050565b5f80604083850312156137ea576137e96131ba565b5b5f6137f785828601613208565b9250506020613808858286016137c0565b9150509250929050565b5f67ffffffffffffffff82111561382c5761382b613559565b5b6138358261341a565b9050602081019050919050565b5f61385461384f84613812565b6135b7565b9050828152602081018484840111156138705761386f613555565b5b61387b848285613601565b509392505050565b5f82601f83011261389757613896613551565b5b81356138a7848260208601613842565b91505092915050565b5f805f80608085870312156138c8576138c76131ba565b5b5f6138d587828801613208565b94505060206138e687828801613208565b93505060406138f787828801613319565b925050606085013567ffffffffffffffff811115613918576139176131be565b5b61392487828801613883565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b60a082015f82015161396d5f8501826136fe565b506020820151613980602085018261370d565b506040820151613993604085018261370d565b5060608201516139a660608501826136fe565b5060808201516139b9608085018261371c565b50505050565b5f6139ca8383613959565b60a08301905092915050565b5f602082019050919050565b5f6139ec82613930565b6139f6818561393a565b9350613a018361394a565b805f5b83811015613a31578151613a1888826139bf565b9750613a23836139d6565b925050600181019050613a04565b5085935050505092915050565b5f6020820190508181035f830152613a5681846139e2565b905092915050565b5f8060408385031215613a7457613a736131ba565b5b5f613a8185828601613208565b9250506020613a9285828601613208565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613ae057607f821691505b602082108103613af357613af2613a9c565b5b50919050565b5f606082019050613b0c5f830186613482565b613b196020830185613358565b613b266040830184613482565b949350505050565b7f746f74616c5072696365206973206e6f7420636f7272656374000000000000005f82015250565b5f613b626019836133e2565b9150613b6d82613b2e565b602082019050919050565b5f6020820190508181035f830152613b8f81613b56565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613bcd826132fa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bff57613bfe613b96565b5b600182019050919050565b7f4f6e6c79204f776e65722043616e20437265617465203a2900000000000000005f82015250565b5f613c3e6018836133e2565b9150613c4982613c0a565b602082019050919050565b5f6020820190508181035f830152613c6b81613c32565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613ca9826132fa565b9150613cb4836132fa565b9250828203905081811115613ccc57613ccb613b96565b5b92915050565b7f506c65617365207375626d6974207468652061736b696e6720707269636520695f8201527f6e206f7264657220746f20636f6d706c65746520746865207075726368617365602082015250565b5f613d2c6040836133e2565b9150613d3782613cd2565b604082019050919050565b5f6020820190508181035f830152613d5981613d20565b9050919050565b7f596f752063616e6e6f742062757920796f7572206f776e206e667400000000005f82015250565b5f613d94601b836133e2565b9150613d9f82613d60565b602082019050919050565b5f6020820190508181035f830152613dc181613d88565b9050919050565b5f613dd2826132fa565b9150613ddd836132fa565b9250828201905080821115613df557613df4613b96565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c000000000000000000000000005f82015250565b5f613e2f6013836133e2565b9150613e3a82613dfb565b602082019050919050565b5f6020820190508181035f830152613e5c81613e23565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f81905092915050565b5f613ea4826133d8565b613eae8185613e90565b9350613ebe8185602086016133f2565b80840191505092915050565b5f613ed58285613e9a565b9150613ee18284613e9a565b91508190509392505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613f497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613f0e565b613f538683613f0e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f613f8e613f89613f84846132fa565b613f6b565b6132fa565b9050919050565b5f819050919050565b613fa783613f74565b613fbb613fb382613f95565b848454613f1a565b825550505050565b5f90565b613fcf613fc3565b613fda818484613f9e565b505050565b5b81811015613ffd57613ff25f82613fc7565b600181019050613fe0565b5050565b601f8211156140425761401381613eed565b61401c84613eff565b8101602085101561402b578190505b61403f61403785613eff565b830182613fdf565b50505b505050565b5f82821c905092915050565b5f6140625f1984600802614047565b1980831691505092915050565b5f61407a8383614053565b9150826002028217905092915050565b614093826133d8565b67ffffffffffffffff8111156140ac576140ab613559565b5b6140b68254613ac9565b6140c1828285614001565b5f60209050601f8311600181146140f2575f84156140e0578287015190505b6140ea858261406f565b865550614151565b601f19841661410086613eed565b5f5b8281101561412757848901518255600182019150602085019450602081019050614102565b868310156141445784890151614140601f891682614053565b8355505b6001600288020188555050505b505050505050565b7f596f7520646964206e6f742073656e642074686520636f7272656374206c69735f8201527f7470726963650000000000000000000000000000000000000000000000000000602082015250565b5f6141b36026836133e2565b91506141be82614159565b604082019050919050565b5f6020820190508181035f8301526141e0816141a7565b9050919050565b7f70726963652063616e6e6f74206265206e6567617469766500000000000000005f82015250565b5f61421b6018836133e2565b9150614226826141e7565b602082019050919050565b5f6020820190508181035f8301526142488161420f565b9050919050565b5f6080820190506142625f830187613482565b61426f6020830186613482565b61427c6040830185613358565b6142896060830184613252565b95945050505050565b5f81519050919050565b5f82825260208201905092915050565b5f6142b682614292565b6142c0818561429c565b93506142d08185602086016133f2565b6142d98161341a565b840191505092915050565b5f6080820190506142f75f830187613482565b6143046020830186613482565b6143116040830185613358565b818103606083015261432381846142ac565b905095945050505050565b5f8151905061433c816132a5565b92915050565b5f60208284031215614357576143566131ba565b5b5f6143648482850161432e565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffdfea264697066735822122049baebcd11ee809333941527541bc35e120c8c05edf81cbfeea62ca51d506e2a64736f6c6343000818003300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000b03d4f4eec70e5cc1470951a45da14340e758f8b00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000009636865776261636361000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037070700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d655073566e644843717873504b6869436b4d7050594d33734776363555336671744e7469634b41314353354300000000000000000000000000000000