beamformer_shaders.c (124834B)
1 /* See LICENSE for license details. */ 2 3 // GENERATED CODE 4 5 read_only global u8 beamformer_shader_decode_bytes[] = { 6 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66, 7 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 8 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x28, 9 0x72, 0x6e, 0x70, 0x29, 0x3a, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x20, 0x77, 0x69, 10 0x74, 0x68, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x78, 0x20, 0x63, 0x68, 0x61, 11 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x20, 0x78, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 12 0x73, 0x0a, 0x20, 0x2a, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 13 0x63, 0x65, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 14 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 15 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x63, 16 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 17 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x73, 0x0a, 0x20, 0x2a, 0x20, 0x61, 0x6e, 0x64, 0x20, 18 0x64, 0x6f, 0x65, 0x73, 0x20, 0x61, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 19 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x72, 20 0x6f, 0x70, 0x72, 0x69, 0x61, 0x74, 0x65, 0x20, 0x72, 0x6f, 0x77, 0x20, 0x6f, 0x66, 0x20, 0x74, 21 0x68, 0x65, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 22 0x64, 0x20, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x0a, 0x20, 0x2a, 0x20, 0x28, 0x75, 0x6e, 0x6c, 23 0x65, 0x73, 0x73, 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x20, 24 0x3d, 0x3d, 0x20, 0x44, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 25 0x4f, 0x4e, 0x45, 0x29, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 26 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x70, 0x72, 0x6f, 27 0x64, 0x75, 0x63, 0x74, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x69, 28 0x6e, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x2a, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2e, 29 0x20, 0x49, 0x6e, 0x20, 0x62, 0x75, 0x6c, 0x6b, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x68, 0x61, 30 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x6f, 0x66, 0x20, 31 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6d, 0x61, 0x74, 0x72, 32 0x69, 0x78, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 33 0x68, 0x65, 0x0a, 0x20, 0x2a, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2d, 0x74, 0x72, 0x61, 34 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 35 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d, 36 0x61, 0x72, 0x64, 0x20, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x2e, 0x0a, 0x20, 0x2a, 0x2f, 0x0a, 37 0x0a, 0x23, 0x69, 0x66, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 38 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 39 0x74, 0x33, 0x32, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x49, 0x4e, 0x50, 40 0x55, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 41 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 42 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 43 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x0a, 0x09, 0x23, 0x64, 0x65, 44 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 45 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x78, 0x29, 0x20, 0x20, 0x28, 0x78, 0x29, 0x0a, 0x23, 0x65, 46 0x6c, 0x69, 0x66, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 47 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 48 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 49 0x20, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 50 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 51 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 52 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x09, 0x23, 53 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 54 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x78, 0x29, 0x20, 0x20, 0x28, 0x78, 0x29, 0x0a, 55 0x23, 0x65, 0x6c, 0x69, 0x66, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 56 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x49, 0x6e, 0x74, 0x31, 0x36, 57 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 58 0x20, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 59 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 60 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 61 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x09, 0x23, 0x64, 62 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 63 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x78, 0x29, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 64 0x28, 0x28, 0x78, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 65 0x36, 0x2c, 0x20, 0x28, 0x78, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x0a, 0x23, 0x65, 66 0x6c, 0x69, 0x66, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 67 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x49, 0x6e, 0x74, 0x31, 0x36, 0x0a, 0x09, 68 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x44, 0x41, 69 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 70 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x46, 0x5f, 0x53, 0x41, 0x4d, 71 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x20, 0x32, 72 0x0a, 0x09, 0x23, 0x69, 0x66, 0x20, 0x44, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x70, 73 0x75, 0x74, 0x0a, 0x09, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 74 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 75 0x20, 0x76, 0x65, 0x63, 0x34, 0x0a, 0x09, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 76 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 77 0x28, 0x78, 0x29, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x28, 0x28, 0x78, 0x29, 0x20, 0x3c, 0x3c, 78 0x20, 0x31, 0x36, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x28, 79 0x78, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x30, 0x29, 0x0a, 0x09, 0x23, 0x65, 80 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 81 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 82 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x09, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 83 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 84 0x54, 0x28, 0x78, 0x29, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x28, 0x28, 0x78, 0x29, 0x20, 0x3c, 85 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x28, 0x78, 0x29, 86 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x0a, 0x09, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 87 0x65, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 88 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x20, 0x32, 0x0a, 0x09, 0x23, 0x65, 89 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x23, 0x65, 0x72, 0x72, 90 0x6f, 0x72, 0x20, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x64, 91 0x61, 0x74, 0x61, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x44, 0x65, 0x63, 92 0x6f, 0x64, 0x65, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x6e, 93 0x64, 0x65, 0x66, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 94 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x0a, 0x09, 0x23, 0x64, 95 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x41, 0x4d, 96 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x20, 0x31, 97 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 98 0x20, 0x52, 0x46, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 99 0x49, 0x4e, 0x44, 0x45, 0x58, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 100 0x46, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 101 0x44, 0x45, 0x58, 0x20, 0x31, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x6c, 0x61, 102 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 0x2c, 0x20, 0x62, 0x69, 0x6e, 103 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 104 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 105 0x65, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x31, 0x20, 0x7b, 0x0a, 0x09, 0x49, 106 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72, 107 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 108 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 0x2c, 0x20, 0x62, 0x69, 0x6e, 109 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x32, 0x29, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x6f, 110 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x62, 0x75, 0x66, 111 0x66, 0x65, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x32, 0x20, 0x7b, 0x0a, 0x09, 112 0x49, 0x4e, 0x50, 0x55, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 113 0x6f, 0x75, 0x74, 0x5f, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5d, 0x3b, 0x0a, 0x7d, 114 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 115 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x33, 0x29, 0x20, 0x77, 116 0x72, 0x69, 0x74, 0x65, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 117 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 118 0x33, 0x20, 0x7b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 119 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5d, 120 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x72, 0x33, 0x32, 121 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 122 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 123 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x32, 124 0x44, 0x20, 0x20, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x3b, 0x0a, 0x6c, 0x61, 0x79, 125 0x6f, 0x75, 0x74, 0x28, 0x72, 0x31, 0x36, 0x69, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 126 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 127 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 128 0x20, 0x69, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x31, 0x44, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 129 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x3b, 0x0a, 0x0a, 0x53, 0x41, 0x4d, 0x50, 130 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x61, 0x6d, 131 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x28, 0x75, 0x69, 0x6e, 0x74, 132 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 133 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 134 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 135 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x69, 0x6e, 136 0x64, 0x65, 0x78, 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 137 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 138 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x69, 139 0x6d, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x47, 140 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 141 0x44, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x52, 0x46, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 142 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x3b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 143 0x74, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 144 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 145 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x2e, 0x79, 0x3b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x74, 146 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 147 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 148 0x49, 0x44, 0x2e, 0x7a, 0x3b, 0x0a, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x66, 0x5f, 149 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 150 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x63, 151 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 152 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x61, 153 0x6d, 0x70, 0x6c, 0x65, 0x29, 0x20, 0x2f, 0x20, 0x52, 0x46, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 154 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x3b, 0x0a, 0x09, 0x69, 155 0x66, 0x20, 0x28, 0x75, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x29, 156 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x61, 157 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x3c, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e, 158 0x73, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 159 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x20, 0x3d, 0x20, 0x49, 160 0x6e, 0x70, 0x75, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x64, 161 0x65, 0x20, 0x20, 0x2a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x63, 162 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2c, 0x20, 163 0x69, 0x6e, 0x74, 0x28, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x29, 0x29, 0x2e, 0x78, 0x20, 164 0x2b, 0x0a, 0x09, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 165 0x20, 0x20, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 166 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 167 0x74, 0x20, 0x2b, 0x0a, 0x09, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 168 0x20, 0x20, 0x20, 0x20, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 169 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x5f, 170 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x6f, 0x75, 0x74, 0x5f, 0x72, 171 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x72, 0x66, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 172 0x20, 0x2b, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5d, 0x20, 0x3d, 0x20, 0x72, 173 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x69, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x20, 0x2f, 0x20, 174 0x52, 0x46, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x49, 175 0x4e, 0x44, 0x45, 0x58, 0x5d, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x20, 0x65, 0x6c, 176 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x69, 0x6d, 0x65, 0x5f, 177 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x3c, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 178 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x29, 0x20, 0x7b, 179 0x0a, 0x09, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x66, 180 0x20, 0x3d, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 181 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x20, 0x2a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 182 0x6c, 0x20, 0x2b, 0x0a, 0x09, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 183 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e, 184 0x73, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x74, 0x72, 0x61, 185 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x2b, 0x0a, 0x09, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 186 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 187 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x20, 0x20, 0x2a, 188 0x20, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3b, 0x0a, 0x0a, 0x09, 189 0x09, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 190 0x50, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x53, 0x41, 0x4d, 0x50, 191 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x30, 0x29, 0x3b, 192 0x0a, 0x09, 0x09, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x28, 0x44, 0x65, 0x63, 0x6f, 193 0x64, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 194 0x65, 0x20, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 195 0x65, 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 196 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x28, 197 0x72, 0x66, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x20, 0x74, 0x72, 0x61, 0x6e, 198 0x73, 0x6d, 0x69, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 199 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 200 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x48, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x3a, 0x7b, 0x0a, 201 0x09, 0x09, 0x09, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 202 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x75, 0x6d, 0x20, 0x3d, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 203 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x30, 0x29, 0x3b, 0x0a, 204 0x09, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 205 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 206 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 207 0x09, 0x73, 0x75, 0x6d, 0x20, 0x2b, 0x3d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 208 0x64, 0x28, 0x68, 0x61, 0x64, 0x61, 0x6d, 0x61, 0x72, 0x64, 0x2c, 0x20, 0x69, 0x76, 0x65, 0x63, 209 0x32, 0x28, 0x69, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x29, 0x29, 0x2e, 210 0x78, 0x20, 0x2a, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x5f, 0x64, 0x61, 211 0x74, 0x61, 0x28, 0x72, 0x66, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2b, 0x2b, 0x29, 0x3b, 212 0x0a, 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x73, 0x75, 213 0x6d, 0x20, 0x2f, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 214 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x62, 0x72, 215 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x09, 0x6f, 0x75, 0x74, 216 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x20, 0x2f, 0x20, 217 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x5f, 0x50, 218 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x75, 219 0x6c, 0x74, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x0a, 0x7d, 0x0a 220 }; 221 222 read_only global u8 beamformer_shader_filter_bytes[] = { 223 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66, 224 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 225 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 226 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 227 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 228 0x65, 0x20, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 229 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 230 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 231 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x76, 0x29, 0x20, 0x28, 0x76, 0x29, 0x0a, 0x20, 0x20, 0x23, 232 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 233 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x76, 0x29, 0x20, 0x28, 0x76, 0x29, 0x0a, 0x23, 234 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x44, 235 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 236 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 237 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 238 0x53, 0x54, 0x28, 0x76, 0x29, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x53, 0x6e, 0x6f, 0x72, 0x6d, 0x32, 239 0x78, 0x31, 0x36, 0x28, 0x76, 0x29, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 240 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 241 0x54, 0x28, 0x76, 0x29, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x53, 0x6e, 0x6f, 0x72, 0x6d, 242 0x32, 0x78, 0x31, 0x36, 0x28, 0x76, 0x29, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 243 0x23, 0x69, 0x66, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 244 0x72, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x46, 0x49, 0x4c, 0x54, 0x45, 245 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 246 0x65, 0x63, 0x32, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x61, 0x70, 0x70, 247 0x6c, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x28, 0x69, 0x71, 0x2c, 0x20, 0x68, 0x29, 248 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x6d, 0x75, 0x6c, 0x28, 0x28, 0x69, 0x71, 249 0x29, 0x2c, 0x20, 0x28, 0x68, 0x29, 0x29, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x23, 250 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 251 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 252 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 253 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x28, 0x69, 0x71, 0x2c, 0x20, 0x68, 0x29, 0x20, 0x28, 0x28, 254 0x69, 0x71, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x68, 0x29, 0x29, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 255 0x66, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 256 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 257 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 258 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x31, 259 0x20, 0x7b, 0x0a, 0x09, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x69, 0x6e, 260 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 261 0x6f, 0x75, 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 262 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x32, 0x29, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x6f, 0x6e, 263 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 264 0x65, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x32, 0x20, 0x7b, 0x0a, 0x09, 0x44, 265 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 266 0x61, 0x5b, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 267 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 268 0x3d, 0x20, 0x33, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 269 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x62, 0x75, 270 0x66, 0x66, 0x65, 0x72, 0x5f, 0x33, 0x20, 0x7b, 0x0a, 0x09, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 271 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x65, 272 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 273 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x72, 0x31, 0x36, 0x69, 0x2c, 0x20, 0x62, 0x69, 274 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 275 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69, 276 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x31, 0x44, 0x20, 0x63, 0x68, 277 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x3b, 0x0a, 0x0a, 278 0x76, 0x65, 0x63, 0x32, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x6d, 0x75, 0x6c, 279 0x28, 0x76, 0x65, 0x63, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x62, 0x29, 280 0x0a, 0x7b, 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x32, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 281 0x32, 0x28, 0x62, 0x2e, 0x78, 0x2c, 0x20, 0x62, 0x2e, 0x79, 0x2c, 0x20, 0x2d, 0x62, 0x2e, 0x79, 282 0x2c, 0x20, 0x62, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 283 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x6d, 0x20, 0x2a, 0x20, 0x61, 0x3b, 0x0a, 0x09, 0x72, 284 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 285 0x0a, 0x23, 0x69, 0x66, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x0a, 286 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71, 0x28, 0x76, 287 0x65, 0x63, 0x32, 0x20, 0x69, 0x71, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 288 0x78, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 289 0x74, 0x3b, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x28, 0x53, 0x61, 0x6d, 0x70, 290 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x63, 0x61, 0x73, 291 0x65, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x34, 292 0x58, 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x66, 0x73, 0x20, 0x3d, 0x20, 0x32, 0x20, 293 0x2a, 0x20, 0x66, 0x64, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x61, 0x72, 0x67, 0x20, 0x3d, 0x20, 294 0x50, 0x49, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20, 295 0x63, 0x6f, 0x73, 0x20, 0x2d, 0x3e, 0x20, 0x31, 0x20, 0x2d, 0x31, 0x20, 0x20, 0x31, 0x20, 0x2d, 296 0x31, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x73, 0x69, 0x6e, 0x20, 0x2d, 0x3e, 0x20, 0x30, 0x20, 297 0x20, 0x30, 0x20, 0x20, 0x30, 0x20, 0x20, 0x30, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 298 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x5b, 0x32, 0x5d, 299 0x20, 0x3d, 0x20, 0x7b, 0x31, 0x2c, 0x20, 0x2d, 0x31, 0x7d, 0x3b, 0x0a, 0x09, 0x09, 0x72, 0x65, 300 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x5b, 0x69, 0x6e, 301 0x64, 0x65, 0x78, 0x20, 0x26, 0x20, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x69, 0x71, 0x3b, 0x0a, 0x09, 302 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x53, 0x61, 303 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x32, 0x58, 0x3a, 0x7b, 0x0a, 304 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x66, 0x73, 0x20, 0x20, 0x3d, 0x20, 0x66, 0x64, 0x0a, 0x09, 0x09, 305 0x2f, 0x2f, 0x20, 0x61, 0x72, 0x67, 0x20, 0x3d, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x50, 0x49, 0x20, 306 0x2a, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x73, 307 0x20, 0x2d, 0x3e, 0x20, 0x31, 0x20, 0x31, 0x20, 0x31, 0x20, 0x31, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 308 0x20, 0x73, 0x69, 0x6e, 0x20, 0x2d, 0x3e, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x0a, 309 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x69, 0x71, 0x3b, 0x0a, 0x09, 310 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 311 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x72, 0x67, 0x20, 0x20, 312 0x20, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x73, 0x28, 0x33, 0x36, 0x30, 0x29, 313 0x20, 0x2a, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 314 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x20, 0x2a, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 315 0x20, 0x2f, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x65, 0x71, 0x75, 316 0x65, 0x6e, 0x63, 0x79, 0x3b, 0x0a, 0x09, 0x09, 0x6d, 0x61, 0x74, 0x32, 0x20, 0x20, 0x70, 0x68, 317 0x61, 0x73, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x32, 0x28, 0x63, 0x6f, 0x73, 0x28, 318 0x61, 0x72, 0x67, 0x29, 0x2c, 0x20, 0x2d, 0x73, 0x69, 0x6e, 0x28, 0x61, 0x72, 0x67, 0x29, 0x2c, 319 0x0a, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 320 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x69, 0x6e, 0x28, 0x61, 0x72, 0x67, 0x29, 0x2c, 321 0x20, 0x20, 0x63, 0x6f, 0x73, 0x28, 0x61, 0x72, 0x67, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x72, 322 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x70, 0x68, 0x61, 0x73, 0x6f, 0x72, 0x20, 0x2a, 323 0x20, 0x69, 0x71, 0x3b, 0x0a, 0x09, 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x7d, 324 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 325 0x0a, 0x7d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x76, 0x65, 0x63, 0x32, 0x20, 326 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x69, 327 0x6e, 0x64, 0x65, 0x78, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 328 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 329 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 330 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 331 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x76, 0x6f, 0x69, 0x64, 332 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 333 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 334 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 335 0x49, 0x44, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 336 0x6e, 0x52, 0x61, 0x74, 0x65, 0x3b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x75, 0x74, 337 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 338 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x2e, 339 0x78, 0x3b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 340 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 341 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x2e, 0x79, 0x3b, 0x0a, 0x09, 342 0x75, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x20, 0x20, 343 0x3d, 0x20, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 344 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x2e, 0x7a, 0x3b, 0x0a, 0x0a, 0x09, 0x75, 0x69, 0x6e, 345 0x74, 0x20, 0x69, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x62, 346 0x6f, 0x6f, 0x6c, 0x28, 0x4d, 0x61, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x29, 347 0x20, 0x3f, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x63, 0x68, 0x61, 348 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x69, 0x6e, 349 0x74, 0x28, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x29, 0x29, 0x2e, 0x78, 0x20, 0x3a, 0x20, 350 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x3b, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x69, 351 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x49, 0x6e, 0x70, 0x75, 352 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 353 0x20, 0x69, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x49, 0x6e, 354 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x64, 355 0x65, 0x20, 0x2a, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x3b, 0x0a, 0x09, 0x75, 356 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 357 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 358 0x72, 0x69, 0x64, 0x65, 0x20, 0x20, 0x2a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 359 0x2b, 0x0a, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 360 0x20, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 361 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x2a, 0x20, 0x74, 0x72, 0x61, 0x6e, 362 0x73, 0x6d, 0x69, 0x74, 0x20, 0x2b, 0x0a, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 363 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 364 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x20, 0x20, 0x20, 0x2a, 365 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x3b, 0x0a, 0x0a, 0x09, 0x69, 366 0x6e, 0x74, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3b, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 367 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x4d, 0x61, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 368 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x3d, 0x20, 369 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x72, 370 0x69, 0x64, 0x65, 0x20, 0x2f, 0x20, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x61, 0x6d, 0x70, 371 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x09, 0x7d, 0x20, 0x65, 0x6c, 0x73, 372 0x65, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x4f, 373 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x72, 374 0x69, 0x64, 0x65, 0x3b, 0x0a, 0x09, 0x7d, 0x0a, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x6f, 0x75, 375 0x74, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x3c, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 376 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x2a, 0x3d, 377 0x20, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x3b, 378 0x0a, 0x0a, 0x09, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 379 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x69, 0x6e, 380 0x74, 0x20, 0x61, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x74, 0x61, 0x72, 381 0x67, 0x65, 0x74, 0x3b, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 382 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x69, 0x6e, 0x5f, 0x73, 0x61, 0x6d, 383 0x70, 0x6c, 0x65, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 384 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 385 0x6c, 0x28, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x29, 386 0x20, 0x3f, 0x20, 0x31, 0x20, 0x3a, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x32, 0x29, 0x3b, 0x0a, 387 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, 388 0x6d, 0x61, 0x78, 0x28, 0x30, 0x2c, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2d, 0x20, 0x46, 389 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x29, 0x3b, 0x20, 0x6a, 0x20, 390 0x3c, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x61, 0x5f, 0x6c, 391 0x65, 0x6e, 0x67, 0x74, 0x68, 0x29, 0x3b, 0x20, 0x6a, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09, 392 0x09, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x71, 393 0x20, 0x3d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x28, 0x69, 0x6e, 0x5f, 394 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x2b, 0x20, 0x6a, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 395 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x68, 0x20, 0x20, 0x3d, 396 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 397 0x65, 0x6e, 0x74, 0x73, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2d, 0x20, 0x6a, 0x5d, 0x3b, 398 0x0a, 0x09, 0x09, 0x23, 0x69, 0x66, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 399 0x65, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x20, 0x2b, 0x3d, 0x20, 400 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x2a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x66, 0x69, 401 0x6c, 0x74, 0x65, 0x72, 0x28, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71, 0x28, 0x69, 402 0x71, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, 0x2c, 0x20, 0x2d, 0x31, 0x29, 0x2c, 403 0x20, 0x2d, 0x6a, 0x29, 0x2c, 0x20, 0x68, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x23, 0x65, 0x6c, 0x73, 404 0x65, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x20, 0x2b, 0x3d, 0x20, 405 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x28, 0x69, 0x71, 0x2c, 406 0x20, 0x68, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x09, 0x09, 407 0x7d, 0x0a, 0x0a, 0x09, 0x09, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6f, 0x75, 408 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5d, 0x20, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 409 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x72, 0x65, 0x73, 410 0x75, 0x6c, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 0x0a, 0x7d, 0x0a 411 }; 412 413 read_only global u8 beamformer_shader_das_bytes[] = { 414 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66, 415 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 416 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 417 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 418 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 419 0x69, 0x6e, 0x65, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 420 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x0a, 421 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x54, 0x45, 0x58, 0x54, 0x55, 0x52, 422 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 423 0x72, 0x33, 0x32, 0x66, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 424 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 425 0x61, 0x29, 0x20, 0x20, 0x20, 0x28, 0x61, 0x29, 0x2e, 0x78, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 426 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 427 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x61, 0x29, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 428 0x28, 0x61, 0x29, 0x2e, 0x78, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x0a, 429 0x20, 0x20, 0x23, 0x69, 0x66, 0x20, 0x21, 0x46, 0x61, 0x73, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 430 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 431 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 432 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 433 0x55, 0x4c, 0x54, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x20, 0x20, 434 0x20, 0x31, 0x0a, 0x20, 0x20, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x23, 0x65, 0x6c, 0x69, 435 0x66, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x44, 0x61, 436 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x43, 0x6f, 437 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 438 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 439 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x32, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 440 0x66, 0x69, 0x6e, 0x65, 0x20, 0x54, 0x45, 0x58, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 441 0x44, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x67, 0x33, 0x32, 0x66, 442 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 443 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x61, 0x29, 0x20, 0x20, 444 0x20, 0x28, 0x61, 0x29, 0x2e, 0x78, 0x79, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 445 0x65, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 446 0x53, 0x54, 0x28, 0x61, 0x29, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x28, 0x61, 0x29, 447 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x23, 0x69, 0x66, 448 0x20, 0x21, 0x46, 0x61, 0x73, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 0x69, 449 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x20, 450 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x0a, 0x20, 0x20, 0x20, 0x20, 451 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x4c, 452 0x41, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x20, 0x20, 0x20, 0x32, 0x0a, 0x20, 0x20, 453 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x23, 454 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x75, 455 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x44, 456 0x41, 0x53, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 457 0x74, 0x28, 0x73, 0x74, 0x64, 0x34, 0x33, 0x30, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 458 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 459 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 460 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x31, 0x20, 0x7b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50, 461 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 462 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x52, 463 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 464 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 465 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x0a, 0x23, 0x65, 0x6e, 466 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x46, 0x61, 0x73, 0x74, 0x0a, 0x20, 0x20, 467 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x53, 468 0x54, 0x4f, 0x52, 0x45, 0x28, 0x61, 0x2c, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x61, 469 0x29, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x61, 0x29, 470 0x0a, 0x09, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x54, 0x45, 0x58, 0x54, 0x55, 0x52, 0x45, 471 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 472 0x20, 0x30, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 473 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 474 0x6d, 0x61, 0x67, 0x65, 0x33, 0x44, 0x20, 0x20, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 475 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x3b, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 476 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x53, 477 0x54, 0x4f, 0x52, 0x45, 0x28, 0x61, 0x2c, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x61, 478 0x29, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x61, 0x2c, 479 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x61, 0x29, 0x0a, 0x09, 0x6c, 0x61, 0x79, 0x6f, 480 0x75, 0x74, 0x28, 0x54, 0x45, 0x58, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x2c, 481 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x77, 0x72, 482 0x69, 0x74, 0x65, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 483 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x33, 0x44, 484 0x20, 0x20, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78, 485 0x3b, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 486 0x28, 0x72, 0x31, 0x36, 0x69, 0x2c, 0x20, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 487 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x20, 0x72, 488 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 489 0x69, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x31, 0x44, 0x20, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 490 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3b, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 491 0x28, 0x72, 0x67, 0x33, 0x32, 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 492 0x3d, 0x20, 0x32, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x20, 0x72, 493 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 494 0x69, 0x6d, 0x61, 0x67, 0x65, 0x31, 0x44, 0x20, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 495 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x72, 496 0x38, 0x69, 0x2c, 0x20, 0x20, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 497 0x33, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x20, 0x72, 0x65, 0x73, 498 0x74, 0x72, 0x69, 0x63, 0x74, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x69, 499 0x6d, 0x61, 0x67, 0x65, 0x31, 0x44, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 500 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 501 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x52, 502 0x58, 0x5f, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x78, 503 0x5f, 0x72, 0x78, 0x29, 0x20, 0x28, 0x28, 0x28, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x29, 0x20, 0x3e, 504 0x3e, 0x20, 0x30, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x30, 0x46, 0x29, 0x0a, 0x23, 0x64, 0x65, 505 0x66, 0x69, 0x6e, 0x65, 0x20, 0x54, 0x58, 0x5f, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 506 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x29, 0x20, 0x28, 0x28, 0x28, 0x74, 0x78, 507 0x5f, 0x72, 0x78, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x34, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x30, 508 0x46, 0x29, 0x0a, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x43, 0x5f, 0x53, 0x50, 509 0x4c, 0x49, 0x4e, 0x45, 0x20, 0x30, 0x2e, 0x35, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x44, 0x61, 510 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 511 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 512 0x78, 0x0a, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71, 513 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x69, 0x71, 0x2c, 0x20, 514 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 515 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x72, 0x67, 0x20, 0x20, 516 0x20, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x73, 0x28, 0x33, 0x36, 0x30, 0x29, 517 0x20, 0x2a, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 518 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x20, 0x2a, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x3b, 519 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x32, 0x20, 0x20, 0x70, 0x68, 0x61, 0x73, 0x6f, 0x72, 0x20, 0x3d, 520 0x20, 0x6d, 0x61, 0x74, 0x32, 0x28, 0x20, 0x63, 0x6f, 0x73, 0x28, 0x61, 0x72, 0x67, 0x29, 0x2c, 521 0x20, 0x73, 0x69, 0x6e, 0x28, 0x61, 0x72, 0x67, 0x29, 0x2c, 0x0a, 0x09, 0x20, 0x20, 0x20, 0x20, 522 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 523 0x2d, 0x73, 0x69, 0x6e, 0x28, 0x61, 0x72, 0x67, 0x29, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x28, 0x61, 524 0x72, 0x67, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 0x73, 0x75, 525 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x70, 0x68, 0x61, 0x73, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x69, 0x71, 526 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 527 0x3b, 0x0a, 0x7d, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x23, 0x64, 0x65, 0x66, 528 0x69, 0x6e, 0x65, 0x20, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71, 0x28, 0x61, 0x2c, 529 0x20, 0x62, 0x29, 0x20, 0x28, 0x61, 0x29, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 530 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x3a, 0x20, 0x53, 0x65, 0x65, 0x3a, 0x20, 0x68, 0x74, 531 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x75, 0x62, 0x69, 0x63, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 532 0x64, 0x6f, 0x63, 0x73, 0x2f, 0x68, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x65, 0x2e, 0x68, 0x74, 0x6d, 533 0x20, 0x2a, 0x2f, 0x0a, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 534 0x63, 0x75, 0x62, 0x69, 0x63, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 535 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 536 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x0a, 0x7b, 537 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x68, 0x20, 0x3d, 538 0x20, 0x6d, 0x61, 0x74, 0x34, 0x28, 0x0a, 0x09, 0x09, 0x20, 0x32, 0x2c, 0x20, 0x2d, 0x33, 0x2c, 539 0x20, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x0a, 0x09, 0x09, 0x2d, 0x32, 0x2c, 0x20, 0x20, 0x33, 540 0x2c, 0x20, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x0a, 0x09, 0x09, 0x20, 0x31, 0x2c, 0x20, 0x2d, 541 0x32, 0x2c, 0x20, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x0a, 0x09, 0x09, 0x20, 0x31, 0x2c, 0x20, 542 0x2d, 0x31, 0x2c, 0x20, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x0a, 0x09, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 543 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6b, 0x2c, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x6d, 0x6f, 544 0x64, 0x66, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2c, 0x20, 0x74, 0x6b, 0x29, 0x3b, 0x0a, 0x09, 545 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x61, 0x6d, 0x70, 546 0x6c, 0x65, 0x73, 0x5b, 0x34, 0x5d, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x72, 0x66, 0x5f, 547 0x64, 0x61, 0x74, 0x61, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 548 0x2b, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x74, 0x6b, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x5d, 0x2c, 0x0a, 549 0x09, 0x09, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 550 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x74, 0x6b, 0x29, 0x20, 0x2b, 551 0x20, 0x30, 0x5d, 0x2c, 0x0a, 0x09, 0x09, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x62, 552 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x69, 0x6e, 0x74, 0x28, 553 0x74, 0x6b, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x5d, 0x2c, 0x0a, 0x09, 0x09, 0x72, 0x66, 0x5f, 0x64, 554 0x61, 0x74, 0x61, 0x5b, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 555 0x20, 0x69, 0x6e, 0x74, 0x28, 0x74, 0x6b, 0x29, 0x20, 0x2b, 0x20, 0x32, 0x5d, 0x2c, 0x0a, 0x09, 556 0x7d, 0x3b, 0x0a, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x34, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 557 0x20, 0x53, 0x20, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x74, 0x20, 0x2a, 0x20, 0x74, 558 0x20, 0x2a, 0x20, 0x74, 0x2c, 0x20, 0x74, 0x20, 0x2a, 0x20, 0x74, 0x2c, 0x20, 0x74, 0x2c, 0x20, 559 0x31, 0x29, 0x3b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 560 0x20, 0x50, 0x31, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5b, 0x31, 0x5d, 561 0x3b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x50, 562 0x32, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5b, 0x32, 0x5d, 0x3b, 0x0a, 563 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x54, 0x31, 0x20, 564 0x3d, 0x20, 0x43, 0x5f, 0x53, 0x50, 0x4c, 0x49, 0x4e, 0x45, 0x20, 0x2a, 0x20, 0x28, 0x50, 0x32, 565 0x20, 0x2d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a, 566 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x54, 0x32, 0x20, 567 0x3d, 0x20, 0x43, 0x5f, 0x53, 0x50, 0x4c, 0x49, 0x4e, 0x45, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x61, 568 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x2d, 0x20, 0x50, 0x31, 0x29, 0x3b, 0x0a, 569 0x0a, 0x23, 0x69, 0x66, 0x20, 0x20, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 570 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 571 0x74, 0x33, 0x32, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x34, 0x20, 0x43, 0x20, 0x3d, 0x20, 0x76, 0x65, 572 0x63, 0x34, 0x28, 0x50, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x50, 0x32, 0x2e, 0x78, 0x2c, 0x20, 0x54, 573 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x54, 0x32, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 574 0x61, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x28, 575 0x53, 0x2c, 0x20, 0x68, 0x20, 0x2a, 0x20, 0x43, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6c, 0x69, 0x66, 576 0x20, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x44, 0x61, 0x74, 577 0x61, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x32, 0x43, 0x6f, 0x6d, 578 0x70, 0x6c, 0x65, 0x78, 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x32, 0x78, 0x34, 0x20, 0x43, 0x20, 0x3d, 579 0x20, 0x6d, 0x61, 0x74, 0x32, 0x78, 0x34, 0x28, 0x76, 0x65, 0x63, 0x34, 0x28, 0x50, 0x31, 0x2e, 580 0x78, 0x2c, 0x20, 0x50, 0x32, 0x2e, 0x78, 0x2c, 0x20, 0x54, 0x31, 0x2e, 0x78, 0x2c, 0x20, 0x54, 581 0x32, 0x2e, 0x78, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x50, 0x31, 0x2e, 0x79, 0x2c, 582 0x20, 0x50, 0x32, 0x2e, 0x79, 0x2c, 0x20, 0x54, 0x31, 0x2e, 0x79, 0x2c, 0x20, 0x54, 0x32, 0x2e, 583 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 584 0x74, 0x20, 0x3d, 0x20, 0x53, 0x20, 0x2a, 0x20, 0x68, 0x20, 0x2a, 0x20, 0x43, 0x3b, 0x0a, 0x23, 585 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 586 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 587 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x28, 0x63, 588 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 589 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e, 590 0x73, 0x6d, 0x69, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 591 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x53, 0x41, 0x4d, 0x50, 592 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 593 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x30, 0x29, 0x3b, 594 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 595 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2a, 596 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x2a, 0x20, 0x41, 597 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, 598 0x2b, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x2a, 0x20, 0x53, 0x61, 0x6d, 599 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 600 0x63, 0x68, 0x20, 0x28, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 601 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x49, 602 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 603 0x5f, 0x4e, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 604 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x69, 605 0x6e, 0x74, 0x28, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x29, 606 0x20, 0x3c, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x29, 0x0a, 607 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x6f, 0x74, 0x61, 608 0x74, 0x65, 0x5f, 0x69, 0x71, 0x28, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x62, 0x61, 609 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x72, 610 0x6f, 0x75, 0x6e, 0x64, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x29, 0x5d, 0x2c, 0x20, 0x69, 611 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x46, 612 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 0x62, 0x72, 0x65, 613 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x70, 614 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x4c, 0x69, 0x6e, 0x65, 615 0x61, 0x72, 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 616 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x28, 0x69, 617 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x3c, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 618 0x75, 0x6e, 0x74, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 619 0x74, 0x6b, 0x2c, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x6d, 0x6f, 0x64, 0x66, 0x28, 0x69, 0x6e, 0x64, 620 0x65, 0x78, 0x2c, 0x20, 0x74, 0x6b, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 621 0x6e, 0x20, 0x3d, 0x20, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 622 0x20, 0x69, 0x6e, 0x74, 0x28, 0x74, 0x6b, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 623 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x20, 0x2d, 0x20, 0x74, 0x29, 0x20, 0x2a, 0x20, 624 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6e, 0x5d, 0x20, 0x2b, 0x20, 0x74, 0x20, 0x2a, 625 0x20, 0x72, 0x66, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x6e, 0x20, 0x2b, 0x20, 0x31, 0x5d, 0x3b, 626 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 627 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71, 0x28, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 628 0x2c, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 629 0x6e, 0x67, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 630 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x49, 0x6e, 0x74, 631 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x5f, 0x43, 632 0x75, 0x62, 0x69, 0x63, 0x3a, 0x7b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x69, 0x6e, 0x64, 633 0x65, 0x78, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x20, 0x26, 0x26, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x28, 634 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x32, 0x29, 0x20, 0x3c, 0x20, 0x53, 0x61, 635 0x6d, 0x70, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 636 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x71, 637 0x28, 0x63, 0x75, 0x62, 0x69, 0x63, 0x28, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 638 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 639 0x20, 0x2f, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x65, 0x71, 0x75, 640 0x65, 0x6e, 0x63, 0x79, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 641 0x09, 0x7d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 642 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x61, 0x6d, 0x70, 643 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 644 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x0a, 0x7b, 645 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x3d, 0x20, 646 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2f, 0x20, 0x53, 0x70, 0x65, 0x65, 0x64, 647 0x4f, 0x66, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x2b, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x66, 648 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x69, 649 0x6d, 0x65, 0x20, 0x2a, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x65, 650 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 651 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x65, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 652 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x72, 0x67, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x2f, 0x2a, 0x20, 653 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x41, 0x4e, 0x54, 0x3a, 0x20, 0x64, 0x6f, 0x20, 0x6e, 0x6f, 654 0x74, 0x20, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 655 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x72, 0x67, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x74, 656 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x49, 0x74, 657 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x61, 658 0x0a, 0x09, 0x20, 0x2a, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 659 0x20, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x20, 660 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x62, 0x65, 661 0x69, 0x6e, 0x67, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 0x61, 662 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x64, 0x6f, 0x77, 0x6e, 663 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x09, 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x3a, 0x20, 0x63, 664 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x46, 0x23, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d, 665 0x69, 0x63, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 666 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 667 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x3a, 0x0a, 668 0x09, 0x20, 0x2a, 0x0a, 0x09, 0x20, 0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 669 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 670 0x20, 0x20, 0x7c, 0x78, 0x5f, 0x65, 0x20, 0x2d, 0x20, 0x78, 0x5f, 0x69, 0x7c, 0x5c, 0x0a, 0x09, 671 0x20, 0x2a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x28, 0x78, 0x2c, 0x20, 0x7a, 0x29, 0x20, 0x3d, 0x20, 672 0x63, 0x6f, 0x73, 0x28, 0x46, 0x23, 0x20, 0x2a, 0x20, 0xcf, 0x80, 0x20, 0x2a, 0x20, 0x2d, 0x2d, 673 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x20, 0x29, 0x20, 0x5e, 0x20, 0x32, 0x0a, 674 0x09, 0x20, 0x2a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 675 0x20, 0x20, 0x20, 0x20, 0x20, 0x5c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7c, 0x7a, 676 0x5f, 0x65, 0x20, 0x2d, 0x20, 0x7a, 0x5f, 0x69, 0x7c, 0x2f, 0x0a, 0x09, 0x20, 0x2a, 0x0a, 0x09, 677 0x20, 0x2a, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x78, 0x2c, 0x7a, 0x5f, 0x65, 0x20, 0x61, 678 0x72, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x64, 0x75, 0x63, 0x65, 0x72, 0x20, 0x65, 0x6c, 679 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 680 0x61, 0x6e, 0x64, 0x20, 0x78, 0x2c, 0x7a, 0x5f, 0x69, 0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6d, 681 0x61, 0x67, 0x65, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, 0x2a, 682 0x2f, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x73, 683 0x28, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x73, 0x28, 0x31, 0x38, 0x30, 0x29, 0x20, 0x2a, 0x20, 684 0x61, 0x72, 0x67, 0x29, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 685 0x2a, 0x20, 0x61, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x63, 0x61, 686 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 687 0x6e, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x6f, 0x69, 688 0x6e, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x72, 689 0x6f, 0x77, 0x73, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 0x73, 690 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x70, 0x6f, 0x69, 0x6e, 0x74, 691 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x72, 0x6f, 0x77, 0x73, 0x29, 0x5d, 0x2c, 0x20, 0x70, 0x6f, 0x69, 692 0x6e, 0x74, 0x5b, 0x32, 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 693 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 694 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x77, 0x61, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 695 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x63, 0x6f, 696 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 697 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e, 698 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 699 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x29, 0x0a, 700 0x7b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x72, 0x63, 701 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 702 0x6f, 0x6e, 0x28, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x6f, 0x77, 703 0x73, 0x29, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x72, 0x61, 704 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x29, 0x2c, 0x20, 0x63, 0x6f, 705 0x73, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 706 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x79, 707 0x6c, 0x69, 0x6e, 0x64, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x77, 0x61, 0x76, 0x65, 0x5f, 0x74, 708 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 709 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 0x6f, 0x69, 0x6e, 710 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 711 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 712 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 713 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 714 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 715 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x2c, 716 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x74, 0x78, 0x5f, 0x72, 717 0x6f, 0x77, 0x73, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x66, 0x20, 0x3d, 718 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x2a, 0x20, 0x76, 719 0x65, 0x63, 0x32, 0x28, 0x73, 0x69, 0x6e, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 720 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x29, 0x2c, 0x20, 0x63, 0x6f, 0x73, 0x28, 0x74, 0x72, 0x61, 721 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x29, 0x29, 0x3b, 0x0a, 0x09, 722 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 723 0x72, 0x63, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 724 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x78, 0x5f, 0x72, 725 0x6f, 0x77, 0x73, 0x29, 0x2c, 0x20, 0x66, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x74, 726 0x20, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 727 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 728 0x6f, 0x6e, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x63, 0x71, 729 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 730 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x53, 731 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 732 0x29, 0x20, 0x3f, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x63, 0x65, 733 0x69, 0x76, 0x65, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3a, 734 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 735 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x65, 736 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 737 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x2e, 0x78, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 738 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x76, 0x65, 0x63, 739 0x32, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x66, 740 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x63, 741 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 742 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x72, 0x65, 743 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x53, 0x69, 0x6e, 0x67, 744 0x6c, 0x65, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x29, 0x20, 0x3f, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 745 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x41, 0x6e, 0x67, 0x6c, 0x65, 0x2c, 0x20, 0x46, 746 0x6f, 0x63, 0x75, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x29, 0x20, 0x3a, 0x20, 0x69, 0x6d, 0x61, 747 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 748 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 749 0x6e, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 750 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 751 0x72, 0x63, 0x61, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 752 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 753 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x63, 0x6f, 754 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 755 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 756 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 757 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x0a, 0x7b, 758 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 759 0x20, 0x30, 0x3b, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x54, 0x58, 0x5f, 0x4f, 0x52, 0x49, 0x45, 760 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 761 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 762 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x52, 0x43, 0x41, 0x4f, 0x72, 0x69, 0x65, 763 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x29, 0x20, 0x7b, 0x0a, 764 0x09, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x20, 765 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x54, 0x58, 0x5f, 0x4f, 0x52, 0x49, 0x45, 766 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 767 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 768 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x52, 0x43, 0x41, 0x4f, 0x72, 0x69, 0x65, 769 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x52, 0x6f, 0x77, 0x73, 0x3b, 0x0a, 0x09, 0x09, 770 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 771 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x73, 0x28, 0x66, 772 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x78, 0x29, 0x3b, 0x0a, 773 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x65, 774 0x70, 0x74, 0x68, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 775 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x79, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 776 0x69, 0x73, 0x69, 0x6e, 0x66, 0x28, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x74, 777 0x68, 0x29, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 778 0x3d, 0x20, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x77, 0x61, 0x76, 0x65, 0x5f, 0x74, 0x72, 0x61, 779 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x77, 780 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 781 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x2c, 0x20, 0x74, 0x78, 0x5f, 0x72, 782 0x6f, 0x77, 0x73, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 783 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x79, 0x6c, 784 0x69, 0x6e, 0x64, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x77, 0x61, 0x76, 0x65, 0x5f, 0x74, 0x72, 785 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 786 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x66, 0x6f, 0x63, 787 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 788 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x2c, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x6f, 0x77, 789 0x73, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 790 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x52, 0x45, 791 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x52, 0x43, 0x41, 0x28, 0x63, 0x6f, 792 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 793 0x6f, 0x69, 0x6e, 0x74, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 794 0x6e, 0x74, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 795 0x74, 0x61, 0x72, 0x74, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x46, 0x61, 0x73, 0x74, 796 0x29, 0x3f, 0x20, 0x75, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 797 0x20, 0x3a, 0x20, 0x30, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 798 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 799 0x20, 0x20, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x46, 0x61, 0x73, 0x74, 0x29, 0x3f, 800 0x20, 0x75, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x3a, 801 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 802 0x74, 0x3b, 0x0a, 0x09, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 803 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 804 0x54, 0x59, 0x50, 0x45, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 805 0x6e, 0x74, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 806 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 807 0x72, 0x74, 0x3b, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 808 0x3c, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 809 0x64, 0x3b, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2b, 0x2b, 810 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 811 0x20, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 812 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 813 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75, 0x69, 814 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 815 0x6f, 0x6e, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 816 0x6c, 0x20, 0x72, 0x78, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 817 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x52, 0x58, 0x5f, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 818 0x54, 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 819 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x52, 0x43, 0x41, 0x4f, 0x72, 820 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x52, 0x6f, 0x77, 0x73, 0x3b, 0x0a, 821 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x66, 0x6f, 0x63, 822 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 823 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x66, 0x6f, 824 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x61, 0x63, 825 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x76, 0x65, 826 0x63, 0x32, 0x20, 0x20, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 827 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x72, 0x63, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 828 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x28, 0x78, 0x64, 829 0x63, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2a, 0x20, 0x76, 0x65, 830 0x63, 0x34, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 831 0x31, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x72, 0x78, 0x5f, 0x72, 0x6f, 0x77, 0x73, 832 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 833 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x72, 834 0x63, 0x61, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 835 0x61, 0x6e, 0x63, 0x65, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 836 0x2c, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2c, 0x20, 837 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 838 0x6e, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 839 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 840 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3c, 0x20, 0x43, 0x68, 0x61, 841 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 842 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x65, 843 0x63, 0x33, 0x20, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x20, 0x20, 844 0x20, 0x20, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 845 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2a, 0x20, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 846 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x74, 0x63, 0x68, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x09, 847 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x76, 848 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 849 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x2d, 0x20, 0x72, 0x63, 0x61, 0x5f, 0x70, 0x6c, 850 0x61, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x72, 851 0x78, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x72, 0x78, 0x5f, 0x72, 0x6f, 0x77, 852 0x73, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x5f, 0x61, 853 0x72, 0x67, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x61, 0x62, 854 0x73, 0x28, 0x46, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x63, 0x65, 855 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x2f, 0x20, 0x61, 856 0x62, 0x73, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 857 0x6e, 0x74, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 858 0x61, 0x5f, 0x61, 0x72, 0x67, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x66, 0x29, 0x20, 0x7b, 0x0a, 859 0x09, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 860 0x73, 0x69, 0x64, 0x78, 0x20, 0x20, 0x3d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x69, 861 0x6e, 0x64, 0x65, 0x78, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 862 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2b, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 863 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x29, 0x29, 864 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 865 0x45, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 866 0x65, 0x28, 0x61, 0x5f, 0x61, 0x72, 0x67, 0x29, 0x20, 0x2a, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 867 0x65, 0x5f, 0x72, 0x66, 0x28, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 868 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x73, 0x69, 869 0x64, 0x78, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 870 0x2b, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x28, 871 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2c, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x61, 872 0x6c, 0x75, 0x65, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 873 0x09, 0x7d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 874 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 875 0x45, 0x20, 0x48, 0x45, 0x52, 0x43, 0x55, 0x4c, 0x45, 0x53, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 876 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 877 0x74, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 878 0x20, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 879 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x74, 0x78, 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 880 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75, 881 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 882 0x73, 0x74, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x73, 883 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x52, 0x58, 0x5f, 884 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x28, 0x74, 0x78, 0x5f, 0x72, 885 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x3d, 886 0x3d, 0x20, 0x52, 0x43, 0x41, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 887 0x5f, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 888 0x20, 0x76, 0x65, 0x63, 0x32, 0x20, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 889 0x74, 0x6f, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x63, 0x61, 0x6c, 890 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x71, 0x75, 891 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 892 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 893 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x72, 0x63, 0x61, 894 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 895 0x63, 0x65, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 896 0x66, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2c, 0x20, 0x74, 0x78, 897 0x5f, 0x72, 0x78, 0x5f, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x29, 898 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x20, 0x78, 899 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x20, 900 0x20, 0x3d, 0x20, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 901 0x6d, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 902 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x31, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x0a, 903 0x09, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72, 0x65, 0x73, 904 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 905 0x45, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 906 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x3d, 0x20, 0x53, 0x70, 0x61, 0x72, 0x73, 907 0x65, 0x3b, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x3c, 0x20, 0x41, 0x63, 908 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 909 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 910 0x69, 0x6e, 0x74, 0x20, 0x74, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d, 911 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x29, 0x20, 0x3f, 0x20, 912 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 913 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 914 0x6d, 0x69, 0x74, 0x20, 0x2d, 0x20, 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x29, 0x2e, 0x78, 0x20, 915 0x3a, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x3b, 0x0a, 0x09, 0x09, 0x23, 0x69, 916 0x66, 0x20, 0x46, 0x61, 0x73, 0x74, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 917 0x6e, 0x74, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d, 0x20, 918 0x75, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x3b, 0x0a, 0x09, 0x09, 0x23, 0x65, 0x6c, 919 0x73, 0x65, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x78, 920 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x72, 0x78, 921 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3c, 0x20, 0x43, 0x68, 0x61, 0x6e, 0x6e, 922 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 923 0x6e, 0x65, 0x6c, 0x2b, 0x2b, 0x29, 0x0a, 0x09, 0x09, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 924 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x65, 0x6c, 0x65, 0x6d, 925 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x09, 0x09, 926 0x09, 0x69, 0x66, 0x20, 0x28, 0x72, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x73, 0x29, 0x20, 0x65, 0x6c, 927 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 928 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 929 0x2c, 0x20, 0x74, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x20, 0x30, 0x29, 930 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 931 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x74, 0x63, 0x68, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x09, 932 0x09, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 933 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 934 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x74, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 935 0x6c, 0x2c, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x20, 0x30, 936 0x29, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c, 0x65, 937 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x74, 0x63, 0x68, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 938 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x5f, 0x61, 0x72, 0x67, 0x20, 939 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x46, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x2a, 0x20, 940 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 941 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x78, 0x79, 0x2c, 0x20, 0x65, 0x6c, 0x65, 942 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x78, 0x79, 943 0x29, 0x20, 0x2f, 0x0a, 0x09, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 944 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x73, 0x28, 0x78, 0x64, 0x63, 945 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x7a, 0x29, 0x29, 946 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x61, 0x5f, 0x61, 0x72, 0x67, 0x20, 0x3c, 947 0x20, 0x30, 0x2e, 0x35, 0x66, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f, 948 0x61, 0x74, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 949 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x65, 0x28, 0x61, 0x5f, 0x61, 0x72, 0x67, 0x29, 0x3b, 950 0x0a, 0x09, 0x09, 0x09, 0x09, 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x3a, 0x20, 0x74, 0x72, 951 0x69, 0x62, 0x61, 0x6c, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x20, 0x2a, 952 0x2f, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 953 0x69, 0x74, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x61, 954 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x3d, 0x20, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x65, 0x73, 955 0x71, 0x72, 0x74, 0x28, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 956 0x6f, 0x75, 0x6e, 0x74, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 957 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x69, 0x64, 0x78, 0x20, 0x20, 0x3d, 0x20, 958 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 0x74, 0x72, 0x61, 959 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x2b, 960 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 961 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 962 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x29, 0x3b, 0x0a, 0x09, 963 0x09, 0x09, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x76, 964 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x61, 0x74, 0x69, 965 0x6f, 0x6e, 0x20, 0x2a, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x28, 0x72, 966 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 967 0x6d, 0x69, 0x74, 0x2c, 0x20, 0x73, 0x69, 0x64, 0x78, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 968 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 969 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2c, 0x20, 0x6c, 0x65, 970 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 971 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 972 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x52, 0x45, 0x53, 973 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x28, 974 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 975 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 976 0x20, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 977 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x46, 0x61, 0x73, 978 0x74, 0x29, 0x3f, 0x20, 0x75, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x20, 0x20, 979 0x20, 0x20, 0x3a, 0x20, 0x30, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 980 0x74, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 981 0x20, 0x20, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 0x46, 0x61, 0x73, 0x74, 0x29, 0x3f, 982 0x20, 0x75, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x3a, 983 0x20, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x0a, 0x0a, 984 0x09, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x72, 0x65, 0x73, 985 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 986 0x45, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x78, 0x64, 0x63, 0x5f, 987 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x78, 988 0x64, 0x63, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2a, 0x20, 0x76, 989 0x65, 0x63, 0x34, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 990 0x20, 0x31, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 991 0x69, 0x6e, 0x74, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3d, 992 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x72, 993 0x74, 0x3b, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x3c, 0x20, 994 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 0x3b, 0x20, 995 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 996 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 997 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x64, 0x69, 0x73, 0x74, 0x61, 998 0x6e, 0x63, 0x65, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 999 0x69, 0x6e, 0x74, 0x2e, 0x78, 0x7a, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x72, 0x78, 0x5f, 1000 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x20, 0x2a, 0x20, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c, 1001 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x78, 0x2c, 0x20, 0x30, 1002 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x5f, 0x61, 0x72, 1003 0x67, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x46, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 1004 0x2a, 0x20, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 1005 0x6e, 0x74, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 1006 0x6c, 0x20, 0x2a, 0x20, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 1007 0x70, 0x69, 0x74, 0x63, 0x68, 0x2e, 0x78, 0x29, 0x20, 0x2f, 0x0a, 0x09, 0x09, 0x20, 0x20, 0x20, 1008 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 1009 0x62, 0x73, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 1010 0x6e, 0x74, 0x2e, 0x7a, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x61, 0x5f, 1011 0x61, 0x72, 0x67, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x66, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 1012 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x61, 0x74, 0x69, 1013 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x65, 0x28, 0x61, 0x5f, 0x61, 1014 0x72, 0x67, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 1015 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x3d, 0x20, 0x53, 0x70, 0x61, 0x72, 1016 0x73, 0x65, 0x3b, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x3c, 0x20, 0x41, 1017 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 1018 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09, 1019 0x09, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x20, 0x20, 0x74, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 1020 0x6e, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x28, 1021 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x29, 0x20, 0x3f, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 1022 0x6f, 0x61, 0x64, 0x28, 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 1023 0x6e, 0x74, 0x73, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x20, 0x2d, 0x20, 1024 0x53, 0x70, 0x61, 0x72, 0x73, 0x65, 0x29, 0x2e, 0x78, 0x20, 0x3a, 0x20, 0x74, 0x72, 0x61, 0x6e, 1025 0x73, 0x6d, 0x69, 0x74, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x20, 1026 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 1027 0x3d, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 1028 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x74, 0x63, 0x68, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 1029 0x74, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x6f, 1030 0x72, 0x28, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x2f, 1031 0x20, 0x32, 0x29, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x66, 1032 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x69, 0x64, 0x78, 0x20, 1033 0x20, 0x3d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 1034 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x78, 0x64, 0x63, 0x5f, 0x77, 0x6f, 0x72, 1035 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 1036 0x69, 0x74, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x29, 0x20, 0x2b, 0x20, 0x72, 0x65, 0x63, 1037 0x65, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x29, 0x3b, 0x0a, 1038 0x09, 0x09, 0x09, 0x09, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 1039 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x70, 0x6f, 0x64, 0x69, 0x7a, 0x61, 0x74, 1040 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x66, 0x28, 1041 0x72, 0x78, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2c, 0x20, 0x74, 0x72, 0x61, 0x6e, 1042 0x73, 0x6d, 0x69, 0x74, 0x2c, 0x20, 0x73, 0x69, 0x64, 0x78, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 1043 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 1044 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2c, 0x20, 0x6c, 1045 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x29, 0x29, 0x3b, 0x0a, 0x09, 1046 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 1047 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x76, 0x6f, 1048 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x69, 0x76, 0x65, 1049 0x63, 0x33, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x69, 1050 0x76, 0x65, 0x63, 0x33, 0x28, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 1051 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x29, 0x3b, 0x0a, 0x09, 0x69, 0x66, 1052 0x20, 0x28, 0x21, 0x61, 0x6c, 0x6c, 0x28, 0x6c, 0x65, 0x73, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x28, 1053 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 1054 0x53, 0x69, 0x7a, 0x65, 0x28, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 1055 0x74, 0x65, 0x78, 0x29, 0x29, 0x29, 0x29, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 1056 0x3b, 0x0a, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x46, 0x61, 0x73, 0x74, 0x0a, 0x09, 0x52, 0x45, 0x53, 1057 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x75, 0x6d, 0x20, 0x3d, 0x20, 0x52, 1058 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 1059 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 1060 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x6f, 1061 0x78, 0x65, 0x6c, 0x29, 0x29, 0x3b, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x52, 0x45, 1062 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x20, 0x73, 0x75, 0x6d, 0x20, 0x3d, 0x20, 1063 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x28, 0x30, 0x29, 0x3b, 0x0a, 1064 0x09, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x20, 0x2b, 0x3d, 0x20, 0x75, 0x5f, 1065 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3b, 0x0a, 0x23, 0x65, 1066 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x77, 0x6f, 0x72, 0x6c, 1067 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x76, 0x6f, 0x78, 0x65, 0x6c, 1068 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 1069 0x34, 0x28, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x31, 0x29, 0x29, 1070 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x28, 1071 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x29, 1072 0x20, 0x7b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 1073 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x3a, 1074 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 1075 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x55, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x3a, 0x0a, 1076 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x73, 0x75, 0x6d, 0x20, 0x2b, 0x3d, 0x20, 0x46, 0x4f, 0x52, 0x43, 1077 0x45, 0x53, 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x29, 0x3b, 1078 0x0a, 0x09, 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 1079 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 1080 0x48, 0x45, 0x52, 0x43, 0x55, 0x4c, 0x45, 0x53, 0x3a, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 1081 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 1082 0x55, 0x48, 0x45, 0x52, 0x43, 0x55, 0x4c, 0x45, 0x53, 0x3a, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 1083 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 1084 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x5f, 0x50, 0x41, 0x3a, 0x0a, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x73, 1085 0x75, 0x6d, 0x20, 0x2b, 0x3d, 0x20, 0x48, 0x45, 0x52, 0x43, 0x55, 0x4c, 0x45, 0x53, 0x28, 0x77, 1086 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x7d, 0x62, 1087 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x41, 0x63, 0x71, 0x75, 1088 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x46, 0x6c, 0x61, 0x73, 1089 0x68, 0x3a, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 1090 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x52, 0x43, 0x41, 0x5f, 0x54, 0x50, 0x57, 1091 0x3a, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x41, 0x63, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 1092 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x5f, 0x52, 0x43, 0x41, 0x5f, 0x56, 0x4c, 0x53, 0x3a, 1093 0x0a, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x73, 0x75, 0x6d, 0x20, 0x2b, 0x3d, 0x20, 0x52, 0x43, 0x41, 1094 0x28, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x29, 0x3b, 0x0a, 0x09, 1095 0x7d, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x09, 0x7d, 0x0a, 0x0a, 0x09, 0x23, 0x69, 0x66, 1096 0x20, 0x43, 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 1097 0x69, 0x6e, 0x67, 0x0a, 0x09, 0x09, 0x2f, 0x2a, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x28, 0x72, 0x6e, 1098 0x70, 0x29, 0x3a, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 1099 0x68, 0x61, 0x74, 0x20, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x72, 1100 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x7e, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 1101 0x20, 0x2a, 0x2f, 0x0a, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x65, 0x6e, 0x6f, 1102 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x73, 0x75, 0x6d, 0x5b, 0x52, 0x45, 1103 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5d, 1104 0x20, 0x2b, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x73, 0x75, 0x6d, 0x5b, 0x52, 0x45, 0x53, 1105 0x55, 0x4c, 0x54, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5d, 0x20, 1106 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 1107 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x73, 0x75, 0x6d, 0x29, 0x20, 0x2a, 1108 0x3d, 0x20, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 1109 0x53, 0x54, 0x28, 0x73, 0x75, 0x6d, 0x29, 0x20, 0x2f, 0x20, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 1110 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x3b, 0x0a, 0x09, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x0a, 1111 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x28, 0x75, 0x5f, 0x6f, 0x75, 1112 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x5f, 1113 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x54, 0x59, 1114 0x50, 0x45, 0x5f, 0x43, 0x41, 0x53, 0x54, 0x28, 0x73, 0x75, 0x6d, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 1115 0x0a 1116 }; 1117 1118 read_only global u8 beamformer_shader_minmax_bytes[] = { 1119 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66, 1120 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 1121 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x3a, 1122 0x20, 0x44, 0x6f, 0x65, 0x73, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x20, 0x73, 1123 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x20, 0x33, 0x44, 0x20, 0x66, 0x6f, 0x72, 0x20, 1124 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x61, 0x72, 1125 0x67, 0x65, 0x73, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x75, 1126 0x65, 0x73, 0x20, 0x2a, 0x2f, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 0x63, 1127 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x78, 0x20, 0x3d, 0x20, 0x33, 0x32, 0x2c, 0x20, 1128 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x79, 0x20, 0x3d, 0x20, 0x31, 1129 0x2c, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x7a, 0x20, 0x3d, 1130 0x20, 0x33, 0x32, 0x29, 0x20, 0x69, 0x6e, 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 1131 0x28, 0x72, 0x67, 0x33, 0x32, 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 1132 0x3d, 0x20, 0x30, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x20, 0x75, 1133 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x33, 0x44, 0x20, 0x75, 1134 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78, 0x3b, 0x0a, 0x6c, 1135 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x72, 0x67, 0x33, 0x32, 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e, 1136 0x64, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x6f, 1137 0x6e, 0x6c, 0x79, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67, 1138 0x65, 0x33, 0x44, 0x20, 0x75, 0x5f, 0x6d, 0x69, 0x70, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 1139 0x65, 0x78, 0x3b, 0x0a, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 1140 0x0a, 0x7b, 0x0a, 0x09, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 1141 0x6f, 0x72, 0x64, 0x20, 0x3d, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33, 0x28, 0x67, 0x6c, 0x5f, 0x47, 1142 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 1143 0x44, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 1144 0x69, 0x64, 0x78, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x20, 1145 0x2a, 0x20, 0x32, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 1146 0x61, 0x78, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 1147 0x30, 0x30, 0x30, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 1148 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x32, 1149 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 1150 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x6a, 0x20, 0x3c, 0x20, 0x32, 1151 0x3b, 0x20, 0x6a, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x65, 0x63, 0x32, 1152 0x20, 0x61, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 1153 0x64, 0x28, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x78, 1154 0x2c, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33, 0x28, 0x69, 0x2c, 1155 0x20, 0x6a, 0x2c, 0x20, 0x30, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x76, 1156 0x65, 0x63, 0x32, 0x20, 0x62, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 1157 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 1158 0x74, 0x65, 0x78, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2b, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33, 1159 0x28, 0x69, 0x2c, 0x20, 0x6a, 0x2c, 0x20, 0x31, 0x29, 0x29, 0x2e, 0x78, 0x79, 0x3b, 0x0a, 0x09, 1160 0x09, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x6d, 0x69, 1161 0x6e, 0x28, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x2e, 0x78, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 1162 0x28, 0x61, 0x2e, 0x78, 0x2c, 0x20, 0x62, 0x2e, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 1163 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 1164 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x2e, 0x79, 0x2c, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x61, 1165 0x2e, 0x79, 0x2c, 0x20, 0x62, 0x2e, 0x79, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 1166 0x7d, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x28, 0x75, 0x5f, 1167 0x6d, 0x69, 0x70, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x2c, 0x20, 0x6f, 0x75, 1168 0x74, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x6d, 0x69, 1169 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 1170 0x0a 1171 }; 1172 1173 read_only global u8 beamformer_shader_sum_bytes[] = { 1174 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66, 1175 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 1176 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x28, 0x6c, 0x6f, 1177 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x78, 0x20, 0x3d, 0x20, 0x33, 0x32, 0x2c, 1178 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x79, 0x20, 0x3d, 0x20, 1179 0x31, 0x2c, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x7a, 0x20, 1180 0x3d, 0x20, 0x33, 0x32, 0x29, 0x20, 0x69, 0x6e, 0x3b, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 1181 0x74, 0x28, 0x72, 0x67, 0x33, 0x32, 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 1182 0x20, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 1183 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x33, 0x44, 0x20, 1184 0x75, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x3b, 0x0a, 0x6c, 0x61, 0x79, 0x6f, 0x75, 1185 0x74, 0x28, 0x72, 0x67, 0x33, 0x32, 0x66, 0x2c, 0x20, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 1186 0x20, 0x3d, 0x20, 0x31, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x20, 1187 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x33, 0x44, 0x20, 1188 0x75, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x3b, 0x0a, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 1189 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x69, 0x76, 0x65, 0x63, 0x33, 0x20, 1190 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x69, 0x76, 0x65, 0x63, 0x33, 0x28, 0x67, 0x6c, 1191 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 1192 0x6e, 0x49, 0x44, 0x29, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x34, 0x20, 0x20, 0x73, 0x75, 0x6d, 1193 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x75, 1194 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x2c, 0x20, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x29, 1195 0x20, 0x2b, 0x20, 0x75, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x63, 0x61, 0x6c, 1196 0x65, 0x20, 0x2a, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x28, 0x75, 0x5f, 1197 0x69, 0x6e, 0x5f, 0x69, 0x6d, 0x67, 0x2c, 0x20, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x29, 0x3b, 0x0a, 1198 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x28, 0x75, 0x5f, 0x6f, 0x75, 1199 0x74, 0x5f, 0x69, 0x6d, 0x67, 0x2c, 0x20, 0x76, 0x6f, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x73, 0x75, 1200 0x6d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a 1201 }; 1202 1203 read_only global u8 beamformer_shader_render3d_bytes[] = { 1204 0x2f, 0x2a, 0x20, 0x53, 0x65, 0x65, 0x20, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x66, 1205 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 1206 0x6c, 0x73, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x2f, 0x2a, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 1207 0x3a, 0x20, 0x20, 0x68, 0x20, 0x5b, 0x30, 0x2c, 0x33, 0x36, 0x30, 0x5d, 0x20, 0x7c, 0x20, 0x73, 1208 0x2c, 0x76, 0x20, 0x5b, 0x30, 0x2c, 0x20, 0x31, 0x5d, 0x20, 0x2a, 0x0a, 0x20, 0x2a, 0x20, 0x6f, 1209 0x75, 0x74, 0x70, 0x75, 0x74, 0x3a, 0x20, 0x72, 0x67, 0x62, 0x20, 0x5b, 0x30, 0x2c, 0x31, 0x5d, 1210 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x2f, 1211 0x0a, 0x76, 0x65, 0x63, 0x33, 0x20, 0x68, 0x73, 0x76, 0x32, 0x72, 0x67, 0x62, 0x28, 0x76, 0x65, 1212 0x63, 0x33, 0x20, 0x68, 0x73, 0x76, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 1213 0x6b, 0x20, 0x3d, 0x20, 0x6d, 0x6f, 0x64, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x35, 0x2c, 0x20, 1214 0x33, 0x2c, 0x20, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x68, 0x73, 0x76, 0x2e, 0x78, 0x20, 0x2f, 0x20, 1215 0x36, 0x30, 0x2c, 0x20, 0x36, 0x29, 0x3b, 0x0a, 0x09, 0x6b, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 1216 0x28, 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x69, 0x6e, 0x28, 0x6b, 0x2c, 0x20, 0x34, 0x20, 0x2d, 0x20, 1217 0x6b, 0x29, 0x2c, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x72, 0x65, 0x74, 1218 0x75, 0x72, 0x6e, 0x20, 0x68, 0x73, 0x76, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x68, 0x73, 0x76, 0x2e, 1219 0x7a, 0x20, 0x2a, 0x20, 0x68, 0x73, 0x76, 0x2e, 0x79, 0x20, 0x2a, 0x20, 0x6b, 0x3b, 0x0a, 0x7d, 1220 0x0a, 0x0a, 0x2f, 0x2a, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x28, 0x72, 0x6e, 0x70, 0x29, 0x3a, 0x20, 1221 0x61, 0x64, 0x61, 0x70, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x3a, 0x20, 0x68, 0x74, 1222 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x69, 0x71, 0x75, 0x69, 0x6c, 0x65, 0x7a, 0x6c, 0x65, 0x73, 1223 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x73, 0x2f, 0x64, 0x69, 1224 0x73, 0x74, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x2a, 0x2f, 0x0a, 0x66, 1225 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x64, 0x66, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x62, 0x6f, 1226 0x78, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x28, 0x76, 0x65, 0x63, 0x33, 0x20, 0x70, 1227 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x62, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 1228 0x65, 0x29, 0x0a, 0x7b, 0x0a, 0x09, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x73, 0x28, 0x70, 0x29, 1229 0x20, 0x2d, 0x20, 0x62, 0x3b, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x71, 0x20, 0x3d, 0x20, 1230 0x61, 0x62, 0x73, 0x28, 0x70, 0x20, 0x2b, 0x20, 0x65, 0x29, 0x20, 0x2d, 0x20, 0x65, 0x3b, 0x0a, 1231 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 1232 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x69, 0x6e, 0x28, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x6d, 1233 0x61, 0x78, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x70, 0x2e, 0x78, 0x2c, 0x20, 0x71, 0x2e, 0x79, 1234 0x2c, 0x20, 0x71, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x2c, 0x0a, 0x09, 1235 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 1236 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x6d, 0x61, 1237 0x78, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x71, 0x2e, 0x78, 0x2c, 0x20, 0x70, 0x2e, 0x79, 0x2c, 1238 0x20, 0x71, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x2c, 0x0a, 0x09, 1239 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 1240 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x6d, 0x61, 1241 0x78, 0x28, 0x76, 0x65, 0x63, 0x33, 0x28, 0x71, 0x2e, 0x78, 0x2c, 0x20, 0x71, 0x2e, 0x79, 0x2c, 1242 0x20, 0x70, 0x2e, 0x7a, 0x29, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x09, 1243 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 1244 0x0a, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 1245 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x6c, 0x65, 0x6e, 1246 0x67, 0x74, 0x68, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x28, 0x75, 0x5f, 0x74, 0x65, 1247 0x78, 0x74, 0x75, 0x72, 0x65, 0x2c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63, 1248 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x29, 0x2e, 0x78, 0x79, 0x29, 0x3b, 0x0a, 1249 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 1250 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x31, 0x30, 0x2e, 0x30, 0x66, 1251 0x2c, 0x20, 0x75, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x20, 0x2f, 0x20, 1252 0x32, 0x30, 0x2e, 0x30, 0x66, 0x29, 0x3b, 0x0a, 0x09, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x63, 1253 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x73, 0x6d, 0x70, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x66, 0x2c, 0x20, 1254 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x29, 0x3b, 0x0a, 1255 0x09, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x73, 0x6d, 0x70, 0x20, 0x2f, 0x20, 0x74, 0x68, 0x72, 1256 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x3b, 0x0a, 0x09, 0x73, 0x6d, 0x70, 1257 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x77, 0x28, 0x73, 0x6d, 0x70, 0x2c, 0x20, 0x75, 0x5f, 0x67, 0x61, 1258 0x6d, 0x6d, 0x61, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x2f, 0x2f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 1259 0x74, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 1260 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x2e, 0x79, 0x3b, 0x0a, 0x09, 1261 0x2f, 0x2f, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x73, 0x6d, 0x70, 0x20, 0x2a, 0x20, 0x73, 0x6d, 1262 0x6f, 0x6f, 0x74, 0x68, 0x73, 0x74, 0x65, 0x70, 0x28, 0x2d, 0x30, 0x2e, 0x34, 0x2c, 0x20, 0x31, 1263 0x2e, 0x31, 0x2c, 0x20, 0x74, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x67, 0x61, 0x69, 0x6e, 0x3b, 1264 0x0a, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x75, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x63, 0x61, 1265 0x6c, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x32, 0x30, 1266 0x20, 0x2a, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x73, 0x6d, 0x70, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 1267 0x67, 0x28, 0x31, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x73, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x63, 1268 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x73, 0x6d, 0x70, 0x2c, 0x20, 0x2d, 0x75, 0x5f, 0x64, 0x62, 0x5f, 1269 0x63, 0x75, 0x74, 0x6f, 0x66, 0x66, 0x2c, 0x20, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x2d, 0x75, 0x5f, 1270 0x64, 0x62, 0x5f, 0x63, 0x75, 0x74, 0x6f, 0x66, 0x66, 0x3b, 0x0a, 0x09, 0x09, 0x73, 0x6d, 0x70, 1271 0x20, 0x3d, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x73, 0x6d, 0x70, 0x3b, 0x0a, 0x09, 0x7d, 0x0a, 0x0a, 1272 0x09, 0x76, 0x65, 0x63, 0x33, 0x20, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x66, 0x20, 1273 0x2a, 0x20, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63, 1274 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x20, 0x2d, 0x20, 0x31, 0x2e, 0x30, 0x66, 1275 0x3b, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 1276 0x6d, 0x70, 0x28, 0x73, 0x64, 0x66, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x62, 0x6f, 0x78, 0x5f, 1277 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x28, 0x70, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 1278 0x31, 0x2e, 0x30, 0x66, 0x29, 0x2c, 0x20, 0x75, 0x5f, 0x62, 0x62, 0x5f, 0x66, 0x72, 0x61, 0x63, 1279 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x2f, 0x20, 0x75, 0x5f, 0x62, 0x62, 0x5f, 0x66, 0x72, 0x61, 1280 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 1281 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 1282 0x34, 0x28, 0x74, 0x20, 0x2a, 0x20, 0x76, 0x65, 0x63, 0x33, 0x28, 0x73, 0x6d, 0x70, 0x29, 0x20, 1283 0x2b, 0x20, 0x28, 0x31, 0x20, 0x2d, 0x20, 0x74, 0x29, 0x20, 0x2a, 0x20, 0x75, 0x5f, 0x62, 0x62, 1284 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x2c, 0x20, 0x31, 0x29, 0x3b, 1285 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x75, 0x5f, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x5f, 0x62, 0x62, 1286 0x29, 0x20, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x3d, 0x20, 0x75, 1287 0x5f, 0x62, 0x62, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x3b, 0x0a, 0x0a, 0x09, 0x2f, 0x2f, 1288 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 1289 0x34, 0x28, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x6f, 1290 0x64, 0x28, 0x75, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x2c, 0x20, 0x74, 0x65, 0x78, 1291 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x29, 1292 0x2e, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x29, 0x3b, 0x0a, 0x09, 0x2f, 1293 0x2f, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 1294 0x63, 0x34, 0x28, 0x61, 0x62, 0x73, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x2c, 0x20, 1295 0x31, 0x29, 0x3b, 0x0a, 0x09, 0x2f, 0x2f, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 1296 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 1297 0x2c, 0x20, 0x73, 0x6d, 0x70, 0x29, 0x3b, 0x0a, 0x09, 0x2f, 0x2f, 0x6f, 0x75, 0x74, 0x5f, 0x63, 1298 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x28, 0x73, 0x6d, 0x70, 1299 0x20, 0x2a, 0x20, 0x61, 0x62, 0x73, 0x28, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x29, 0x2c, 0x20, 1300 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a 1301 }; 1302 1303 read_only global s8 beamformer_shader_data[] = { 1304 {.data = beamformer_shader_decode_bytes, .len = countof(beamformer_shader_decode_bytes)}, 1305 {.data = beamformer_shader_filter_bytes, .len = countof(beamformer_shader_filter_bytes)}, 1306 {.data = beamformer_shader_das_bytes, .len = countof(beamformer_shader_das_bytes)}, 1307 {.data = beamformer_shader_minmax_bytes, .len = countof(beamformer_shader_minmax_bytes)}, 1308 {.data = beamformer_shader_sum_bytes, .len = countof(beamformer_shader_sum_bytes)}, 1309 {.data = beamformer_shader_render3d_bytes, .len = countof(beamformer_shader_render3d_bytes)}, 1310 }; 1311