60c060405234801562000010575f80fd5b50604051620040e8380380620040e88339818101604052810190620000369190620002bc565b6040518060400160405280600c81526020017f48756c69656e20466967687400000000000000000000000000000000000000008152506040518060400160405280600381526020017f484c4e000000000000000000000000000000000000000000000000000000000081525060126103e884805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200010f576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508460019081620001ba919062000550565b508360029081620001cc919062000550565b508260ff1660808160ff1681525050608051600a620001ec9190620007bd565b82620001f991906200080d565b60a081815250505050505050683635c9adc5dea0000060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505062000857565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000286826200025b565b9050919050565b62000298816200027a565b8114620002a3575f80fd5b50565b5f81519050620002b6816200028d565b92915050565b5f60208284031215620002d457620002d362000257565b5b5f620002e384828501620002a6565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200036857607f821691505b6020821081036200037e576200037d62000323565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003a5565b620003ee8683620003a5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000438620004326200042c8462000406565b6200040f565b62000406565b9050919050565b5f819050919050565b620004538362000418565b6200046b62000462826200043f565b848454620003b1565b825550505050565b5f90565b6200048162000473565b6200048e81848462000448565b505050565b5b81811015620004b557620004a95f8262000477565b60018101905062000494565b5050565b601f8211156200050457620004ce8162000384565b620004d98462000396565b81016020851015620004e9578190505b62000501620004f88562000396565b83018262000493565b50505b505050565b5f82821c905092915050565b5f620005265f198460080262000509565b1980831691505092915050565b5f62000540838362000515565b9150826002028217905092915050565b6200055b82620002ec565b67ffffffffffffffff811115620005775762000576620002f6565b5b62000583825462000350565b62000590828285620004b9565b5f60209050601f831160018114620005c6575f8415620005b1578287015190505b620005bd858262000533565b8655506200062c565b601f198416620005d68662000384565b5f5b82811015620005ff57848901518255600182019150602085019450602081019050620005d8565b868310156200061f57848901516200061b601f89168262000515565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006be5780860481111562000696576200069562000634565b5b6001851615620006a65780820291505b8081029050620006b68562000661565b945062000676565b94509492505050565b5f82620006d85760019050620007aa565b81620006e7575f9050620007aa565b81600181146200070057600281146200070b5762000741565b6001915050620007aa565b60ff84111562000720576200071f62000634565b5b8360020a9150848211156200073a576200073962000634565b5b50620007aa565b5060208310610133831016604e8410600b84101617156200077b5782820a90508381111562000775576200077462000634565b5b620007aa565b6200078a84848460016200066d565b92509050818404811115620007a457620007a362000634565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620007c98262000406565b9150620007d683620007b1565b9250620008057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006c7565b905092915050565b5f620008198262000406565b9150620008268362000406565b9250828202620008368162000406565b9150828204841483151762000850576200084f62000634565b5b5092915050565b60805160a051613868620008805f395f6108f601525f81816112c70152611e2401526138685ff3fe608060405234801561000f575f80fd5b50600436106101a7575f3560e01c806370a08231116100f7578063c87b56dd11610095578063e0df5b6f1161006f578063e0df5b6f146104cb578063e985e9c5146104e7578063f28ca1dd14610517578063f2fde38b14610535576101a7565b8063c87b56dd1461044d578063d547cfb71461047d578063dd62ed3e1461049b576101a7565b80639b19251a116100d15780639b19251a146103b5578063a22cb465146103e5578063a9059cbb14610401578063b88d4fde14610431576101a7565b806370a08231146103495780638da5cb5b1461037957806395d89b4114610397576101a7565b80632b968958116101645780634f02c4201161013e5780634f02c420146102c3578063504334c2146102e157806353d6fd59146102fd5780636352211e14610319576101a7565b80632b9689581461027f578063313ce5671461028957806342842e0e146102a7576101a7565b806306fdde03146101ab578063081812fc146101c9578063095ea7b3146101f957806318160ddd1461022957806318d217c31461024757806323b872dd14610263575b5f80fd5b6101b3610551565b6040516101c09190612928565b60405180910390f35b6101e360048036038101906101de919061298c565b6105dd565b6040516101f091906129f6565b60405180910390f35b610213600480360381019061020e9190612a39565b61060d565b6040516102209190612a91565b60405180910390f35b6102316108f4565b60405161023e9190612ab9565b60405180910390f35b610261600480360381019061025c9190612bfe565b610918565b005b61027d60048036038101906102789190612c45565b6109af565b005b6102876111a6565b005b6102916112c5565b60405161029e9190612cb0565b60405180910390f35b6102c160048036038101906102bc9190612c45565b6112e9565b005b6102cb611418565b6040516102d89190612ab9565b60405180910390f35b6102fb60048036038101906102f69190612cc9565b61141e565b005b61031760048036038101906103129190612d69565b6114b0565b005b610333600480360381019061032e919061298c565b61158c565b60405161034091906129f6565b60405180910390f35b610363600480360381019061035e9190612da7565b61162a565b6040516103709190612ab9565b60405180910390f35b61038161163f565b60405161038e91906129f6565b60405180910390f35b61039f611662565b6040516103ac9190612928565b60405180910390f35b6103cf60048036038101906103ca9190612da7565b6116ee565b6040516103dc9190612a91565b60405180910390f35b6103ff60048036038101906103fa9190612d69565b61170b565b005b61041b60048036038101906104169190612a39565b611803565b6040516104289190612a91565b60405180910390f35b61044b60048036038101906104469190612e2f565b611817565b005b6104676004803603810190610462919061298c565b61194c565b6040516104749190612928565b60405180910390f35b610485611aa3565b6040516104929190612928565b60405180910390f35b6104b560048036038101906104b09190612eb3565b611b2f565b6040516104c29190612ab9565b60405180910390f35b6104e560048036038101906104e09190612bfe565b611b4f565b005b61050160048036038101906104fc9190612eb3565b611be6565b60405161050e9190612a91565b60405180910390f35b61051f611c10565b60405161052c9190612928565b60405180910390f35b61054f600480360381019061054a9190612da7565b611c9c565b005b6001805461055e90612f1e565b80601f016020809104026020016040519081016040528092919081815260200182805461058a90612f1e565b80156105d55780601f106105ac576101008083540402835291602001916105d5565b820191905f5260205f20905b8154815290600101906020018083116105b857829003601f168201915b505050505081565b6006602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600354821115801561061f57505f82115b15610807575f60085f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610716575060075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561074d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360065f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516107f99190612ab9565b60405180910390a3506108ea565b8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108e19190612ab9565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600c90816109ab91906130eb565b5050565b60035481116110675760085f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a4d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ab2576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b70575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610bd8575060065f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610c0f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c17611e21565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c6291906131e7565b92505081905550610c71611e21565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160085f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600160095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610dc791906131e7565b81548110610dd857610dd761321a565b5b905f5260205f20015490508060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600a5f8581526020019081526020015f205481548110610e4457610e4361321a565b5b905f5260205f20018190555060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610e9d57610e9c613247565b5b600190038181905f5260205f20015f90559055600a5f8381526020019081526020015f2054600a5f8381526020019081526020015f208190555060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f9091909190915055600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610f8591906131e7565b600a5f8481526020019081526020015f2081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148761104c611e21565b6040516110599190612ab9565b60405180910390a3506111a1565b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461119357818161111691906131e7565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61119e848484611e54565b50505b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461122a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b7f000000000000000000000000000000000000000000000000000000000000000081565b6112f48383836109af565b5f8273ffffffffffffffffffffffffffffffffffffffff163b141580156113dc575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b815260040161137a939291906132a7565b6020604051808303815f875af1158015611396573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ba9190613344565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611413576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60035481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ac8282612198565b5050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611534576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60085f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611625576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6004602052805f5260405f205f915090505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002805461166f90612f1e565b80601f016020809104026020016040519081016040528092919081815260200182805461169b90612f1e565b80156116e65780601f106116bd576101008083540402835291602001916116e6565b820191905f5260205f20905b8154815290600101906020018083116116c957829003601f168201915b505050505081565b600b602052805f5260405f205f915054906101000a900460ff1681565b8060075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117f79190612a91565b60405180910390a35050565b5f61180f338484611e54565b905092915050565b6118228585856109af565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1415801561190e575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b81526004016118ac95949392919061339b565b6020604051808303815f875af11580156118c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118ec9190613344565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611945576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b60605f600d805461195c90612f1e565b905011156119f457600d805461197190612f1e565b80601f016020809104026020016040519081016040528092919081815260200182805461199d90612f1e565b80156119e85780601f106119bf576101008083540402835291602001916119e8565b820191905f5260205f20905b8154815290600101906020018083116119cb57829003601f168201915b50505050509050611a9e565b6119fd826121bc565b604051602001611a0d9190613447565b604051602081830303815290604052600c604051602001611a2e9190613582565b604051602081830303815290604052604051602001611a4d91906135c9565b604051602081830303815290604052604051602001611a6d9291906135ee565b604051602081830303815290604052604051602001611a8c9190613637565b60405160208183030381529060405290505b919050565b600d8054611ab090612f1e565b80601f0160208091040260200160405190810160405280929190818152602001828054611adc90612f1e565b8015611b275780601f10611afe57610100808354040283529160200191611b27565b820191905f5260205f20905b815481529060010190602001808311611b0a57829003601f168201915b505050505081565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bd3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d9081611be291906130eb565b5050565b6007602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b600c8054611c1d90612f1e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4990612f1e565b8015611c945780601f10611c6b57610100808354040283529160200191611c94565b820191905f5260205f20905b815481529060010190602001808311611c7757829003601f168201915b505050505081565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d20576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d85576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f7f0000000000000000000000000000000000000000000000000000000000000000600a611e4f919061378b565b905090565b5f80611e5e611e21565b90505f60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508460045f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f2e91906131e7565b925050819055508460045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612052575f8360045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120179190613802565b84846120239190613802565b61202d91906131e7565b90505f5b8181101561204f5761204289612286565b8080600101915050612031565b50505b600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612125575f83826120ad9190613802565b8460045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120f69190613802565b61210091906131e7565b90505f5b8181101561212257612115886124cb565b8080600101915050612104565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487876040516121829190612ab9565b60405180910390a3600193505050509392505050565b81600190816121a791906130eb565b5080600290816121b791906130eb565b505050565b60605f60016121ca8461274d565b0190505f8167ffffffffffffffff8111156121e8576121e7612ada565b5b6040519080825280601f01601f19166020018201604052801561221a5781602001600182028036833780820191505090505b5090505f82602001820190505b60011561227b578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816122705761226f6137d5565b5b0494505f8503612227575b819350505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122eb576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905061237691906131e7565b815481106123875761238661321a565b5b905f5260205f200154905060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054806123df576123de613247565b5b600190038181905f5260205f20015f90559055600a5f8281526020019081526020015f205f905560085f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560065f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612530576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035f81548092919060010191905055505f60035490505f73ffffffffffffffffffffffffffffffffffffffff1660085f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125dc576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160085f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f9091909190915055600160095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506126d991906131e7565b600a5f8381526020019081526020015f2081905550808273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106127a9577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161279f5761279e6137d5565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106127e6576d04ee2d6d415b85acef810000000083816127dc576127db6137d5565b5b0492506020810190505b662386f26fc10000831061281557662386f26fc10000838161280b5761280a6137d5565b5b0492506010810190505b6305f5e100831061283e576305f5e1008381612834576128336137d5565b5b0492506008810190505b6127108310612863576127108381612859576128586137d5565b5b0492506004810190505b60648310612886576064838161287c5761287b6137d5565b5b0492506002810190505b600a8310612895576001810190505b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156128d55780820151818401526020810190506128ba565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128fa8261289e565b61290481856128a8565b93506129148185602086016128b8565b61291d816128e0565b840191505092915050565b5f6020820190508181035f83015261294081846128f0565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61296b81612959565b8114612975575f80fd5b50565b5f8135905061298681612962565b92915050565b5f602082840312156129a1576129a0612951565b5b5f6129ae84828501612978565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129e0826129b7565b9050919050565b6129f0816129d6565b82525050565b5f602082019050612a095f8301846129e7565b92915050565b612a18816129d6565b8114612a22575f80fd5b50565b5f81359050612a3381612a0f565b92915050565b5f8060408385031215612a4f57612a4e612951565b5b5f612a5c85828601612a25565b9250506020612a6d85828601612978565b9150509250929050565b5f8115159050919050565b612a8b81612a77565b82525050565b5f602082019050612aa45f830184612a82565b92915050565b612ab381612959565b82525050565b5f602082019050612acc5f830184612aaa565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b10826128e0565b810181811067ffffffffffffffff82111715612b2f57612b2e612ada565b5b80604052505050565b5f612b41612948565b9050612b4d8282612b07565b919050565b5f67ffffffffffffffff821115612b6c57612b6b612ada565b5b612b75826128e0565b9050602081019050919050565b828183375f83830152505050565b5f612ba2612b9d84612b52565b612b38565b905082815260208101848484011115612bbe57612bbd612ad6565b5b612bc9848285612b82565b509392505050565b5f82601f830112612be557612be4612ad2565b5b8135612bf5848260208601612b90565b91505092915050565b5f60208284031215612c1357612c12612951565b5b5f82013567ffffffffffffffff811115612c3057612c2f612955565b5b612c3c84828501612bd1565b91505092915050565b5f805f60608486031215612c5c57612c5b612951565b5b5f612c6986828701612a25565b9350506020612c7a86828701612a25565b9250506040612c8b86828701612978565b9150509250925092565b5f60ff82169050919050565b612caa81612c95565b82525050565b5f602082019050612cc35f830184612ca1565b92915050565b5f8060408385031215612cdf57612cde612951565b5b5f83013567ffffffffffffffff811115612cfc57612cfb612955565b5b612d0885828601612bd1565b925050602083013567ffffffffffffffff811115612d2957612d28612955565b5b612d3585828601612bd1565b9150509250929050565b612d4881612a77565b8114612d52575f80fd5b50565b5f81359050612d6381612d3f565b92915050565b5f8060408385031215612d7f57612d7e612951565b5b5f612d8c85828601612a25565b9250506020612d9d85828601612d55565b9150509250929050565b5f60208284031215612dbc57612dbb612951565b5b5f612dc984828501612a25565b91505092915050565b5f80fd5b5f80fd5b5f8083601f840112612def57612dee612ad2565b5b8235905067ffffffffffffffff811115612e0c57612e0b612dd2565b5b602083019150836001820283011115612e2857612e27612dd6565b5b9250929050565b5f805f805f60808688031215612e4857612e47612951565b5b5f612e5588828901612a25565b9550506020612e6688828901612a25565b9450506040612e7788828901612978565b935050606086013567ffffffffffffffff811115612e9857612e97612955565b5b612ea488828901612dda565b92509250509295509295909350565b5f8060408385031215612ec957612ec8612951565b5b5f612ed685828601612a25565b9250506020612ee785828601612a25565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612f3557607f821691505b602082108103612f4857612f47612ef1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612faa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612f6f565b612fb48683612f6f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612fef612fea612fe584612959565b612fcc565b612959565b9050919050565b5f819050919050565b61300883612fd5565b61301c61301482612ff6565b848454612f7b565b825550505050565b5f90565b613030613024565b61303b818484612fff565b505050565b5b8181101561305e576130535f82613028565b600181019050613041565b5050565b601f8211156130a35761307481612f4e565b61307d84612f60565b8101602085101561308c578190505b6130a061309885612f60565b830182613040565b50505b505050565b5f82821c905092915050565b5f6130c35f19846008026130a8565b1980831691505092915050565b5f6130db83836130b4565b9150826002028217905092915050565b6130f48261289e565b67ffffffffffffffff81111561310d5761310c612ada565b5b6131178254612f1e565b613122828285613062565b5f60209050601f831160018114613153575f8415613141578287015190505b61314b85826130d0565b8655506131b2565b601f19841661316186612f4e565b5f5b8281101561318857848901518255600182019150602085019450602081019050613163565b868310156131a557848901516131a1601f8916826130b4565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131f182612959565b91506131fc83612959565b9250828203905081811115613214576132136131ba565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f82825260208201905092915050565b50565b5f6132925f83613274565b915061329d82613284565b5f82019050919050565b5f6080820190506132ba5f8301866129e7565b6132c760208301856129e7565b6132d46040830184612aaa565b81810360608301526132e581613287565b9050949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613323816132ef565b811461332d575f80fd5b50565b5f8151905061333e8161331a565b92915050565b5f6020828403121561335957613358612951565b5b5f61336684828501613330565b91505092915050565b5f61337a8385613274565b9350613387838584612b82565b613390836128e0565b840190509392505050565b5f6080820190506133ae5f8301886129e7565b6133bb60208301876129e7565b6133c86040830186612aaa565b81810360608301526133db81848661336f565b90509695505050505050565b7f7b226e616d65223a202248756c69656e20466967687420230000000000000000815250565b5f81905092915050565b5f6134218261289e565b61342b818561340d565b935061343b8185602086016128b8565b80840191505092915050565b5f613451826133e7565b6018820191506134618284613417565b915081905092915050565b7f222c226465736372697074696f6e223a224120636f6c6c656374696f6e206f665f8201527f2031303030204e46547320666f7220746865206669727374204552433430342060208201527f706f77657265642067616d652e222c22696d616765223a220000000000000000604082015250565b5f6134ec60588361340d565b91506134f78261346c565b605882019050919050565b5f815461350e81612f1e565b613518818661340d565b9450600182165f8114613532576001811461354757613579565b60ff1983168652811515820286019350613579565b61355085612f4e565b5f5b8381101561357157815481890152600182019150602081019050613552565b838801955050505b50505092915050565b5f61358c826134e0565b91506135988284613502565b915081905092915050565b7f227d000000000000000000000000000000000000000000000000000000000000815250565b5f6135d48284613417565b91506135df826135a3565b60028201915081905092915050565b5f6135f98285613417565b91506136058284613417565b91508190509392505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c0000000000815250565b5f61364182613611565b601b820191506136518284613417565b915081905092915050565b5f8160011c9050919050565b5f808291508390505b60018511156136b15780860481111561368d5761368c6131ba565b5b600185161561369c5780820291505b80810290506136aa8561365c565b9450613671565b94509492505050565b5f826136c95760019050613784565b816136d6575f9050613784565b81600181146136ec57600281146136f657613725565b6001915050613784565b60ff841115613708576137076131ba565b5b8360020a91508482111561371f5761371e6131ba565b5b50613784565b5060208310610133831016604e8410600b841016171561375a5782820a905083811115613755576137546131ba565b5b613784565b6137678484846001613668565b9250905081840481111561377e5761377d6131ba565b5b81810290505b9392505050565b5f61379582612959565b91506137a083612c95565b92506137cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846136ba565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61380c82612959565b915061381783612959565b925082613827576138266137d5565b5b82820490509291505056fea26469706673582212201b9a1d344a2beca92b131b4c14efacdf14e352184985a7f77bf86441b06b208264736f6c6343000818003300000000000000000000000005a91d5ed25271ed1b8197e87c7df4b50b1cd03b