from binascii import crc_hqx
from itertools import cycle
from struct import pack

from chirp import chirp_common, memmap, errors, bitwise, directory, settings
from chirp.settings import RadioSetting, RadioSettingGroup, \
    RadioSettingValueBoolean, RadioSettingValueList, \
    RadioSettingValueInteger, RadioSettingValueString, \
    RadioSettings, RadioSettingSubGroup

ERROR_TIP = "\n\nCheck cable, press M to enter into menu to prevent process interrupting"

MEM_SETTINGS = """
struct {
  ul32
    checkbyte : 5,
    upconverter : 27;

  ul16 currentScanlist:16;
  u8 mainApp;

  u16 contrast : 4,
    batteryCalibration: 12;

  u8
    reserved4 : 4,
    backlight : 4;

  u8 
    batsave : 4,
    reserved3 : 4;

  u8 
    txTime : 4,
    vox : 4;

  u8
    roger : 3,
    iAmPro : 1,
    micGain  : 4;

  u8
    keylock : 1,
    beep : 1,
    showLevelInVfo : 1,
    pttLock : 1,
    chDisplayMode : 2,
    scanmode : 2;

  u8
    brightness : 4,
    dtmfdecode : 1,
    repeaterSte : 1,
    ste : 1,
    busyChannelTxLock : 1;

  u8
    bound_240_280 : 1,
    eepromType : 3,
    brightnessLow : 4;

  u8
    sqOpenedTimeout : 4,
    sqClosedTimeout : 4;

  u8 
    dw : 2,
    si4732PowerOff: 1,
    noListen : 1,
    batteryStyle : 2,
    batteryType : 2;

  u8 scanTimeout;

  u8
    sqlCloseTime : 2,
    sqlOpenTime : 3,
    toneLocal : 1,
    backlightOnSquelch : 2;

  u8 deviation : 8;
  u8
    unused: 5,
    skipGarbageFrequencies : 1,
    activeVFO : 2;
} Settings;
"""

MEM_CH_FMT = """
    struct {
      struct {
        u8 
          unused:3,
          readonly : 1,
          type : 4;
      } meta;
      ul16 scanlists : 16;
      char name[10];
      ul32 unused1:5, rxF: 27;
      ul32 
          unused2:2,
        allowTx:1,
          offsetDir: 2,
          txF: 27;

      u8
        modulation: 4,
        step: 4;

      u8
        power: 2,
        radio: 2,
        bw: 4;
      u8 
        unused3:4,
        scrambler: 4;

      struct {
        u8
          unused4: 2,
          type: 2,
          value : 4;
      } squelch;

      struct {
        struct {
          u8 value : 8;
          u8 unused:4, type : 4;
        } rx;
        struct {
          u8 value : 8;
          u8 unused:4, type : 4;
        } tx;
      } code;

// byte 30
      ul32 shift4_1:32;
      u8
        unused7 : 3,
        gainIndex : 5;
// OK^


    } CH[%d];"""

# Channel types
TYPE_EMPTY = 0
TYPE_CH = 1
TYPE_BAND = 2
TYPE_VFO =3 
TYPE_FOLDER = 4
TYPE_MELODY = 5
TYPE_SETTING = 6
TYPE_FILE = 7


@directory.register
class QuanshengUVK5Radio(chirp_common.CloneModeRadio):
    """Quansheng UV-K5"""
    VENDOR = "Quansheng"     # Replace this with your vendor
    MODEL = "UV-K5"  # Replace this with your model
    VARIANT = 'fagci s0v4'

    BAUD_RATE = 38400    # Replace this with your baud rate
    BLOCK_SIZE = 80
    EEPROM_TYPE = [
        "BL24C64",
        "BL24C128",
        "BL24C256",
        "BL24C512",
        "BL24C1024",
        "M24M02"
    ]
    POWER_LEVELS = [
        chirp_common.PowerLevel("ULow", watts=0.05),
        chirp_common.PowerLevel("Low", watts=1.00),
        chirp_common.PowerLevel("Medium", watts=2.50),
        chirp_common.PowerLevel("High", watts=5.00),
    ]
    SQUELCH_LEVELS = [str(v) for v in range(0, 10)]
    SQUELCH_TYPES = ["RNG", "RG", "RN", "R"]
    MODULATION_LIST = ["FM", "AM", "LSB", "USB",
                       "DV", "RAW", "WFM"]
    ROGER_NAMES = ["None", "Tiny"]
    BL_TIME_VALUES = [0, 5, 10, 20, 60, 120, 255]
    BL_TIME_NAMES = ["Off", "5s", "10s", "20s", "1min", "2min", "On"]
    BL_TIME_MAP = list(zip(BL_TIME_NAMES, BL_TIME_VALUES))
    BATTERY_TYPE_NAMES = ["1600mAh", "2200mAh", "3500mAh"]
    BATTERY_STYLE_NAMES = ["Plain", "Percent", "Voltage"]
    VFOs = ["VFO-A", "VFO-B"]
    BOUND_240_280_NAMES = ["Bound 240", "Bound 280"]
    CODE_TYPES = ["None", "CTCSS", "DCS", "-DCS"]

    SQL_OPEN_NAMES = [f"{i}ms" for i in range(0, 35, 5)]
    SQL_CLOSE_NAMES = [f"{i}ms" for i in range(0, 15, 5)]

    SCAN_TIMEOUT_NAMES = [
        "0", "100ms", "200ms", "300ms", "400ms", "500ms", "1s", "3s", "5s", "10s",
        "30s", "1min", "2min", "5min", "None"
    ]

    APP_LIST = [
      "NONE",
      "SCANER",
      "CH_SCAN",
      "BAND_SCAN",
      "FC",
      "CH_LIST",
      "FINPUT",
      "APPS_LIST",
      "LOOT_LIST",
      "RESET",
      "TEXTINPUT",
      "CH_CFG",
      "SETTINGS",
      "VFO1",
      "LEVEL",
      "ABOUT",
    ]

    BL_SQL_MODE_NAMES = ["Off", "On", "Open"]
    CH_TYPE_NAMES = [
        "EMPTY",
        "CH",
        "BAND",
        "VFO",
        "FOLDER",
        "MELODY"
    ]
    STEP_FREQ_TABLE = [
    2,   5,   50,  100,
    250, 500, 625, 833, 900, 1000, 1250, 2500, 5000, 10000, 50000,
    ]
    CTCSS_TONES = [
        67.0, 69.3, 71.9, 74.4, 77.0, 79.7, 82.5, 85.4,
        88.5, 91.5, 94.8, 97.4, 100.0, 103.5, 107.2, 110.9,
        114.8, 118.8, 123.0, 127.3, 131.8, 136.5, 141.3, 146.2,
        151.4, 156.7, 159.8, 162.2, 165.5, 167.9, 171.3, 173.8,
        177.3, 179.9, 183.5, 186.2, 189.9, 192.8, 196.6, 199.5,
        203.5, 206.5, 210.7, 218.1, 225.7, 229.1, 233.6, 241.8,
        250.3, 254.1,
    ]

    CTCSS_TONES_NAMES = list(map(str, CTCSS_TONES))

    DTCS_CODES = [
        23, 25, 26, 31, 32, 36, 43, 47, 51, 53, 54,
        65, 71, 72, 73, 74, 114, 115, 116, 122, 125, 131,
        132, 134, 143, 145, 152, 155, 156, 162, 165, 172, 174,
        205, 212, 223, 225, 226, 243, 244, 245, 246, 251, 252,
        255, 261, 263, 265, 266, 271, 274, 306, 311, 315, 325,
        331, 332, 343, 346, 351, 356, 364, 365, 371, 411, 412,
        413, 423, 431, 432, 445, 446, 452, 454, 455, 462, 464,
        465, 466, 503, 506, 516, 523, 526, 532, 546, 565, 606,
        612, 624, 627, 631, 632, 654, 662, 664, 703, 712, 723,
        731, 732, 734, 743, 754
    ]

    DTCS_CODES_NAMES = list(map(str, DTCS_CODES))
    GAIN_NAMES = [
        '-57dB',
        '-55dB',
        '-54dB',
        '-50dB',
        '-48dB',
        '-46dB',
        '-44dB',
        '-42dB',
        '-37dB',
        '-35dB',
        '-31dB',
        '-29dB',
        '-26dB',
        '-23dB',
        '-19dB',
        '-17dB',
        '-15dB',
        '-11dB',
        '-9dB',
        '-6dB',
        'auto',
        '+2dB',
        '+5dB',
        '+10dB',
        '+13dB',
        '+16dB',
        '+20dB',
        '+24dB',
        '+25dB',
        '+30dB',
        '+31dB',
        '+33dB',
    ]
    BW_NAMES = [
        "U6K",  
        "U7K",  
        "N9k",  
        "N10k", 
        "W12k", 
        "W14k", 
        "W17k", 
        "W20k", 
        "W23k", 
        "W26k", 
    ]

    def get_features(self):
        rf = chirp_common.RadioFeatures()
        rf.has_bank = False
        
        rf.has_settings = True
        rf.has_nostep_tuning = True
        rf.valid_characters = chirp_common.CHARSET_ASCII + "\0"
        rf.valid_duplexes = ["", "+", "-", "split"]
        rf.valid_name_length = 9
        rf.valid_modes = self.MODULATION_LIST
        rf.valid_tmodes = ["", "Tone", "TSQL", "DTCS", "Cross"]
        rf.valid_cross_modes = ["Tone->Tone", "Tone->DTCS", "DTCS->Tone", "->Tone", "->DTCS", "DTCS->", "DTCS->DTCS"]
        rf.valid_power_levels = self.POWER_LEVELS
        rf.valid_tuning_steps = [
            .02,
            .05,
            .50,
            1.00,
            2.50,
            5.00,
            6.25,
            8.33,
            9.00,
            10.00,
            12.50,
            25.00,
            50.00,
            100.00,
            500.00,
        ]
        
        rf.memory_bounds = (0, self.ch_count-1)  # This radio supports memories 0-9
        rf.valid_bands = [
            (0, 15_800_000),
            (15_800_000, 280_000_000),  # Supports 2-meters
            (280_000_000, 1340_000_000),  # Supports 70-centimeters
        ]
        return rf

    # DOWNLOAD
    def sync_in(self):
        status = chirp_common.Status()
        
        self.FIRMWARE_VERSION = self.get_version()
        if not self.FIRMWARE_VERSION:
            raise errors.RadioError('Unable to determine firmware version')

        print(f"FW: {self.FIRMWARE_VERSION}")

        addr = 0
        data = b""
        
        status.msg = f"Reading settings..."
        status.max = self.settings_size
        while addr < status.max:
            d = self.readmem(addr, self.BLOCK_SIZE)
            data += d
            addr += self.BLOCK_SIZE
            status.cur = addr
            self.status_fn(status)

        self._mmap = memmap.MemoryMapBytes(data)
        self.process_mmap()

        print(f"EEPROM SIZE: {self.eeprom_size}")
        print(f"CH SIZE: {self.ch_size}")
        print(f"CH COUNT: {self.ch_count}")


        status.max = self.settings_size + self.ch_size * self.ch_count
        while addr < status.max:
            d = self.readmem(addr, self.BLOCK_SIZE)
            data += d
            addr += self.BLOCK_SIZE
            status.cur = addr
            ch_num = addr * self.ch_count // status.max
            status.msg = f"Reading channels {ch_num}/{self.ch_count}"
            self.status_fn(status)


        self._mmap = memmap.MemoryMapBytes(data)
        self.process_mmap()

    # UPLOAD
    def sync_out(self):
        status = chirp_common.Status()
        self.FIRMWARE_VERSION = self.get_version()

        addr = 0

        status.max = self.get_patch_address()
        while addr < status.max:
            self.writemem(self.get_mmap()[addr:addr + self.BLOCK_SIZE], addr)
            status.cur = addr
            addr += self.BLOCK_SIZE
            status.msg = f"Uploading...{round(addr*100/status.max)}%"
            self.status_fn(status)


        if self.is_patch_can_be_sent():
            addr = self.get_patch_address()
            i = 0
            status.max = self.eeprom_size
            while addr < status.max:
                left = status.max - addr
                n = self.BLOCK_SIZE if left > self.BLOCK_SIZE else left
                self.writemem(bytes(self.PATCH_DATA[i:i+n]), addr)
                i += n
                addr += n
                status.cur = addr
                status.msg = f"Writing patch for you, c0mr4d3 <3 ({round(i*100/self.patch_size)}%)"
                self.status_fn(status)
            self.reset()
        return True

    def get_ch_count(self):
        if self.is_patch_can_be_sent():
            ch_count = (self.eeprom_size - self.settings_size - self.patch_size) // self.ch_size
        else:
            ch_count = (self.eeprom_size - self.settings_size) // self.ch_size

        if ch_count > 1024:
            ch_count = 1024

        return ch_count

    def get_patch_address(self):
        if self.is_patch_can_be_sent():
            return self.eeprom_size - self.patch_size

        return self.eeprom_size

    def is_patch_can_be_sent(self):
        return self.eeprom_size >= self.patch_size + self.settings_size

    # Convert the raw byte array into a memory object structure
    def process_mmap(self):
        settings_parsed = bitwise.parse(MEM_SETTINGS, self._mmap)
        self.eeprom_type = int(settings_parsed["Settings"]['eepromType'])
        self.eeprom_size = 0x2000 << self.eeprom_type
        self.ch_count = self.get_ch_count()
        self._memobj = bitwise.parse(MEM_SETTINGS + (MEM_CH_FMT % self.ch_count), self._mmap)

    # Return a raw representation of the memory object, which
    # is very helpful for development
    def get_raw_memory(self, number):
        return repr(self._memobj.CH[number])

    # Get CH item
    def get_memory(self, number):
        # print(self.get_raw_memory(number))
        _mem = self._memobj.CH[number]

        mem = chirp_common.Memory()

        mem.number = number

        if _mem.meta.type == TYPE_EMPTY and _mem.rxF == 0:
            mem.empty = True
        else:
            for c in _mem.name:
                if c == 0xFF or c == 0x00:
                    break
                mem.name += str(c)


            mem.name = mem.name.strip()
            mem.freq = int(_mem.rxF) * 10
            mem.offset = int(_mem.txF) * 10
            mem.duplex = self.get_features().valid_duplexes[int(_mem.offsetDir)]
            mem.mode = self.get_features().valid_modes[int(_mem.modulation)]
            mem.power = self.get_features().valid_power_levels[int(_mem.power)]
            mem.tuning_step = self.get_features().valid_tuning_steps[int(_mem.step)]
            self._get_tone(mem, _mem)
            if _mem.gainIndex == 0:
                _mem.gainIndex = 21

        mem.extra = RadioSettingGroup(
            "extra",
            "extra",
            RadioSetting("type", "Type", RadioSettingValueList(
                self.CH_TYPE_NAMES,
                current_index = _mem.meta.type
            )),
            RadioSetting("gain", "Gain", RadioSettingValueList(
                self.GAIN_NAMES,
                current_index = _mem.gainIndex
            )),
            RadioSetting("bw", "BW", RadioSettingValueList(
                self.BW_NAMES,
                current_index = _mem.bw
            )),
            RadioSetting("sq_type", "SQ type", RadioSettingValueList(
                self.SQUELCH_TYPES,
                current_index = _mem.squelch.type
            )),
            RadioSetting("sq_value", "SQ", RadioSettingValueList(
                self.SQUELCH_LEVELS,
                current_index = _mem.squelch.value
            ))
        )

        return mem

    # Store details about a high-level memory to the memory map
    # This is called when a user edits a memory in the UI
    def set_memory(self, mem):
        _mem = self._memobj.CH[mem.number]

        _mem.rxF = int(mem.freq/10)
        _mem.txF = int(mem.offset/10)
        _mem.offsetDir = self.get_features().valid_duplexes.index(mem.duplex)
        _mem.modulation = self.get_features().valid_modes.index(mem.mode)
        _mem.name = str(mem.name[:9].ljust(10, "\0")[:10])  # Store the alpha tag
        _mem.step = self.STEP_FREQ_TABLE.index(int(float(mem.tuning_step) * 100))
        if mem.empty and _mem.rxF == 0:
            _mem.meta.type = TYPE_EMPTY
        elif _mem.rxF > 0:
            _mem.meta.type = TYPE_CH

        if not mem.power:
            mem.power = self.POWER_LEVELS[0]
        _mem.power = self.POWER_LEVELS.index(mem.power)
        
        self._set_tone(mem, _mem)

        for setting in mem.extra:
            sname = setting.get_name()
            svalue = setting.value.get_value()

            print(sname, svalue)
            if sname == "type":
                _mem.meta.type = self.CH_TYPE_NAMES.index(svalue)
                if _mem.meta.type == TYPE_EMPTY:
                    _mem.meta.type = TYPE_CH
            if sname == "gain":
                _mem.gainIndex = self.GAIN_NAMES.index(svalue)
                if _mem.gainIndex == 0:
                    _mem.gainIndex = 21
            if sname == "bw":
                _mem.bw = self.BW_NAMES.index(svalue)
            if sname == "batteryCalibration":
                _mem.batteryCalibration = svalue - 1900
            if sname == "sq_type":
                _mem.squelch.type = self.SQUELCH_TYPES.index(svalue)
            if sname == "sq_value":
                _mem.squelch.value = self.SQUELCH_LEVELS.index(svalue)
                if _mem.squelch.value == 0:
                    _mem.squelch.value = 4

        return mem

    def _set_tone(self, mem, _mem):
        ((txmode, txtone, txpol),
         (rxmode, rxtone, rxpol)) = chirp_common.split_tone_encode(mem)

        if txmode == "Tone":
            txmoval = self.CODE_TYPES.index("CTCSS")
            txtoval = self.CTCSS_TONES.index(txtone)
        elif txmode == "DTCS":
            txmoval = txpol == "R" and self.CODE_TYPES.index("-DCS") or self.CODE_TYPES.index("DCS")
            txtoval = self.DTCS_CODES.index(txtone)
        else:
            txmoval = self.CODE_TYPES.index("None")
            txtoval = 0

        if rxmode == "Tone":
            rxmoval = self.CODE_TYPES.index("CTCSS")
            rxtoval = self.CTCSS_TONES.index(rxtone)
        elif rxmode == "DTCS":
            rxmoval = rxpol == "R" and self.CODE_TYPES.index("-DCS") or self.CODE_TYPES.index("DCS")
            rxtoval = self.DTCS_CODES.index(rxtone)
        else:
            rxmoval = self.CODE_TYPES.index("None")
            rxtoval = 0

        _mem.code.rx.type = rxmoval
        _mem.code.tx.type = txmoval
        _mem.code.rx.value = rxtoval
        _mem.code.tx.value = txtoval

    def _get_tone(self, mem, _mem):
        rx_pol = None
        tx_pol = None

        rxtype = _mem.code.rx.type
        txtype = _mem.code.tx.type

        TMODES = self.get_features().valid_tmodes

        if rxtype >= len(TMODES):
            rxtype = 0
        rx_tmode = TMODES[rxtype]

        if txtype >= len(TMODES):
            txtype = 0
        tx_tmode = TMODES[txtype]

        rx_tone = tx_tone = "None"

        if tx_tmode == "Tone":
            if _mem.code.tx.value < len(self.CTCSS_TONES):
                tx_tone = self.CTCSS_TONES[_mem.code.tx.value]
            else:
                tx_tone = 0
        elif tx_tmode == "DTCS":
            if _mem.code.tx.value < len(self.DTCS_CODES):
                tx_tone = self.DTCS_CODES[_mem.code.tx.value]
                tx_pol = self.CODE_TYPES[txtype] == "DCS" and "N" or "R"
            else:
                tx_tone = 0

        if rx_tmode == "Tone":
            if _mem.code.rx.value < len(self.CTCSS_TONES):
                rx_tone = self.CTCSS_TONES[_mem.code.rx.value]
            else:
                rx_tone = 0
        elif rx_tmode == "DTCS":
            if _mem.code.rx.value < len(self.DTCS_CODES):
                rx_tone = self.DTCS_CODES[_mem.code.rx.value]
                rx_pol = self.CODE_TYPES[rxtype] == "DCS" and "N" or "R"
            else:
                rx_tone = 0

        tx_tmode = TMODES[txtype]
        rx_tmode = TMODES[rxtype]

        chirp_common.split_tone_decode(mem, (tx_tmode, tx_tone, tx_pol), (rx_tmode, rx_tone, rx_pol))

    def get_settings(self):
        _mem = self._memobj

        basic = RadioSettingGroup("basic", "Basic Settings")
        radio_settings = RadioSettingGroup("radio_settings", "Radio")
        display_battery = RadioSettingGroup("display_battery", "Display & Battery")
        sql = RadioSettingGroup("sql", "SQL")

        val = RadioSettingValueList(self.EEPROM_TYPE, self.EEPROM_TYPE[_mem.Settings.eepromType])
        rs = RadioSetting("eepromType", "EPPROM Type", val)


        tmpval = _mem.Settings.backlight
        rs = RadioSetting("backlight", "BLmode (TX/RX)",
                          RadioSettingValueList(self.BL_TIME_NAMES, self.BL_TIME_NAMES[tmpval])) 
        display_battery.append(rs)

        tmpval = _mem.Settings.currentScanlist
        if tmpval >= 8:
            tmpval = 0
        rs = RadioSetting("currentScanlist", "Current Scan List", RadioSettingValueInteger(1, 8, tmpval + 1))
        basic.append(rs)

        tmpval = _mem.Settings.chDisplayMode
        rs = RadioSetting("chDisplayMode", "Channel Display Mode", RadioSettingValueInteger(0, 3, tmpval))
        basic.append(rs)

        tmpval = _mem.Settings.micGain
        rs = RadioSetting("micGain", "Mic Gain", RadioSettingValueInteger(0, 15, tmpval))
        basic.append(rs)

        tmpval = _mem.Settings.scanmode
        rs = RadioSetting("scanmode", "Scan Mode", RadioSettingValueInteger(0, 3, tmpval))
        basic.append(rs)

        tmpval = _mem.Settings.roger
        rs = RadioSetting("roger", "Roger", RadioSettingValueList(self.ROGER_NAMES, self.ROGER_NAMES[tmpval]))
        radio_settings.append(rs)

        tmpval = _mem.Settings.upconverter
        rs = RadioSetting("upconverter", "Upconverter",
                          RadioSettingValueInteger(0, 134000000, tmpval))
        radio_settings.append(rs)

        tmpval = _mem.Settings.dtmfdecode
        rs = RadioSetting("dtmfdecode", "DTMF Decode", RadioSettingValueBoolean(bool(tmpval)))
        radio_settings.append(rs)

        tmpval = _mem.Settings.repeaterSte
        rs = RadioSetting("repeaterSte", "RP-STE (Repeater Squelch Tail Eliminator)",
                          RadioSettingValueBoolean(bool(tmpval)))
        radio_settings.append(rs)

        tmpval = _mem.Settings.ste
        rs = RadioSetting("ste", "STE (Squelch Tail Eliminator)", RadioSettingValueBoolean(bool(tmpval)))
        radio_settings.append(rs)

        tmpval = _mem.Settings.busyChannelTxLock
        rs = RadioSetting("busyChannelTxLock", "Busy Channel Lock", RadioSettingValueBoolean(bool(tmpval)))
        radio_settings.append(rs)

        tmpval = _mem.Settings.keylock
        rs = RadioSetting("keylock", "Keylock", RadioSettingValueBoolean(bool(tmpval)))
        basic.append(rs)

        tmpval = _mem.Settings.showLevelInVfo
        rs = RadioSetting("showLevelInVfo", "Show level in VFO", RadioSettingValueBoolean(bool(tmpval)))
        basic.append(rs)

        tmpval = _mem.Settings.beep
        rs = RadioSetting("beep", "Beep", RadioSettingValueBoolean(bool(tmpval)))
        basic.append(rs)

        tmpval = _mem.Settings.dw
        rs = RadioSetting("dw", "Dual Watch", RadioSettingValueBoolean(bool(tmpval)))
        radio_settings.append(rs)

        tmpval = _mem.Settings.contrast - 8
        rs = RadioSetting("contrast", "Contrast", RadioSettingValueInteger(-8, 7, tmpval))
        display_battery.append(rs)

        tmpval = _mem.Settings.brightness
        rs = RadioSetting("brightness", "Brightness", RadioSettingValueInteger(0, 15, tmpval))
        display_battery.append(rs)

        tmpval = _mem.Settings.brightnessLow
        rs = RadioSetting("brightness_low", "Brightness LOW", RadioSettingValueInteger(0, 15, tmpval))
        display_battery.append(rs)

        tmpval = _mem.Settings.mainApp
        rs = RadioSetting("mainApp", "Main App", RadioSettingValueList(self.APP_LIST, self.APP_LIST[tmpval]))
        basic.append(rs)

        #Battery
        tmpval = _mem.Settings.batteryStyle
        rs = RadioSetting("batteryStyle", "Battery Style Name",
                          RadioSettingValueList(self.BATTERY_STYLE_NAMES, self.BATTERY_STYLE_NAMES[tmpval]))
        display_battery.append(rs)

        tmpval = _mem.Settings.batteryType
        rs = RadioSetting("batteryType", "Battery Type",
                          RadioSettingValueList(self.BATTERY_TYPE_NAMES, self.BATTERY_TYPE_NAMES[tmpval]))
        display_battery.append(rs)

        tmpval = _mem.Settings.batteryCalibration + 1900
        rs = RadioSetting("batteryCalibration", "Battery Calibration",
                          RadioSettingValueInteger(0, (1 << 13) - 1, tmpval))
        display_battery.append(rs)

        tmpval = _mem.Settings.sqOpenedTimeout
        rs = RadioSetting("sqOpenedTimeout", "SCAN listen time",
                          RadioSettingValueList(self.SCAN_TIMEOUT_NAMES, self.SCAN_TIMEOUT_NAMES[tmpval]))
        sql.append(rs)

        tmpval = _mem.Settings.sqClosedTimeout
        rs = RadioSetting("sqClosedTimeout", "SCAN after close timex",
                          RadioSettingValueList(self.SCAN_TIMEOUT_NAMES, self.SCAN_TIMEOUT_NAMES[tmpval]))
        sql.append(rs)

        tmpval = _mem.Settings.backlightOnSquelch
        rs = RadioSetting("backlightOnSquelch", "Backlight On Squelch",
                          RadioSettingValueList(self.BL_SQL_MODE_NAMES, self.BL_SQL_MODE_NAMES[tmpval]))
        display_battery.append(rs)

        tmpval = _mem.Settings.noListen
        rs = RadioSetting("noListen", "No Listen", RadioSettingValueBoolean(bool(tmpval)))
        basic.append(rs)

        tmpval = _mem.Settings.si4732PowerOff
        rs = RadioSetting("si4732PowerOff", "SI4732 Power Off", RadioSettingValueBoolean(bool(tmpval)))
        basic.append(rs)

        tmpval = _mem.Settings.bound_240_280
        rs = RadioSetting("bound_240_280", "Bound 240 / 280",
                          RadioSettingValueList(self.BOUND_240_280_NAMES, self.BOUND_240_280_NAMES[tmpval]))
        radio_settings.append(rs)

        tmpval = _mem.Settings.scanTimeout
        rs = RadioSetting("scanTimeout", "SCAN single freq Time", RadioSettingValueInteger(0, 255, tmpval))
        radio_settings.append(rs)

        tmpval = _mem.Settings.activeVFO
        rs = RadioSetting("activeVFO", "Active VFO", RadioSettingValueList(self.VFOs, self.VFOs[tmpval]))
        basic.append(rs)

        tmpval = _mem.Settings.skipGarbageFrequencies
        rs = RadioSetting("skipGarbageFrequencies", "Skip Garbage Frequencies", RadioSettingValueBoolean(bool(tmpval)))
        radio_settings.append(rs)

        tmpval = _mem.Settings.sqlOpenTime
        if tmpval >= len(self.SQL_OPEN_NAMES):
            tmpval = 0
        rs = RadioSetting("sqlOpenTime", "SQL open time",
                          RadioSettingValueList(self.SQL_OPEN_NAMES, self.SQL_OPEN_NAMES[tmpval]))
        sql.append(rs)

        tmpval = _mem.Settings.sqlCloseTime
        if tmpval >= len(self.SQL_CLOSE_NAMES):
            tmpval = 0
        rs = RadioSetting("sqlCloseTime", "SQL close time",
                          RadioSettingValueList(self.SQL_CLOSE_NAMES, self.SQL_CLOSE_NAMES[tmpval]))
        sql.append(rs)


        basic.append(rs)
        return RadioSettings(basic, radio_settings, display_battery, sql)


    def validate_memory(self, mem):
        msgs = super().validate_memory(mem)

        if mem.name == "" or mem.name == "<new>":
            mem.extra.type = TYPE_CH
            mem.name = f"{(mem.freq / 1_000_000):.4f}"

        return msgs

    # UTIL FUNCTIONS =========================================================

    def get_version(self):
        self._send_command(b"\x14\x05\x04\x00\x6a\x39\x57\x64")
        reply = self._receive_reply()
        if reply:
            return self._getstring(reply, 4, 16)
        raise errors.RadioError("Failed to initialize radio{}".format(ERROR_TIP))


    def readmem(self, offset, n):
        readmem = b"\x1b\x05\x0A\x00" + pack("<IBBBB", offset, n, 0, 0, 0) + b"\x6a\x39\x57\x64"
        self._send_command(readmem)
        return self._receive_reply()[12:]


    def writemem(self, data, addr):
        n = len(data)
        writemem = b"\x1d\x05" + pack("<BBIBBBB", n + 10, 0, addr, n, 0, 0, 1) + b"\x6a\x39\x57\x64" + data

        self._send_command(writemem)
        o = self._receive_reply()

        if (o[0] == 0x1e and o[4] == (addr & 0xff) and o[5] == (addr >> 8) & 0xff):
            return True
        else:
            raise errors.RadioError("Bad response to writemem{}".format(ERROR_TIP))


    def reset(self):
        self._send_command(b"\xdd\x05\x00\x00")


    def _send_command(self, data: bytes):
        """Send a command to UV-K5 radio"""
        data2 = data + pack("<H", crc_hqx(data, 0))

        command = pack(">HBB", 0xabcd, len(data), 0) + self._xor(data2) + pack(">H", 0xdcba)
        try:
            result = self.pipe.write(command)
        except Exception:
            raise errors.RadioError("Error writing data to radio{}".format(ERROR_TIP))
        return result


    def _receive_reply(self):
        header = self.pipe.read(4)
        if len(header) != 4:
            raise errors.RadioError("Header short read{}".format(ERROR_TIP))
        if header[0] != 0xAB or header[1] != 0xCD or header[3] != 0x00:
            raise errors.RadioError("Bad response header{}".format(ERROR_TIP))

        cmd = self.pipe.read(int(header[2]))
        if len(cmd) != int(header[2]):
            raise errors.RadioError("Command body short read{}".format(ERROR_TIP))

        footer = self.pipe.read(4)

        if len(footer) != 4:
            raise errors.RadioError("Footer short read{}".format(ERROR_TIP))

        if footer[2] != 0xDC or footer[3] != 0xBA:
            raise errors.RadioError("Bad response footer{}".format(ERROR_TIP))

        return self._xor(cmd)


    def _getstring(self, data: bytes, begin, n):
        tmplen = min(n + 1, len(data))
        s = [data[i] for i in range(begin, tmplen)]
        for key, val in enumerate(s):
            if val < ord(' ') or val > ord('~'):
                break
        return ''.join(chr(x) for x in s[0:key])


    def _xor(self, var: bytes):
        KEY_COMM = [22, 108, 20, 230, 46, 145, 13, 64, 33, 53, 213, 64, 19, 3, 233, 128]
        return bytes(a ^ b for a, b in zip(var, cycle(KEY_COMM)))

    PATCH_DATA = [
        0x15, 0x00, 0x03, 0x74, 0x0b, 0xd4, 0x84, 0x60,
        0x16, 0x6f, 0xae, 0x6c, 0xf9, 0xbb, 0x84, 0xa2,
        0x16, 0x65, 0xb1, 0x4b, 0xf6, 0x72, 0x01, 0x1a,
        0x16, 0x21, 0xe8, 0x5a, 0xd8, 0xd6, 0x04, 0x73,
        0x16, 0x5e, 0x2c, 0x22, 0x6e, 0xc4, 0xe9, 0xb5,
        0x16, 0x8b, 0x81, 0x9a, 0x1e, 0xe4, 0x87, 0xc9,
        0x16, 0x9e, 0x7b, 0x17, 0x52, 0x6d, 0xad, 0xe3,
        0x16, 0xe5, 0x8b, 0x04, 0xa7, 0x2e, 0x99, 0x6a,
        0x16, 0x32, 0xaa, 0x99, 0x97, 0xcc, 0xa6, 0x5b,
        0x16, 0x15, 0x79, 0x56, 0x48, 0x01, 0x63, 0xb1,
        0x16, 0xdf, 0x54, 0x27, 0x06, 0x57, 0x06, 0x53,
        0x16, 0x8c, 0xa6, 0x27, 0xaa, 0x66, 0x89, 0x03,
        0x16, 0x18, 0x51, 0x7e, 0xfb, 0x67, 0xd3, 0xce,
        0x16, 0xdd, 0x3f, 0xfd, 0x3d, 0x1f, 0x47, 0x84,
        0x16, 0x01, 0xf3, 0x85, 0x6e, 0xf8, 0x3b, 0x79,
        0x16, 0x2b, 0x0c, 0x90, 0x4b, 0x67, 0x46, 0x7d,
        0x16, 0x54, 0x88, 0xfd, 0xd6, 0x12, 0xe5, 0xe7,
        0x16, 0x48, 0xf2, 0x0e, 0xdb, 0x99, 0x4d, 0x71,
        0x16, 0xa5, 0x40, 0x68, 0xd9, 0xc9, 0x59, 0x39,
        0x16, 0xe4, 0x75, 0x20, 0x1c, 0xe9, 0xb1, 0xf5,
        0x16, 0x01, 0x3c, 0x19, 0xbb, 0x60, 0xf7, 0xfa,
        0x16, 0x6b, 0x1e, 0x68, 0x9f, 0x19, 0xb6, 0xed,
        0x16, 0x14, 0x0f, 0x56, 0xbc, 0xc1, 0x34, 0xcb,
        0x16, 0x00, 0x9d, 0x43, 0xd4, 0x0f, 0xf3, 0x62,
        0x16, 0x9c, 0x9d, 0xf7, 0x8b, 0x9d, 0x53, 0x3a,
        0x16, 0x8d, 0x2f, 0x3d, 0xde, 0x3d, 0x38, 0x31,
        0x16, 0x03, 0x9b, 0xc7, 0xc1, 0x59, 0xe9, 0xd1,
        0x16, 0x75, 0x88, 0x8d, 0x36, 0x58, 0x86, 0x70,
        0x16, 0x4e, 0x5b, 0x9e, 0xd0, 0xdb, 0xcb, 0xf7,
        0x16, 0xea, 0x1f, 0xdb, 0xa5, 0x3b, 0xb3, 0xbd,
        0x16, 0x6b, 0xbc, 0xf3, 0x70, 0x65, 0xd5, 0x17,
        0x16, 0x0f, 0x64, 0x15, 0x24, 0x20, 0xd5, 0xb8,
        0x16, 0x7b, 0x0d, 0x27, 0x29, 0x85, 0x88, 0x1f,
        0x16, 0x58, 0x22, 0x57, 0x4f, 0x09, 0xc0, 0x4d,
        0x16, 0xd6, 0xe4, 0xc6, 0xb5, 0x3a, 0x37, 0x33,
        0x16, 0x27, 0xbb, 0x6a, 0x14, 0x69, 0x03, 0x1b,
        0x16, 0xed, 0xa8, 0xc3, 0x43, 0xe8, 0xea, 0xde,
        0x16, 0x41, 0x06, 0x25, 0xc5, 0xc8, 0x3c, 0xbf,
        0x16, 0x32, 0xb2, 0xa7, 0xdd, 0x22, 0xc2, 0xe9,
        0x16, 0xca, 0x84, 0xf2, 0xc0, 0x26, 0x7c, 0x78,
        0x16, 0x01, 0xf7, 0xd5, 0xc6, 0x05, 0x33, 0xe4,
        0x16, 0xc2, 0x78, 0xec, 0x1b, 0xfd, 0xd2, 0x50,
        0x16, 0x7d, 0x11, 0x29, 0x57, 0x99, 0xb0, 0xf1,
        0x16, 0x55, 0x66, 0x74, 0xb4, 0x58, 0x23, 0xa0,
        0x16, 0x6f, 0x2e, 0xd8, 0x9b, 0x08, 0xb3, 0x3e,
        0x16, 0x53, 0xcf, 0x5e, 0xcc, 0x7a, 0xdf, 0x4e,
        0x16, 0xed, 0x42, 0x16, 0x6a, 0x91, 0x88, 0x43,
        0x16, 0x1b, 0x1d, 0x84, 0x5c, 0x52, 0x21, 0x66,
        0x16, 0x58, 0x24, 0x36, 0x71, 0xc5, 0x6a, 0x0d,
        0x16, 0x2c, 0x86, 0x9a, 0x23, 0x9d, 0xe0, 0x35,
        0x16, 0x43, 0xc9, 0x7f, 0x41, 0xbd, 0x82, 0x99,
        0x16, 0xed, 0x7a, 0x26, 0xb2, 0xd3, 0xa6, 0xce,
        0x16, 0x4f, 0x00, 0xe6, 0x87, 0xe3, 0xd7, 0x68,
        0x16, 0x28, 0x86, 0xf7, 0xce, 0xd2, 0xb3, 0xd3,
        0x16, 0x1b, 0x04, 0x02, 0xb9, 0x78, 0xb3, 0xad,
        0x16, 0xe0, 0x3c, 0x53, 0xa6, 0x8a, 0x4a, 0x22,
        0x16, 0xbe, 0x1f, 0xce, 0xb1, 0x76, 0xf2, 0x2f,
        0x16, 0x81, 0xa8, 0xc1, 0x78, 0x72, 0xb0, 0x15,
        0x16, 0x65, 0x19, 0xe3, 0x32, 0xa7, 0x4d, 0x0c,
        0x16, 0xd3, 0x00, 0xb9, 0xc3, 0x27, 0xbe, 0x74,
        0x16, 0x4d, 0xd1, 0xe1, 0x0c, 0x36, 0xdd, 0x23,
        0x16, 0xfb, 0xa7, 0x22, 0xd3, 0x44, 0xca, 0xb3,
        0x16, 0x08, 0x1b, 0xb4, 0x0d, 0x4b, 0xdf, 0x1a,
        0x16, 0xa6, 0x90, 0x32, 0x92, 0x5c, 0x1a, 0xa7,
        0x16, 0xcd, 0x85, 0x2e, 0x35, 0x11, 0x72, 0xf8,
        0x16, 0x21, 0x35, 0x7d, 0x3f, 0xdb, 0x29, 0x8d,
        0x16, 0x30, 0xb3, 0x4f, 0x45, 0x14, 0x77, 0xcf,
        0x16, 0x99, 0x2f, 0xa3, 0x90, 0x81, 0xb0, 0xae,
        0x16, 0xe8, 0x45, 0xe6, 0x3a, 0xa9, 0xa2, 0x62,
        0x16, 0xb7, 0xdb, 0xbe, 0x25, 0x39, 0xa5, 0xfc,
        0x16, 0xea, 0xc5, 0xbc, 0x3a, 0xec, 0x90, 0xae,
        0x16, 0xa6, 0xfb, 0x12, 0xaa, 0xc7, 0x62, 0x22,
        0x16, 0xaf, 0xa9, 0x84, 0xb9, 0x64, 0xb8, 0xfb,
        0x16, 0x8d, 0xc1, 0x1c, 0xc3, 0xd0, 0x87, 0x6d,
        0x16, 0x5c, 0xb4, 0xfe, 0x3f, 0xa4, 0xb8, 0xd8,
        0x16, 0x89, 0xf4, 0x01, 0x59, 0xbb, 0x04, 0xa5,
        0x16, 0x43, 0x44, 0x1a, 0xcb, 0x41, 0x30, 0xf7,
        0x16, 0x5b, 0x9a, 0xee, 0x28, 0xf4, 0x4c, 0x71,
        0x16, 0x99, 0xca, 0x4b, 0x7f, 0x2a, 0x13, 0xf0,
        0x16, 0x4b, 0x54, 0xb3, 0xfc, 0x90, 0xed, 0xbe,
        0x16, 0x48, 0x3f, 0xf1, 0x5e, 0x0d, 0xa1, 0xbb,
        0x16, 0x1e, 0x59, 0x16, 0x15, 0xf0, 0x4b, 0x50,
        0x16, 0x4c, 0x96, 0x86, 0x1b, 0xa9, 0xcc, 0xc2,
        0x16, 0x69, 0x4e, 0x10, 0x03, 0xf0, 0xe9, 0x53,
        0x16, 0xe5, 0xe2, 0xbb, 0x45, 0xe2, 0x8d, 0xae,
        0x16, 0x40, 0x71, 0x08, 0x86, 0x4d, 0x08, 0xf4,
        0x16, 0x96, 0x90, 0x58, 0x53, 0x40, 0xa5, 0x8b,
        0x16, 0x5b, 0x3c, 0xad, 0x47, 0xb5, 0xd7, 0xe2,
        0x16, 0x6a, 0x13, 0x78, 0xd4, 0xdc, 0xc9, 0xec,
        0x16, 0x0e, 0x93, 0xf0, 0xc0, 0x1d, 0x95, 0x36,
        0x16, 0x76, 0xa4, 0x53, 0x85, 0xc9, 0xac, 0xe4,
        0x16, 0x71, 0x8d, 0xaf, 0x68, 0x61, 0x20, 0x9d,
        0x16, 0xff, 0x45, 0x35, 0x6e, 0x04, 0xd8, 0x27,
        0x16, 0x32, 0xc3, 0xda, 0xee, 0xa2, 0x66, 0x04,
        0x16, 0xb7, 0x21, 0x06, 0x52, 0x7f, 0x39, 0x8f,
        0x16, 0xfd, 0xee, 0x90, 0x74, 0xb6, 0x4f, 0xb6,
        0x16, 0x24, 0x0e, 0x12, 0x48, 0xf0, 0xb2, 0x30,
        0x16, 0xf2, 0xa5, 0x4c, 0x91, 0x52, 0xe3, 0xc6,
        0x16, 0x48, 0x7b, 0x38, 0x96, 0x23, 0x9e, 0xd7,
        0x16, 0x1b, 0x95, 0x15, 0x3a, 0xc9, 0x8b, 0x6f,
        0x16, 0x63, 0x7d, 0x1d, 0xc9, 0xea, 0x96, 0xe6,
        0x16, 0x01, 0xd7, 0x85, 0xc0, 0xea, 0x3d, 0xca,
        0x16, 0xd3, 0xb7, 0xfb, 0x07, 0x54, 0x3a, 0x00,
        0x16, 0x31, 0x3d, 0x74, 0xe4, 0x12, 0x5b, 0xa2,
        0x16, 0x38, 0x33, 0x5b, 0xbf, 0x1d, 0xdc, 0x4e,
        0x16, 0xe8, 0x85, 0x10, 0x77, 0xab, 0xea, 0x65,
        0x16, 0x79, 0xb0, 0xaa, 0x30, 0x61, 0xc6, 0xf6,
        0x16, 0x3b, 0xcc, 0x95, 0xfc, 0x83, 0x7f, 0x8c,
        0x16, 0x7b, 0xb5, 0x52, 0x05, 0xeb, 0xf7, 0x21,
        0x16, 0xde, 0x89, 0xb6, 0x6d, 0xee, 0x31, 0x77,
        0x16, 0x13, 0xaa, 0x93, 0x55, 0x96, 0x08, 0x6e,
        0x16, 0x1c, 0x82, 0xb5, 0x7e, 0x95, 0xb9, 0x94,
        0x16, 0xdd, 0x68, 0x42, 0x5c, 0x3a, 0x00, 0xc3,
        0x16, 0x7b, 0x6f, 0x60, 0x6a, 0x2c, 0x07, 0xd7,
        0x16, 0x6c, 0x82, 0xfb, 0xb2, 0x81, 0x25, 0x69,
        0x16, 0xd6, 0x72, 0x0a, 0xd2, 0xe8, 0x50, 0x05,
        0x16, 0x88, 0x49, 0x1b, 0x63, 0x72, 0x99, 0x6c,
        0x16, 0xe3, 0x7a, 0xae, 0xb0, 0x1b, 0x9e, 0xd4,
        0x16, 0x25, 0x54, 0x25, 0x8a, 0x90, 0x17, 0x97,
        0x16, 0xdf, 0x39, 0xb8, 0x7c, 0xea, 0xf0, 0x82,
        0x16, 0xdd, 0x25, 0xd2, 0xad, 0xe7, 0xf6, 0x36,
        0x16, 0x23, 0x84, 0xa9, 0xc9, 0x6a, 0x53, 0xf4,
        0x16, 0x82, 0x2c, 0x1d, 0xea, 0x06, 0xc6, 0x4f,
        0x16, 0x70, 0x54, 0x37, 0x80, 0x2a, 0x6b, 0x63,
        0x16, 0xdb, 0xcc, 0x86, 0xe6, 0x8c, 0x7f, 0x27,
        0x16, 0x8c, 0x72, 0x54, 0x73, 0x9e, 0x1b, 0xd6,
        0x16, 0x4c, 0xfa, 0x05, 0x82, 0x80, 0xd7, 0xb7,
        0x16, 0x11, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x06, 0x98, 0x69, 0x15, 0x1c, 0xfc,
        0x16, 0x86, 0x87, 0x74, 0x84, 0x5b, 0xd4, 0x0f,
        0x16, 0xdb, 0xd7, 0x27, 0xc5, 0x4a, 0xb2, 0x8f,
        0x16, 0x29, 0x7a, 0x4a, 0x23, 0x0a, 0xb8, 0x07,
        0x16, 0xd0, 0x34, 0x70, 0x81, 0x8e, 0x53, 0xef,
        0x16, 0x43, 0x16, 0x3f, 0xa8, 0xa7, 0x9e, 0x5a,
        0x16, 0x77, 0xc0, 0x91, 0xb7, 0x89, 0x15, 0x52,
        0x16, 0x48, 0xc0, 0xb7, 0x62, 0xab, 0xe1, 0x74,
        0x16, 0x64, 0x10, 0xaa, 0x09, 0x6b, 0x97, 0x74,
        0x16, 0x21, 0x79, 0x35, 0xa1, 0x97, 0x25, 0xfc,
        0x16, 0x78, 0xc1, 0xec, 0x6e, 0x87, 0x77, 0x40,
        0x16, 0x87, 0x1a, 0x74, 0x82, 0x81, 0x56, 0xdd,
        0x16, 0xec, 0x37, 0xad, 0xaf, 0x03, 0x31, 0xac,
        0x16, 0x47, 0x85, 0x74, 0xc0, 0x2a, 0x45, 0x9d,
        0x16, 0xf4, 0x12, 0x0c, 0xf9, 0x86, 0xb0, 0x4a,
        0x16, 0x16, 0xd8, 0x11, 0x6c, 0x46, 0xc4, 0x4a,
        0x16, 0x67, 0x98, 0x8b, 0x1b, 0x42, 0xc2, 0xbe,
        0x16, 0xbb, 0x0e, 0x48, 0x84, 0xf7, 0x08, 0xa6,
        0x16, 0xc3, 0x8f, 0x8e, 0x8d, 0xab, 0xc2, 0x9b,
        0x16, 0x5d, 0x5c, 0x60, 0x28, 0x57, 0x8f, 0x0e,
        0x16, 0xad, 0x2e, 0xc1, 0x5e, 0x95, 0x29, 0x9a,
        0x16, 0xf4, 0x8a, 0x27, 0xd4, 0x41, 0xbb, 0x4a,
        0x16, 0xac, 0x5d, 0xb2, 0x93, 0x26, 0xfd, 0x87,
        0x16, 0x81, 0x3f, 0x27, 0x35, 0xa6, 0x42, 0x2c,
        0x16, 0x15, 0x38, 0xad, 0xf8, 0x02, 0x6f, 0x94,
        0x16, 0xda, 0x08, 0xee, 0x19, 0xd8, 0x90, 0xfa,
        0x16, 0x89, 0xc3, 0xad, 0x89, 0xfe, 0xc6, 0x02,
        0x16, 0x46, 0x81, 0x1d, 0x0c, 0x8d, 0x78, 0x2f,
        0x16, 0xee, 0xd3, 0xed, 0x6c, 0x7b, 0x95, 0x49,
        0x16, 0x56, 0x87, 0xf4, 0xe2, 0x63, 0xda, 0x39,
        0x16, 0xce, 0x68, 0x16, 0x18, 0xed, 0x98, 0xee,
        0x16, 0x86, 0xf3, 0xb3, 0xc1, 0x12, 0x1a, 0x51,
        0x16, 0x9b, 0x57, 0x1d, 0x19, 0x9e, 0x98, 0x7e,
        0x16, 0xd2, 0xfd, 0x3d, 0x2b, 0x59, 0x15, 0x46,
        0x16, 0x74, 0x57, 0x79, 0x14, 0x81, 0x71, 0x89,
        0x16, 0xd9, 0x22, 0xdd, 0x92, 0x10, 0xd9, 0x89,
        0x16, 0x91, 0xdf, 0x67, 0x00, 0x6e, 0x53, 0xaf,
        0x16, 0xda, 0xb5, 0x28, 0x30, 0x1e, 0x47, 0xe6,
        0x16, 0xb7, 0x05, 0x2d, 0x22, 0xcf, 0x7f, 0x6a,
        0x16, 0xcd, 0x88, 0x90, 0x6b, 0x8c, 0x16, 0x36,
        0x16, 0x88, 0x07, 0xa1, 0xb7, 0xaf, 0xf3, 0x31,
        0x16, 0xc4, 0xdb, 0x76, 0x8b, 0x96, 0x9e, 0xf0,
        0x16, 0x17, 0xa7, 0x3f, 0x84, 0x78, 0x91, 0xa8,
        0x16, 0xcd, 0x3f, 0x8f, 0xa5, 0xdd, 0x52, 0x14,
        0x16, 0xf9, 0x39, 0x5d, 0x0b, 0x56, 0x8e, 0x1c,
        0x16, 0x5a, 0x5b, 0x89, 0xee, 0x80, 0x9e, 0x33,
        0x16, 0xbd, 0xb1, 0x45, 0x15, 0x42, 0x34, 0x59,
        0x16, 0x78, 0x20, 0xfc, 0x2d, 0xdb, 0xc9, 0x2e,
        0x16, 0x0f, 0x35, 0x26, 0xcf, 0x23, 0x9b, 0x3e,
        0x16, 0x1d, 0x9f, 0x0f, 0x26, 0x0e, 0xb7, 0xb5,
        0x16, 0x4e, 0xac, 0xa2, 0x86, 0xd5, 0xda, 0x36,
        0x16, 0x04, 0x5a, 0x73, 0x46, 0x6a, 0x88, 0xc5,
        0x16, 0x2a, 0xa0, 0x83, 0xe8, 0x8b, 0x5f, 0x3c,
        0x16, 0xaf, 0x6a, 0x44, 0x4e, 0x75, 0x9b, 0x8f,
        0x16, 0x93, 0x37, 0x35, 0x38, 0xbd, 0x02, 0x9a,
        0x16, 0x1d, 0x84, 0x29, 0x64, 0x25, 0x97, 0xe0,
        0x16, 0x7c, 0x2a, 0xb6, 0xcb, 0xc1, 0x66, 0x51,
        0x16, 0x3c, 0xbc, 0x3b, 0xf3, 0x55, 0x2b, 0xb7,
        0x16, 0xbd, 0x81, 0xec, 0xf3, 0x49, 0xd5, 0xf8,
        0x16, 0x03, 0xe0, 0xbd, 0xc6, 0x0c, 0xee, 0xc0,
        0x16, 0x19, 0x08, 0xfb, 0x4f, 0x8c, 0x94, 0x08,
        0x16, 0x0e, 0xa5, 0x30, 0x37, 0xf0, 0xb8, 0x18,
        0x16, 0x93, 0x73, 0x00, 0xbb, 0x52, 0x52, 0xb4,
        0x16, 0x98, 0x0d, 0x4b, 0x45, 0xb9, 0x89, 0x0a,
        0x16, 0x34, 0xe9, 0x1c, 0x24, 0x5a, 0x8f, 0xa8,
        0x16, 0x9d, 0xc2, 0xd9, 0x27, 0xa9, 0xee, 0xbf,
        0x16, 0xc0, 0x80, 0x90, 0xbc, 0x2a, 0x93, 0x43,
        0x16, 0xfb, 0x0a, 0xb3, 0x96, 0xd1, 0xae, 0x13,
        0x16, 0x41, 0x01, 0x68, 0xb9, 0x2c, 0x53, 0x53,
        0x16, 0x7c, 0x00, 0xa5, 0x84, 0x41, 0xd6, 0x98,
        0x16, 0x88, 0x98, 0xfe, 0xde, 0xf7, 0xe2, 0x37,
        0x16, 0x43, 0x62, 0x0e, 0x93, 0x83, 0xee, 0x03,
        0x16, 0x0a, 0x8d, 0xca, 0x87, 0x59, 0x36, 0x6f,
        0x16, 0x61, 0xf7, 0xf4, 0xd6, 0xab, 0x8b, 0x0f,
        0x16, 0x9c, 0x83, 0x96, 0xa4, 0x6c, 0x46, 0x43,
        0x16, 0x80, 0x6b, 0xea, 0x50, 0xdc, 0xd8, 0xce,
        0x16, 0xd4, 0xf4, 0xae, 0x5b, 0xc6, 0x01, 0x43,
        0x16, 0x85, 0x71, 0x8d, 0x0c, 0x39, 0x5e, 0xe4,
        0x16, 0x3b, 0x2b, 0xc4, 0x88, 0xb2, 0xc5, 0x54,
        0x16, 0x96, 0x0e, 0x87, 0x9a, 0x50, 0x93, 0xd6,
        0x16, 0x9c, 0x91, 0xca, 0x09, 0x64, 0x8b, 0x23,
        0x16, 0xc4, 0x29, 0x44, 0x1a, 0x67, 0xe1, 0xda,
        0x16, 0xc7, 0x1b, 0x25, 0x17, 0x02, 0x2c, 0x8f,
        0x16, 0x2a, 0x13, 0x3a, 0xcf, 0xd6, 0x65, 0x31,
        0x16, 0x2b, 0x10, 0xf5, 0xb5, 0x96, 0xdf, 0x01,
        0x16, 0x99, 0x7b, 0xad, 0xd6, 0xb4, 0xc0, 0x35,
        0x16, 0xa3, 0x48, 0xe3, 0xb0, 0x9e, 0xfe, 0x33,
        0x16, 0x10, 0x1a, 0x09, 0xae, 0x3c, 0x0a, 0xa1,
        0x16, 0x72, 0x8f, 0x00, 0x51, 0xe1, 0x78, 0x23,
        0x16, 0xf5, 0xe2, 0xbf, 0xa6, 0x46, 0x28, 0xb3,
        0x16, 0x4b, 0x24, 0xb1, 0xa1, 0xde, 0xb1, 0xc4,
        0x16, 0x48, 0x6f, 0xed, 0x5a, 0xd4, 0x61, 0xf0,
        0x16, 0xdb, 0xe1, 0x08, 0x5c, 0x64, 0xc0, 0xca,
        0x16, 0xe9, 0xa9, 0xde, 0xde, 0xec, 0xc0, 0x68,
        0x16, 0x5b, 0x6d, 0xbd, 0x43, 0x82, 0x8c, 0xca,
        0x16, 0x69, 0xb1, 0xa9, 0xc8, 0x71, 0x0d, 0x5d,
        0x16, 0x6d, 0xa5, 0xab, 0x1a, 0x67, 0x94, 0xee,
        0x16, 0x05, 0x93, 0xe3, 0x3f, 0xe8, 0x1a, 0xe6,
        0x16, 0x0f, 0x7f, 0x79, 0xf2, 0xcb, 0xc5, 0x37,
        0x16, 0x57, 0xdf, 0xfc, 0x4f, 0xb4, 0x60, 0xc7,
        0x16, 0x97, 0x3c, 0x61, 0xb0, 0x0c, 0x46, 0x64,
        0x16, 0xf4, 0x43, 0x92, 0xd2, 0xa5, 0xf0, 0xf3,
        0x16, 0xb7, 0xdf, 0xab, 0x20, 0xb1, 0xf5, 0x30,
        0x16, 0x2a, 0xb3, 0xdc, 0x4b, 0x39, 0xb7, 0x85,
        0x16, 0x3e, 0x1e, 0x1b, 0x94, 0x8c, 0x26, 0x28,
        0x16, 0x80, 0x45, 0xd6, 0x01, 0x36, 0xd0, 0xec,
        0x16, 0x93, 0x46, 0x88, 0xd3, 0xd5, 0x89, 0x5d,
        0x16, 0x7a, 0x82, 0x21, 0x3e, 0xc2, 0x40, 0xe3,
        0x16, 0xb4, 0xde, 0xf5, 0xa5, 0x69, 0xd5, 0x69,
        0x16, 0x49, 0x5c, 0x89, 0xcd, 0xae, 0x13, 0x70,
        0x16, 0x70, 0xed, 0x69, 0x0c, 0xec, 0xc6, 0xfe,
        0x16, 0x75, 0xeb, 0x4e, 0xd6, 0xb3, 0xc8, 0x60,
        0x16, 0xfb, 0x34, 0x1e, 0xf8, 0x64, 0x92, 0xd9,
        0x16, 0x29, 0xa8, 0x13, 0x38, 0x3d, 0x79, 0xc4,
        0x16, 0xbf, 0x21, 0x37, 0x9d, 0xe3, 0x4f, 0x21,
        0x16, 0xe5, 0x3f, 0x2c, 0x5c, 0x5f, 0x41, 0xff,
        0x16, 0x14, 0x87, 0x91, 0xe0, 0x82, 0x04, 0x0b,
        0x16, 0x1e, 0x55, 0x53, 0xdc, 0x56, 0x40, 0xa4,
        0x16, 0x35, 0x78, 0xe2, 0x9b, 0x49, 0x22, 0x2e,
        0x16, 0x09, 0xcd, 0x1f, 0x6f, 0x94, 0x83, 0xee,
        0x16, 0xea, 0x8b, 0xc4, 0xc2, 0x10, 0xe0, 0x80,
        0x16, 0xd9, 0xa5, 0x5f, 0x53, 0x34, 0x9c, 0x8c,
        0x16, 0xea, 0x95, 0x64, 0x87, 0x94, 0xd6, 0x32,
        0x16, 0x1c, 0xeb, 0x93, 0xbf, 0xe3, 0x55, 0x83,
        0x16, 0xc2, 0xf6, 0xfc, 0xc8, 0x85, 0xb2, 0x94,
        0x16, 0x5c, 0x42, 0x5f, 0x6b, 0x8e, 0x3b, 0x97,
        0x16, 0x79, 0x74, 0x7e, 0xe3, 0x5c, 0xc2, 0x63,
        0x16, 0x1a, 0x22, 0xb1, 0x7f, 0x94, 0xcb, 0xe7,
        0x16, 0xb7, 0xff, 0x0e, 0x37, 0x95, 0xaf, 0x10,
        0x16, 0x53, 0x17, 0x88, 0x12, 0x72, 0xdd, 0xcb,
        0x16, 0xab, 0x4b, 0x6b, 0x68, 0x24, 0xac, 0xc9,
        0x16, 0x5c, 0x72, 0x09, 0x4f, 0xf1, 0xfb, 0x1d,
        0x16, 0xe7, 0xa2, 0x30, 0xe9, 0x20, 0x4b, 0xda,
        0x16, 0x70, 0x7c, 0x9e, 0xe2, 0x34, 0xeb, 0x6a,
        0x16, 0x35, 0xc2, 0x33, 0xd7, 0x9d, 0x07, 0xb1,
        0x16, 0xef, 0xf6, 0x75, 0xf5, 0xfd, 0xad, 0xc7,
        0x16, 0x4b, 0xd0, 0xb7, 0xdd, 0xae, 0x1e, 0x8d,
        0x16, 0x1e, 0xc0, 0x39, 0x9c, 0xa7, 0x1c, 0xc5,
        0x16, 0xcc, 0x39, 0x50, 0xc6, 0x6b, 0xc6, 0xda,
        0x16, 0x37, 0xc7, 0xe1, 0x20, 0xeb, 0x74, 0xa5,
        0x16, 0x3d, 0xc0, 0x08, 0xfa, 0xc2, 0xdf, 0xf2,
        0x16, 0x9e, 0x43, 0x2b, 0xf0, 0x77, 0x50, 0x49,
        0x16, 0x8c, 0xc3, 0x2f, 0x68, 0xf3, 0x2a, 0x9b,
        0x16, 0x83, 0x1a, 0xdc, 0x05, 0xd8, 0xb7, 0x7c,
        0x16, 0x3c, 0x61, 0x11, 0x76, 0xec, 0x2d, 0xfe,
        0x16, 0x86, 0x08, 0x87, 0x15, 0xa3, 0xc0, 0x1c,
        0x16, 0xb4, 0x6a, 0x8d, 0x9e, 0xbf, 0x9a, 0xd5,
        0x16, 0xc8, 0x5b, 0x05, 0x18, 0x10, 0x15, 0xfb,
        0x16, 0xc6, 0x3c, 0xee, 0xc5, 0x52, 0x4b, 0x31,
        0x16, 0x36, 0x07, 0xb9, 0x4c, 0x81, 0xea, 0x83,
        0x16, 0xd7, 0x82, 0xfe, 0xfc, 0x43, 0x59, 0x4e,
        0x16, 0x20, 0xbd, 0xd3, 0x65, 0xcf, 0x1f, 0x5c,
        0x16, 0x71, 0x1f, 0xbf, 0x26, 0xec, 0x44, 0xeb,
        0x16, 0x01, 0x74, 0x82, 0x3c, 0x8e, 0x60, 0xdf,
        0x16, 0x47, 0x90, 0x31, 0x17, 0x7e, 0x16, 0xc0,
        0x16, 0xec, 0x1e, 0xc3, 0x3a, 0x7a, 0x59, 0x21,
        0x16, 0xa2, 0x9b, 0x8e, 0x87, 0x25, 0xd3, 0xfe,
        0x16, 0x85, 0xdd, 0x6d, 0xe6, 0xd8, 0xca, 0x74,
        0x16, 0xba, 0xdb, 0x42, 0x30, 0x96, 0x3d, 0x86,
        0x16, 0x22, 0x86, 0x6f, 0xde, 0x37, 0x1a, 0x93,
        0x16, 0x2f, 0x03, 0x2e, 0xe1, 0x6e, 0x16, 0x62,
        0x16, 0xc1, 0xe1, 0x2d, 0xfe, 0xcb, 0xa8, 0xdf,
        0x16, 0x64, 0x05, 0xef, 0x23, 0xbc, 0x71, 0x61,
        0x16, 0x7b, 0x1b, 0x60, 0x22, 0x27, 0xbd, 0xc6,
        0x16, 0xa3, 0x72, 0x07, 0xaa, 0x09, 0xb0, 0x52,
        0x16, 0xf2, 0x19, 0x15, 0x4d, 0xbe, 0xaf, 0x26,
        0x16, 0x3b, 0x4d, 0x62, 0xa6, 0x3c, 0x41, 0x07,
        0x16, 0x7a, 0x34, 0x25, 0x3c, 0xd6, 0xcd, 0xb6,
        0x16, 0x55, 0x47, 0x87, 0x1e, 0xcb, 0xcf, 0xce,
        0x16, 0xd2, 0x0d, 0x95, 0xc0, 0xd8, 0x72, 0xa6,
        0x16, 0xe0, 0x33, 0x24, 0x26, 0x51, 0x7e, 0x71,
        0x16, 0xc7, 0x53, 0x3f, 0xd4, 0x67, 0x73, 0x52,
        0x16, 0xcb, 0x78, 0x5a, 0x00, 0x11, 0x15, 0x71,
        0x16, 0x5f, 0x8d, 0x3c, 0xcf, 0x40, 0xcd, 0xd9,
        0x16, 0x74, 0x30, 0xd9, 0xa1, 0x3f, 0xc6, 0x58,
        0x16, 0xbc, 0xbe, 0x78, 0x18, 0x31, 0x9a, 0x39,
        0x16, 0x60, 0xbb, 0x8d, 0x7b, 0x34, 0x95, 0xa5,
        0x16, 0xf1, 0x54, 0x3b, 0xb9, 0x85, 0x99, 0xaf,
        0x16, 0xc4, 0x45, 0xeb, 0x64, 0xa7, 0x6e, 0x59,
        0x16, 0x60, 0xeb, 0x1e, 0x7a, 0xfb, 0xfd, 0x92,
        0x16, 0x43, 0x23, 0xf1, 0x27, 0xac, 0x66, 0x12,
        0x16, 0x66, 0x28, 0x8a, 0x5c, 0xf6, 0xc6, 0x3f,
        0x16, 0x76, 0x04, 0xe8, 0x09, 0x27, 0xed, 0x05,
        0x16, 0xaa, 0x26, 0xe5, 0xb4, 0xad, 0x40, 0xba,
        0x16, 0xf7, 0xf4, 0x84, 0xcb, 0x7f, 0x07, 0x10,
        0x16, 0x8d, 0xb6, 0xc7, 0xd4, 0x77, 0xea, 0xba,
        0x16, 0x96, 0x2a, 0x98, 0xf0, 0x56, 0xd7, 0xff,
        0x16, 0x50, 0x4d, 0x59, 0x79, 0x3d, 0x41, 0xe0,
        0x16, 0xfa, 0xa9, 0x9d, 0x3e, 0xa6, 0xd9, 0x79,
        0x16, 0xc8, 0x0d, 0xd1, 0x56, 0xc5, 0xad, 0xd7,
        0x16, 0xfb, 0x70, 0x3c, 0xbd, 0xf3, 0xe9, 0x5d,
        0x16, 0x1c, 0x53, 0x93, 0x33, 0x1d, 0xf8, 0x1b,
        0x16, 0xee, 0x9f, 0xb7, 0x50, 0xac, 0x8f, 0x48,
        0x16, 0x59, 0x61, 0xc9, 0x85, 0x9e, 0xc8, 0xb0,
        0x16, 0xd2, 0x74, 0x39, 0xdf, 0x33, 0xf5, 0x28,
        0x16, 0xe0, 0x63, 0x11, 0xa7, 0xc4, 0x05, 0xbd,
        0x16, 0x3a, 0xd9, 0x34, 0xca, 0xf9, 0xaa, 0xe2,
        0x16, 0x00, 0xe6, 0xe6, 0x38, 0x57, 0x3e, 0xec,
        0x16, 0x19, 0x7c, 0x0d, 0x27, 0x45, 0xc5, 0x52,
        0x16, 0xc4, 0xff, 0xf4, 0x69, 0xc5, 0xf5, 0x73,
        0x16, 0x73, 0x4f, 0xe3, 0x07, 0xc7, 0xcf, 0x38,
        0x16, 0x23, 0x5b, 0x9c, 0x99, 0xa2, 0x6a, 0x72,
        0x16, 0xb0, 0x35, 0x39, 0xc1, 0x0a, 0xc7, 0x1c,
        0x16, 0x1a, 0x30, 0x60, 0x18, 0x1d, 0x2b, 0xf0,
        0x16, 0xc8, 0xf1, 0x79, 0xa3, 0x94, 0xe3, 0x36,
        0x16, 0x35, 0x93, 0x69, 0x05, 0x91, 0x07, 0x12,
        0x16, 0x60, 0x44, 0xfd, 0xb6, 0xc6, 0xff, 0xe0,
        0x16, 0xcf, 0xa2, 0xcf, 0xc2, 0xa3, 0x58, 0xac,
        0x16, 0x32, 0xe3, 0x2e, 0xec, 0x0d, 0x9d, 0x1b,
        0x16, 0xfb, 0x05, 0x40, 0xba, 0x67, 0x8e, 0xcb,
        0x16, 0x38, 0xd7, 0x60, 0x9c, 0xfe, 0x9e, 0xa1,
        0x16, 0x70, 0xcc, 0x40, 0x72, 0x8c, 0x8c, 0x50,
        0x16, 0x71, 0x85, 0xdd, 0x84, 0x92, 0x5c, 0xee,
        0x16, 0x44, 0xb6, 0xe0, 0x80, 0x15, 0x32, 0xdd,
        0x16, 0x1b, 0x4b, 0x8c, 0x6e, 0x8e, 0x39, 0x97,
        0x16, 0xa5, 0xaf, 0xc6, 0xf4, 0x29, 0x85, 0xd3,
        0x16, 0x85, 0x93, 0x85, 0xc8, 0x54, 0xe4, 0x59,
        0x16, 0x1d, 0x4e, 0xa0, 0xfe, 0xc5, 0x07, 0xc1,
        0x16, 0xf7, 0x32, 0x52, 0xf9, 0x4d, 0x45, 0x85,
        0x16, 0xfc, 0xa0, 0xfa, 0x37, 0xb5, 0x9d, 0x47,
        0x16, 0xe8, 0x52, 0x23, 0x8d, 0x92, 0x87, 0x43,
        0x16, 0xb4, 0xb8, 0x4f, 0x95, 0x1b, 0x1e, 0x4f,
        0x16, 0xe5, 0x45, 0xbf, 0xce, 0xc8, 0x0c, 0xb2,
        0x16, 0x7d, 0xe7, 0xd9, 0x2e, 0x88, 0xb7, 0x2a,
        0x16, 0x61, 0xe1, 0x2d, 0xc4, 0x21, 0x2e, 0xb8,
        0x16, 0x4d, 0xfd, 0x21, 0x87, 0x30, 0x25, 0x11,
        0x16, 0xec, 0x1f, 0x29, 0x94, 0x31, 0xd2, 0x92,
        0x16, 0x85, 0x38, 0x17, 0xda, 0x63, 0x4d, 0x8c,
        0x16, 0xb4, 0x06, 0x55, 0x64, 0xb7, 0x6c, 0xfc,
        0x16, 0xc2, 0x8d, 0x5d, 0x97, 0x86, 0x09, 0xd3,
        0x16, 0x43, 0x69, 0xe8, 0x35, 0x77, 0xcc, 0xaf,
        0x16, 0x91, 0x36, 0x3c, 0x7c, 0xa3, 0x6e, 0x4e,
        0x16, 0x4a, 0xa2, 0xc9, 0x41, 0x50, 0xea, 0xab,
        0x16, 0xdf, 0x87, 0x04, 0x70, 0x4f, 0x16, 0xf5,
        0x16, 0xa0, 0x38, 0xf5, 0x60, 0x16, 0xcd, 0x0c,
        0x16, 0xe5, 0xc7, 0xe3, 0xad, 0x00, 0x12, 0x6b,
        0x16, 0x12, 0x85, 0x3c, 0x5c, 0x7f, 0x76, 0xed,
        0x16, 0x49, 0xf2, 0x9d, 0x8f, 0xdf, 0xab, 0xe1,
        0x16, 0xdd, 0x87, 0x01, 0xed, 0x2c, 0x1b, 0x4b,
        0x16, 0x55, 0x11, 0x7f, 0xc3, 0x92, 0xd3, 0x91,
        0x16, 0xc1, 0xd8, 0xa7, 0x37, 0xc7, 0xe5, 0x5b,
        0x16, 0x48, 0x2b, 0xed, 0x31, 0xde, 0xce, 0xfb,
        0x16, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x08, 0xe3, 0x51, 0x84, 0x00,
        0x16, 0x0b, 0x4d, 0x26, 0x73, 0x11, 0x8b, 0x1e,
        0x16, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x04, 0x04, 0x73, 0xe0, 0x72,
        0x16, 0xff, 0xe6, 0x59, 0xc9, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x04, 0x48, 0xbf, 0xab, 0xf3,
        0x16, 0x99, 0x87, 0x7c, 0x07, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x04, 0xfb, 0x33, 0xb1, 0x63,
        0x16, 0x61, 0x61, 0x12, 0xad, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x08, 0xaa, 0x30, 0xac, 0x17,
        0x16, 0x4d, 0x30, 0x86, 0xbf, 0x67, 0x13, 0xf1,
        0x16, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x04, 0x1b, 0x48, 0x42, 0x23,
        0x16, 0x84, 0xbb, 0x7f, 0xb4, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x08, 0xa6, 0x9f, 0x43, 0x78,
        0x16, 0x5c, 0xa1, 0x4e, 0x8b, 0xa6, 0xe6, 0x7c,
        0x16, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x01, 0xf7, 0x31, 0x5d, 0x27,
        0x16, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x01, 0x0b, 0x57, 0x0b, 0x79,
        0x16, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x02, 0x44, 0x33, 0xbb, 0xb4,
        0x16, 0x5b, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x01, 0xab, 0xe3, 0x01, 0xc2,
        0x16, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x01, 0x7a, 0x07, 0x9e, 0xad,
        0x16, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x02, 0xf1, 0xee, 0xf7, 0xd8,
        0x16, 0x29, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x01, 0x2c, 0x35, 0x54, 0x3a,
        0x16, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x01, 0xc9, 0x3d, 0x66, 0x6a,
        0x16, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x05, 0x24, 0x7a, 0xf7, 0x1c, 0x24,
        0x16, 0x40, 0xeb, 0xa2, 0x4d, 0xc2, 0x66, 0xc8,
        0x16, 0x37, 0x2c, 0x03, 0x0f, 0xf3, 0x01, 0x06,
        0x16, 0x6d, 0x9a, 0x42, 0xf0, 0x94, 0x8f, 0xed,
        0x16, 0xbf, 0xe3, 0x28, 0x3b, 0x72, 0x69, 0x37,
        0x16, 0x75, 0xb4, 0xa0, 0x9a, 0x6e, 0x31, 0xfd,
        0x16, 0x66, 0x5b, 0xcb, 0xf3, 0xba, 0x8c, 0xa4,
        0x16, 0x31, 0xff, 0xba, 0x7c, 0x24, 0x54, 0xd3,
        0x16, 0xc6, 0x63, 0x89, 0x93, 0xe4, 0xed, 0xda,
        0x16, 0x58, 0x47, 0x4e, 0xb5, 0x8f, 0xd7, 0x93,
        0x16, 0xfd, 0xaf, 0x31, 0xea, 0xb4, 0xec, 0xc9,
        0x16, 0x05, 0x7d, 0x2b, 0x15, 0x96, 0xc1, 0x00,
        0x16, 0x7e, 0x80, 0xe6, 0xf7, 0x47, 0xcd, 0x6a,
        0x16, 0x77, 0xf1, 0x0e, 0x59, 0x13, 0xaa, 0x5c,
        0x16, 0x83, 0x88, 0x70, 0xdc, 0xc4, 0x52, 0x52,
        0x16, 0x20, 0xb6, 0x69, 0x2d, 0x6c, 0x6c, 0x8b,
        0x16, 0x66, 0x2a, 0xcd, 0x5a, 0x41, 0x30, 0xd6,
        0x16, 0xfb, 0x7b, 0xa0, 0xec, 0x7a, 0x22, 0x88,
        0x16, 0x7c, 0x71, 0x6e, 0xaf, 0x62, 0x06, 0xf4,
        0x16, 0xa8, 0xc6, 0x88, 0x85, 0x76, 0x36, 0xc5,
        0x16, 0xc0, 0xd8, 0x67, 0x96, 0x7c, 0xe8, 0x4d,
        0x16, 0xd4, 0xfb, 0xa9, 0x6f, 0x0f, 0xb2, 0xa7,
        0x16, 0xa3, 0x19, 0x6a, 0x30, 0xfd, 0x6f, 0xfc,
        0x16, 0x2b, 0xce, 0xa4, 0x1b, 0x8e, 0x57, 0x48,
        0x16, 0x51, 0xc6, 0x98, 0x0f, 0xe5, 0x08, 0x7b,
        0x16, 0x4d, 0xfc, 0x59, 0xdd, 0xcf, 0x13, 0x1b,
        0x16, 0x31, 0x0c, 0x5e, 0x3b, 0x98, 0xe1, 0xf4,
        0x16, 0xc3, 0x41, 0xd7, 0xa2, 0x64, 0x5e, 0x16,
        0x16, 0xf9, 0xeb, 0xae, 0x20, 0xe9, 0x5d, 0x54,
        0x16, 0xbd, 0x99, 0xd3, 0xa7, 0xc1, 0xd9, 0xe5,
        0x16, 0x32, 0x22, 0xd6, 0x9f, 0x4f, 0xdd, 0x6b,
        0x16, 0x3c, 0x6d, 0xe9, 0x4d, 0x96, 0x52, 0x11,
        0x16, 0xda, 0x23, 0x86, 0xbe, 0x01, 0xc4, 0x51,
        0x16, 0xc2, 0x9c, 0xc6, 0xf5, 0x2f, 0x1f, 0xd0,
        0x16, 0xf1, 0xf5, 0x57, 0x82, 0xfe, 0xcb, 0xfb,
        0x16, 0x4a, 0xdf, 0x1d, 0x00, 0x46, 0xb8, 0xa7,
        0x16, 0x3a, 0x56, 0x66, 0x08, 0x71, 0x4e, 0x47,
        0x16, 0xf8, 0x27, 0x26, 0x5f, 0x6c, 0xd8, 0xc3,
        0x16, 0x05, 0x99, 0x0a, 0x75, 0x8f, 0x4f, 0xc1,
        0x16, 0x88, 0x72, 0xa0, 0x5a, 0x13, 0x08, 0xa3,
        0x16, 0x82, 0x84, 0x2e, 0xce, 0xb5, 0xa3, 0x46,
        0x16, 0x05, 0xd6, 0x6a, 0x78, 0x56, 0x44, 0x23,
        0x16, 0x86, 0xf2, 0xc9, 0x63, 0x08, 0x8b, 0xbd,
        0x16, 0xee, 0x56, 0xd4, 0x36, 0x1f, 0x37, 0x53,
        0x16, 0x18, 0xe7, 0xda, 0x1c, 0xfa, 0xd0, 0x05,
        0x16, 0xd5, 0x5f, 0xe7, 0xb7, 0xad, 0x36, 0x2b,
        0x16, 0xcb, 0x06, 0xc0, 0x53, 0xf4, 0x32, 0xa8,
        0x16, 0x75, 0x6f, 0xe3, 0xc9, 0xa1, 0xb0, 0xa6,
        0x16, 0xe6, 0xc2, 0x41, 0x0f, 0x5d, 0x2e, 0x0a,
        0x16, 0x64, 0x50, 0x46, 0x92, 0x49, 0x5b, 0x2d,
        0x16, 0x00, 0x2e, 0xb5, 0x21, 0x3f, 0x0b, 0x4a,
        0x16, 0x71, 0x96, 0x88, 0x84, 0x4c, 0x98, 0xaa,
        0x16, 0x28, 0x23, 0xeb, 0xef, 0x45, 0x5c, 0x62,
        0x16, 0x78, 0xd6, 0xe4, 0xfb, 0x6d, 0xc3, 0xd9,
        0x16, 0x35, 0x6c, 0xb9, 0x2a, 0xc6, 0x74, 0x71,
        0x16, 0xc4, 0x0c, 0x65, 0x7c, 0xa3, 0xf9, 0x6e,
        0x16, 0x2d, 0xb9, 0x86, 0xb0, 0x04, 0x63, 0x94,
        0x16, 0xcf, 0x26, 0x7d, 0x9e, 0x1e, 0xf7, 0x99,
        0x16, 0xda, 0xe0, 0x8c, 0xdd, 0x86, 0xf3, 0xc8,
        0x16, 0xf1, 0xc6, 0x4e, 0x15, 0x5d, 0xed, 0x34,
        0x16, 0xbb, 0x90, 0xcd, 0xd6, 0x26, 0x09, 0x1e,
        0x16, 0xf6, 0x23, 0x84, 0x51, 0xc1, 0xae, 0x42,
        0x16, 0x8f, 0x84, 0x96, 0xc9, 0x57, 0xae, 0x16,
        0x16, 0x36, 0x3a, 0x29, 0x87, 0x65, 0xb2, 0xba,
        0x16, 0x56, 0x96, 0xd2, 0xf5, 0x09, 0xef, 0x30,
        0x16, 0x4a, 0x0f, 0x62, 0x36, 0xfe, 0x00, 0x30,
        0x16, 0xbd, 0x09, 0x1b, 0x50, 0xc3, 0x3c, 0x48,
        0x16, 0xd7, 0x25, 0xe1, 0x8e, 0xb2, 0x6f, 0x4d,
        0x16, 0x75, 0x2d, 0xad, 0xc6, 0x1e, 0xba, 0xfa,
        0x16, 0x4f, 0x41, 0xaf, 0x7a, 0x6f, 0xa0, 0xa0,
        0x16, 0x4f, 0xb6, 0x88, 0x34, 0x69, 0x8a, 0x9e,
        0x16, 0x83, 0x7a, 0x60, 0xf3, 0xa8, 0x7e, 0x39,
        0x16, 0x2a, 0x20, 0x9c, 0x32, 0x5e, 0x7d, 0xc4,
        0x16, 0xaa, 0x97, 0xe6, 0x26, 0x35, 0x42, 0xa1,
        0x16, 0xa0, 0xef, 0x39, 0xb3, 0x1c, 0x27, 0x63,
        0x16, 0xd2, 0x7f, 0x75, 0xc0, 0x1e, 0xb4, 0xfa,
        0x16, 0x4d, 0x7a, 0x81, 0x81, 0x39, 0xe0, 0x79,
        0x16, 0x2f, 0x94, 0xa5, 0x28, 0x3a, 0x43, 0x7e,
        0x16, 0x97, 0xb5, 0x94, 0xaf, 0x2a, 0x10, 0x38,
        0x16, 0x0a, 0x7f, 0x49, 0x91, 0xc0, 0x6c, 0x65,
        0x16, 0x9a, 0xc6, 0xc9, 0x5d, 0xd5, 0x52, 0x46,
        0x16, 0x98, 0x74, 0xac, 0x93, 0xe4, 0x21, 0xb0,
        0x16, 0xeb, 0x08, 0xfa, 0xf4, 0x41, 0x2e, 0xa6,
        0x16, 0xf9, 0xc5, 0xed, 0xe3, 0x37, 0x98, 0xc5,
        0x16, 0xdf, 0x52, 0x82, 0x41, 0xa2, 0xf2, 0x56,
        0x16, 0x1a, 0xf3, 0xa4, 0xc6, 0x40, 0x8d, 0xb9,
        0x16, 0x5f, 0xaa, 0x75, 0x1e, 0x15, 0x1e, 0x68,
        0x16, 0x78, 0x2b, 0x2b, 0xf4, 0x3e, 0xc7, 0xcb,
        0x16, 0xf3, 0x13, 0x60, 0xe0, 0xf4, 0x85, 0x79,
        0x16, 0x88, 0x0c, 0x22, 0x75, 0x87, 0xb7, 0x51,
        0x16, 0xe0, 0xd6, 0xe3, 0xa0, 0x92, 0xd3, 0xd7,
        0x16, 0xe3, 0x6c, 0x5b, 0x3e, 0xb7, 0x80, 0xe7,
        0x16, 0x48, 0xd6, 0xd9, 0x2f, 0x49, 0xcc, 0x75,
        0x16, 0xa0, 0x04, 0xc9, 0x48, 0x88, 0xe9, 0xcc,
        0x16, 0x32, 0x41, 0xaf, 0x30, 0xde, 0xc6, 0xbc,
        0x16, 0x9d, 0xf7, 0xfc, 0xff, 0x69, 0x03, 0x50,
        0x16, 0x58, 0xa1, 0xd6, 0xb8, 0x7b, 0x5e, 0x60,
        0x16, 0xfc, 0xcc, 0x00, 0x14, 0xaf, 0x3a, 0x30,
        0x16, 0x41, 0xb3, 0x4e, 0x63, 0x47, 0x95, 0xe4,
        0x16, 0xbd, 0x53, 0x74, 0xd0, 0xf0, 0x02, 0xb4,
        0x16, 0xfe, 0x48, 0x19, 0x6c, 0x3f, 0x23, 0xf7,
        0x16, 0x9b, 0x44, 0x11, 0xf2, 0xc2, 0x45, 0xa6,
        0x16, 0x37, 0x77, 0x6c, 0x10, 0x63, 0x0e, 0x1b,
        0x16, 0xa7, 0xd1, 0x96, 0xca, 0x0d, 0x4f, 0x5b,
        0x16, 0x43, 0x51, 0xd6, 0x14, 0xb7, 0x23, 0xe7,
        0x16, 0x99, 0xa4, 0x9f, 0x4c, 0x7d, 0xd7, 0xdd,
        0x16, 0x08, 0x11, 0x84, 0x4d, 0x5c, 0xe9, 0x60,
        0x16, 0x90, 0x04, 0x8b, 0x14, 0x90, 0xf0, 0x6f,
        0x16, 0x26, 0x45, 0x0f, 0x20, 0x8c, 0xe3, 0x6f,
        0x16, 0x46, 0x78, 0xeb, 0x12, 0xb4, 0x5e, 0xf0,
        0x16, 0xde, 0xeb, 0x22, 0x27, 0x62, 0x78, 0x42,
        0x16, 0x93, 0xbc, 0xe8, 0x48, 0xc0, 0x88, 0xbd,
        0x16, 0x0f, 0xde, 0x23, 0x2b, 0xd1, 0x88, 0x0a,
        0x16, 0xe2, 0xb4, 0x33, 0x8e, 0x61, 0x36, 0x43,
        0x16, 0x58, 0x42, 0xae, 0x6b, 0xd7, 0xf2, 0xfe,
        0x16, 0x0a, 0xc1, 0x26, 0x94, 0x7a, 0xce, 0x8c,
        0x16, 0x3b, 0x43, 0x5a, 0x62, 0xef, 0x70, 0x8a,
        0x16, 0xfe, 0x4d, 0xd2, 0x37, 0xdb, 0xa1, 0xb1,
        0x16, 0x06, 0x1b, 0x30, 0x17, 0x4c, 0xa0, 0x24,
        0x16, 0x1e, 0xbe, 0xcb, 0x64, 0xe2, 0xce, 0x13,
        0x16, 0x5c, 0xd7, 0x05, 0xa6, 0x76, 0x39, 0x38,
        0x16, 0xf3, 0x85, 0x2c, 0x16, 0x0e, 0xb3, 0xe2,
        0x16, 0x3d, 0xff, 0x79, 0x88, 0x0b, 0x93, 0xef,
        0x16, 0xad, 0x55, 0xcd, 0xb4, 0xef, 0x8f, 0xb8,
        0x16, 0x16, 0x7a, 0x05, 0xc0, 0x5e, 0x92, 0x0f,
        0x16, 0x4f, 0x98, 0x58, 0xd4, 0x22, 0xad, 0x43,
        0x16, 0x25, 0x31, 0x78, 0x52, 0xc6, 0x9a, 0xca,
        0x16, 0x5e, 0xa6, 0x4e, 0x79, 0x97, 0x9a, 0xbb,
        0x16, 0xdf, 0x6d, 0xf1, 0xe2, 0xd0, 0xb3, 0xca,
        0x16, 0x2a, 0x5c, 0x46, 0x82, 0x5c, 0x1e, 0xdd,
        0x16, 0xd0, 0xc5, 0x19, 0x89, 0x2b, 0x2c, 0xbd,
        0x16, 0xc0, 0x84, 0xd9, 0x33, 0x39, 0x67, 0xe4,
        0x16, 0xe4, 0x79, 0x26, 0xb6, 0x9d, 0x1c, 0x1d,
        0x16, 0xe4, 0x70, 0xa5, 0xa7, 0x61, 0x89, 0x25,
        0x16, 0x4a, 0x57, 0x33, 0x7d, 0x0d, 0xca, 0xf3,
        0x16, 0xcc, 0x22, 0xaa, 0xd7, 0xd9, 0xcb, 0xe6,
        0x16, 0xb2, 0x96, 0x46, 0x15, 0x95, 0x68, 0xd8,
        0x16, 0x0f, 0xdf, 0x6b, 0x36, 0xda, 0x19, 0x82,
        0x16, 0x16, 0xce, 0x38, 0x4e, 0xcf, 0xf2, 0x36,
        0x16, 0xc8, 0x80, 0x07, 0x53, 0x88, 0x04, 0x2f,
        0x16, 0xb2, 0x14, 0x19, 0x5d, 0xc5, 0x6c, 0xef,
        0x16, 0x95, 0x9c, 0x60, 0x8b, 0x6a, 0xe4, 0xfc,
        0x16, 0x9d, 0xb2, 0x9c, 0xed, 0x1d, 0x9c, 0x1b,
        0x16, 0xca, 0xa3, 0x26, 0xdd, 0x9c, 0x63, 0x5b,
        0x16, 0x3b, 0x88, 0x2b, 0xba, 0x22, 0x35, 0x24,
        0x16, 0x01, 0x48, 0xee, 0xa0, 0x4f, 0x6e, 0x96,
        0x16, 0x4e, 0x29, 0x91, 0xaa, 0xaf, 0x56, 0x47,
        0x16, 0xbd, 0x7b, 0xdd, 0xa1, 0x55, 0x99, 0xd8,
        0x16, 0xb5, 0xa1, 0x47, 0x93, 0x7b, 0xcd, 0x7b,
        0x16, 0xcf, 0x65, 0xde, 0x50, 0x18, 0xf2, 0x05,
        0x16, 0x49, 0xf1, 0x99, 0xd8, 0x94, 0x21, 0x3f,
        0x16, 0x7d, 0x52, 0xc6, 0xb1, 0xb4, 0xe1, 0x9f,
        0x16, 0xf0, 0x7e, 0x60, 0x64, 0x8b, 0x30, 0xe4,
        0x16, 0xad, 0x2c, 0x97, 0xfb, 0x47, 0xf7, 0x09,
        0x16, 0x01, 0x04, 0x7b, 0xf4, 0xf7, 0xa7, 0xa8,
        0x16, 0x04, 0xa5, 0x7f, 0x08, 0x58, 0x79, 0x6d,
        0x16, 0x26, 0x27, 0x6a, 0xd0, 0xd9, 0xaf, 0xc1,
        0x16, 0xc7, 0x12, 0x23, 0xe1, 0xae, 0x98, 0xa4,
        0x16, 0x0f, 0xbc, 0x1b, 0xfa, 0x9d, 0x91, 0x0b,
        0x16, 0x15, 0x15, 0xa5, 0x24, 0x53, 0x1a, 0x13,
        0x16, 0xe0, 0xc3, 0x00, 0x95, 0x38, 0x9c, 0x36,
        0x16, 0x4c, 0xcf, 0xf6, 0xa9, 0xbc, 0xc1, 0x53,
        0x16, 0x06, 0x04, 0xf4, 0x6f, 0xbf, 0x57, 0xe0,
        0x16, 0xa6, 0x14, 0xa6, 0x49, 0x70, 0x7f, 0x39,
        0x16, 0x2a, 0x4a, 0x5a, 0x59, 0x36, 0x33, 0xb9,
        0x16, 0x0d, 0x47, 0x25, 0x39, 0x37, 0x04, 0x77,
        0x16, 0x7c, 0x45, 0xac, 0x19, 0x93, 0x25, 0x49,
        0x16, 0xe0, 0x7a, 0x7b, 0xa2, 0xc6, 0x95, 0x76,
        0x16, 0x8d, 0x3c, 0x79, 0xb1, 0xa7, 0xc3, 0x83,
        0x16, 0x63, 0x03, 0x23, 0x47, 0xd7, 0xac, 0xfb,
        0x16, 0x84, 0x16, 0x6f, 0x22, 0x49, 0x0b, 0x97,
        0x16, 0xaa, 0xd5, 0x38, 0x57, 0x5e, 0x2b, 0xbb,
        0x16, 0xa7, 0x49, 0xed, 0xd2, 0xd5, 0x7a, 0x96,
        0x16, 0xbe, 0x8d, 0xf5, 0xf9, 0x46, 0x56, 0xf5,
        0x16, 0x2f, 0xa7, 0xa8, 0x7a, 0xff, 0x3f, 0xe7,
        0x16, 0xe8, 0x8c, 0xf1, 0x48, 0xe8, 0x46, 0xcb,
        0x16, 0x4d, 0x25, 0xf9, 0x35, 0x93, 0x2f, 0xce,
        0x16, 0x8b, 0xb8, 0xa9, 0xc5, 0xd3, 0xd2, 0x27,
        0x16, 0x71, 0x86, 0x6f, 0x72, 0xd9, 0xca, 0x4e,
        0x16, 0x90, 0xd3, 0x6d, 0xb1, 0x3c, 0xd3, 0xcb,
        0x16, 0xc9, 0x30, 0x3a, 0x26, 0x45, 0x9d, 0x66,
        0x16, 0x44, 0x5c, 0x5f, 0xd8, 0xe3, 0x90, 0x7c,
        0x16, 0x1b, 0xd8, 0x82, 0xdd, 0xd3, 0x84, 0xd4,
        0x16, 0xc6, 0x1b, 0x58, 0xbf, 0x02, 0xa5, 0x3b,
        0x16, 0x10, 0x0a, 0x3e, 0xe3, 0x09, 0x94, 0x0b,
        0x16, 0x99, 0x88, 0x2b, 0x47, 0xa7, 0x90, 0x89,
        0x16, 0xc4, 0x48, 0x25, 0x36, 0xdb, 0x72, 0x31,
        0x16, 0xac, 0xf5, 0xa3, 0x01, 0x15, 0xd0, 0xe6,
        0x16, 0x21, 0x61, 0xeb, 0x59, 0x72, 0xdc, 0x94,
        0x15, 0x00, 0x00, 0x98, 0xf7, 0xb0, 0xf9, 0xfa,
        0x16, 0xc1, 0x0a, 0x7e, 0xdc, 0x69, 0xce, 0x90,
        0x16, 0x5e, 0x82, 0x11, 0x0b, 0x97, 0xe2, 0x99,
        0x16, 0x55, 0xa2, 0x3d, 0xfa, 0xeb, 0x88, 0xbc,
        0x16, 0x4d, 0xc2, 0x54, 0x8d, 0x5f, 0xde, 0xa3,
        0x16, 0xe2, 0x48, 0x13, 0x20, 0x46, 0xc5, 0xa0,
        0x16, 0x81, 0x04, 0xc4, 0x2b, 0x9a, 0x84, 0x15,
        0x16, 0xb8, 0x9e, 0x9b, 0x62, 0xa1, 0xec, 0x7d,
        0x16, 0x08, 0x3c, 0xad, 0x21, 0x4b, 0x89, 0xfc,
        0x16, 0xc6, 0x96, 0x7c, 0x3a, 0x41, 0x35, 0x8a,
        0x16, 0x13, 0xbd, 0x1b, 0x43, 0xbf, 0x36, 0x7a,
        0x16, 0x4e, 0xce, 0x70, 0x9e, 0x2a, 0xf6, 0x39,
        0x16, 0x33, 0xc7, 0x33, 0x4b, 0x34, 0x7d, 0x2a,
        0x16, 0x81, 0xfa, 0x25, 0x2e, 0xc5, 0xc4, 0xa1,
        0x16, 0x28, 0x0e, 0xd5, 0x4d, 0x15, 0xe0, 0x69,
        0x16, 0x12, 0x71, 0x19, 0xaa, 0xff, 0x59, 0x48,
        0x16, 0x81, 0x56, 0x53, 0xc9, 0x35, 0x12, 0x4d,
        0x16, 0x84, 0x69, 0x91, 0x36, 0xd8, 0xad, 0xf7,
        0x16, 0x54, 0xd5, 0x8c, 0xf9, 0xc6, 0x84, 0x12,
        0x16, 0x62, 0x22, 0xf1, 0xb9, 0x2b, 0x1d, 0xa5,
        0x16, 0x7c, 0x56, 0x7a, 0x4d, 0x5a, 0xc4, 0xf0,
        0x16, 0x9d, 0x8f, 0x5d, 0xb5, 0x9a, 0x7f, 0xe7,
        0x16, 0xb7, 0xa8, 0x5d, 0x6d, 0x37, 0x00, 0x00,
        0x15, 0x00, 0x00, 0xe4, 0xf2, 0xea, 0x7a, 0x73,
        0x16, 0xf8, 0xfc, 0x67, 0x17, 0xf3, 0xd9, 0x60,
        0x16, 0x09, 0x0e, 0x8b, 0x0f, 0xe2, 0xf9, 0x83,
        0x16, 0x61, 0xdf, 0x53, 0x69, 0xd0, 0xee, 0x42,
        0x16, 0x51, 0xb5, 0x51, 0x48, 0x64, 0xf8, 0xdd,
        0x16, 0x3e, 0xee, 0xa7, 0x47, 0xf0, 0x7c, 0x4b,
        0x16, 0xbb, 0x2b, 0x8e, 0xe2, 0x8b, 0x60, 0x57,
        0x16, 0x63, 0x4b, 0x9b, 0xaa, 0x67, 0x63, 0xea,
        0x16, 0xa3, 0xd5, 0x7c, 0x43, 0x41, 0xa9, 0x54,
        0x16, 0x74, 0xd2, 0x86, 0xc3, 0x11, 0x42, 0x69,
        0x16, 0xc5, 0x09, 0x3e, 0x8f, 0x94, 0xaf, 0xc5,
        0x16, 0x99, 0xbb, 0xbb, 0xac, 0x61, 0x64, 0x61,
        0x16, 0x01, 0xf2, 0xd3, 0x59, 0xb1, 0x41, 0x50,
        0x16, 0x91, 0x16, 0x6c, 0xcc, 0x9b, 0xec, 0x5c,
        0x16, 0xfe, 0x3b, 0xb3, 0xec, 0x6e, 0xd7, 0xf1,
        0x16, 0x0e, 0x5a, 0x8a, 0x5f, 0x1d, 0xb0, 0xc5,
        0x16, 0x76, 0x54, 0x26, 0x07, 0xbc, 0x66, 0xf0,
        0x16, 0xed, 0x51, 0x9a, 0x1f, 0xe8, 0xf7, 0x51,
        0x16, 0x58, 0x8e, 0x1e, 0x80, 0x99, 0x1f, 0xee,
        0x16, 0xd6, 0x43, 0xcc, 0xfa, 0x2f, 0xae, 0x80,
        0x16, 0xf2, 0xa8, 0xa8, 0xae, 0x43, 0x7c, 0x80,
        0x16, 0x76, 0xd4, 0x1a, 0xd4, 0x73, 0x74, 0x61,
        0x16, 0xdf, 0xbf, 0x29, 0x6f, 0x56, 0x15, 0x93,
        0x16, 0x07, 0x58, 0x92, 0xf1, 0x1d, 0xe8, 0x7b,
        0x16, 0x68, 0xb2, 0x54, 0x20, 0x30, 0x01, 0x2d,
        0x16, 0xc5, 0xd8, 0xfd, 0x61, 0x50, 0x14, 0x0f,
        0x16, 0x58, 0x4c, 0x1a, 0x54, 0x00, 0x12, 0x7e,
        0x16, 0x46, 0x99, 0x0c, 0x9d, 0xd1, 0xa3, 0x04,
        0x16, 0xf1, 0x82, 0x17, 0xfe, 0xfc, 0x12, 0xe5,
        0x16, 0x75, 0x81, 0xaf, 0xff, 0x3d, 0x08, 0xd5,
        0x16, 0x39, 0x87, 0x4a, 0x8e, 0xf0, 0x7a, 0xd4,
        0x16, 0xd0, 0xd6, 0xcf, 0xa9, 0xd6, 0x59, 0x48,
        0x16, 0x41, 0xc2, 0x68, 0xe3, 0xa4, 0x35, 0x45,
        0x16, 0x8d, 0x14, 0x1a, 0xc4, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x44, 0x89, 0x2c, 0x63, 0xc8,
        0x16, 0xaf, 0x7b, 0xac, 0x35, 0x43, 0x27, 0xbe,
        0x16, 0x7e, 0xcf, 0x56, 0x40, 0x3d, 0xa5, 0xac,
        0x16, 0x0f, 0x97, 0xcc, 0xd4, 0x6e, 0xd0, 0x31,
        0x16, 0xd7, 0x14, 0x60, 0x45, 0xae, 0xdf, 0x0a,
        0x16, 0xaa, 0x33, 0xb3, 0x88, 0xe0, 0x1c, 0x26,
        0x16, 0xdc, 0x00, 0xb8, 0x75, 0xc8, 0x67, 0x11,
        0x16, 0xa1, 0xb5, 0x87, 0x71, 0xf9, 0x4a, 0x6a,
        0x16, 0xec, 0x3f, 0x0e, 0x41, 0x21, 0xc2, 0x4f,
        0x16, 0x92, 0x8f, 0x17, 0x53, 0xee, 0xd5, 0xea,
        0x16, 0x4f, 0x91, 0x75, 0x02, 0x59, 0x00, 0x00,
        0x15, 0x00, 0x02, 0x94, 0xe4, 0xda, 0x4a, 0xb3,
        0x16, 0xaa, 0xa7, 0x2e, 0x9c, 0xc7, 0x80, 0x46,
        0x16, 0x5e, 0xbd, 0x06, 0x33, 0x1d, 0xd8, 0x5d,
        0x16, 0x9f, 0x5f, 0x77, 0x73, 0x0a, 0x7d, 0x38,
        0x16, 0x6b, 0xa7, 0x0e, 0x8f, 0x4e, 0x7d, 0x01,
        0x16, 0xda, 0x44, 0x74, 0xd2, 0xf1, 0x7a, 0x2f,
        0x16, 0x7f, 0xe1, 0xec, 0xf1, 0xa5, 0x7d, 0x03,
        0x16, 0x3b, 0x2f, 0x17, 0xb6, 0xe8, 0x0d, 0x33,
        0x16, 0x3c, 0x21, 0x91, 0x91, 0x5b, 0x30, 0x2c,
        0x16, 0x11, 0xc6, 0x58, 0x6a, 0xe4, 0x35, 0x1b,
        0x16, 0xb5, 0xa8, 0x47, 0xb3, 0xff, 0xd0, 0x96,
        0x16, 0x0e, 0x48, 0x4e, 0x97, 0x37, 0x60, 0x12,
        0x16, 0x04, 0xff, 0xcb, 0xa5, 0xf5, 0x1d, 0x40,
        0x16, 0x9c, 0xdf, 0x36, 0x12, 0x3d, 0xd9, 0x2a,
        0x16, 0x72, 0xda, 0xe8, 0x8b, 0xe4, 0x5b, 0xcf,
        0x16, 0xe9, 0x38, 0x52, 0xec, 0x2c, 0xa0, 0xf7,
        0x16, 0x79, 0xad, 0x20, 0x70, 0x59, 0x20, 0x62,
        0x16, 0x73, 0x9c, 0xe3, 0x46, 0x09, 0xc9, 0x12,
        0x16, 0xd4, 0x77, 0x55, 0x07, 0x4b, 0x6a, 0x26,
        0x16, 0x1e, 0x5d, 0x07, 0x78, 0x10, 0x4e, 0x4a,
        0x16, 0xda, 0x5e, 0xf6, 0x3b, 0x9b, 0x8d, 0xfd,
        0x16, 0x48, 0xd0, 0xbb, 0xaa, 0x21, 0x2e, 0xf5,
        0x16, 0xdf, 0x85, 0x4c, 0xa7, 0x1d, 0x1a, 0x26,
        0x16, 0x1b, 0xa0, 0x82, 0x86, 0x7f, 0x4b, 0x02,
        0x16, 0xd2, 0xf6, 0x60, 0xc9, 0x86, 0x0c, 0x1d,
        0x16, 0xbf, 0x73, 0x69, 0x86, 0x18, 0x4b, 0x44,
        0x16, 0xbc, 0x74, 0xe5, 0x82, 0x17, 0x93, 0xb5,
        0x16, 0x0a, 0x56, 0x08, 0xb7, 0x4a, 0x73, 0xb8,
        0x16, 0x04, 0xd2, 0x14, 0x21, 0x5e, 0x2c, 0xa0,
        0x16, 0xe0, 0xc2, 0x01, 0x5f, 0xde, 0xce, 0x64,
        0x16, 0x2a, 0xd8, 0x65, 0x2b, 0xf0, 0x74, 0xe3,
        0x16, 0x54, 0xbf, 0xa0, 0x9b, 0x50, 0xba, 0x02,
        0x16, 0x00, 0x2c, 0x95, 0xce, 0x2a, 0x4f, 0xcf,
        0x16, 0x2b, 0x2b, 0x0e, 0x9b, 0xdd, 0x8f, 0x67,
        0x16, 0x5b, 0x54, 0xa1, 0x47, 0x2e, 0x84, 0x2e,
        0x16, 0x24, 0xfa, 0x34, 0xe0, 0x5a, 0x10, 0x3b,
        0x16, 0xcf, 0xaf, 0xe2, 0xed, 0x28, 0xd1, 0x17,
        0x16, 0x6b, 0x9a, 0x1b, 0x49, 0x6c, 0xfc, 0xcb,
        0x16, 0x7a, 0x74, 0x09, 0x2a, 0x41, 0x5a, 0xff,
        0x16, 0xa1, 0xf5, 0x98, 0xc6, 0x0c, 0xd2, 0x69,
        0x16, 0x83, 0xd2, 0xc3, 0x69, 0x87, 0x5e, 0x7e,
        0x16, 0xbb, 0xfc, 0xc0, 0xd1, 0xc1, 0x17, 0xd7,
        0x16, 0x9b, 0xe1, 0x53, 0x70, 0xb7, 0x43, 0xd0,
        0x16, 0x38, 0x25, 0x26, 0x49, 0x40, 0x5b, 0x57,
        0x16, 0xba, 0x49, 0x32, 0xaa, 0x9f, 0x39, 0xaa,
        0x16, 0x8e, 0x73, 0x00, 0x85, 0x13, 0x79, 0x6d,
        0x16, 0xf1, 0x91, 0x2f, 0x9e, 0xa3, 0xa0, 0x65,
        0x16, 0x7c, 0x7d, 0x53, 0xb4, 0x70, 0x53, 0x01,
        0x16, 0x6b, 0x92, 0x5f, 0x38, 0xf1, 0xd7, 0x3d,
        0x16, 0x7a, 0xd6, 0x07, 0x72, 0x7a, 0xdb, 0xa1,
        0x16, 0x65, 0xa5, 0x07, 0x41, 0x00, 0x4b, 0xeb,
        0x16, 0xc5, 0xd0, 0x3b, 0xeb, 0x30, 0x61, 0x42,
        0x16, 0x0d, 0x4b, 0xa3, 0xd8, 0x07, 0x8b, 0x12,
        0x16, 0xf5, 0x89, 0x3d, 0x7c, 0xfb, 0x2e, 0x79,
        0x16, 0xa7, 0xbc, 0xd5, 0xbf, 0x72, 0x9a, 0xd8,
        0x16, 0x15, 0x39, 0xad, 0x25, 0x70, 0xd1, 0x6c,
        0x16, 0xb0, 0x5d, 0xbb, 0xf4, 0x3a, 0xf6, 0x60,
        0x16, 0x56, 0xfa, 0xf2, 0xa5, 0x28, 0xae, 0x0d,
        0x16, 0x76, 0xb3, 0x79, 0xf1, 0x4b, 0xc7, 0x2e,
        0x16, 0x6e, 0xb6, 0x61, 0x62, 0x22, 0xd9, 0xa7,
        0x16, 0x30, 0x23, 0x45, 0x21, 0xde, 0x47, 0x8c,
        0x16, 0xeb, 0xe5, 0x4c, 0x8b, 0x4e, 0x79, 0xa0,
        0x16, 0x9d, 0x95, 0xb3, 0x05, 0xaa, 0xaf, 0xec,
        0x16, 0xe6, 0x74, 0x73, 0xf0, 0xdc, 0x37, 0xad,
        0x16, 0x93, 0x3b, 0x20, 0x6d, 0xa1, 0xd8, 0xcf,
        0x16, 0xf9, 0x7e, 0x9e, 0xc6, 0xbb, 0x40, 0x64,
        0x16, 0x56, 0xa6, 0x18, 0x75, 0x28, 0xd2, 0xba,
        0x16, 0x78, 0x64, 0x5c, 0x48, 0x45, 0x70, 0x35,
        0x16, 0x8c, 0x49, 0x9a, 0x45, 0x4a, 0x6d, 0xf2,
        0x16, 0x9c, 0x8d, 0x48, 0x0a, 0x61, 0x2e, 0xe3,
        0x16, 0xd4, 0xee, 0xa8, 0x29, 0x40, 0x4b, 0x53,
        0x16, 0xbb, 0x56, 0x39, 0xce, 0x81, 0x6c, 0xfd,
        0x16, 0x37, 0xa0, 0x79, 0x1c, 0xc7, 0x94, 0x17,
        0x16, 0x6c, 0x37, 0xea, 0x97, 0xf4, 0xd8, 0xd4,
        0x16, 0x9f, 0x9f, 0x30, 0x4f, 0xe5, 0xa4, 0x08,
        0x16, 0xb8, 0x6b, 0xae, 0xb9, 0xbc, 0x4f, 0x61,
        0x16, 0x20, 0x44, 0xdf, 0x92, 0xdb, 0x1e, 0x04,
        0x16, 0x83, 0xc0, 0xa1, 0x2c, 0x09, 0xd8, 0xdf,
        0x16, 0x21, 0xf0, 0x20, 0x04, 0x80, 0xaf, 0x73,
        0x16, 0x91, 0xbc, 0x0e, 0xba, 0xe4, 0xf7, 0x9b,
        0x16, 0x36, 0x3c, 0x30, 0xf1, 0xb4, 0xba, 0xdc,
        0x16, 0xfa, 0x65, 0xf2, 0x2b, 0x1d, 0x18, 0x4e,
        0x16, 0x16, 0x62, 0xd4, 0xac, 0x8b, 0x21, 0xa5,
        0x16, 0xa2, 0xf1, 0x32, 0xc3, 0xc9, 0x65, 0x63,
        0x16, 0x2d, 0x31, 0x6b, 0xb8, 0x8f, 0xe1, 0x24,
        0x16, 0x93, 0x87, 0x04, 0x99, 0xe6, 0xbd, 0xba,
        0x16, 0x28, 0x30, 0x63, 0xda, 0xac, 0xc7, 0x99,
        0x16, 0x37, 0x8a, 0x86, 0x66, 0xb3, 0x44, 0xd5,
        0x16, 0x84, 0xaa, 0xa1, 0x53, 0x42, 0xa0, 0x38,
        0x16, 0x1e, 0x5d, 0xf7, 0x05, 0x29, 0xe7, 0xca,
        0x16, 0x2a, 0x0b, 0x6a, 0xab, 0xce, 0xf0, 0x3a,
        0x16, 0xf3, 0x90, 0xe6, 0xd1, 0x25, 0xa1, 0x33,
        0x16, 0x1c, 0x33, 0x99, 0x7d, 0x24, 0xd1, 0x74,
        0x16, 0x23, 0xfc, 0x6f, 0x7d, 0xdb, 0xa7, 0xe9,
        0x16, 0xc2, 0xde, 0x17, 0x12, 0x2d, 0x1c, 0xb3,
        0x16, 0x7e, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x03, 0x08, 0x75, 0x7d, 0x9a, 0x49,
        0x16, 0x37, 0xaf, 0x60, 0x04, 0x7c, 0xbc, 0xd3,
        0x16, 0x1c, 0x53, 0x70, 0x34, 0x97, 0xeb, 0xe1,
        0x16, 0xcd, 0x30, 0x79, 0xa2, 0x86, 0x94, 0x58,
        0x16, 0x5a, 0x99, 0xc2, 0x69, 0xd7, 0xb2, 0x32,
        0x16, 0x62, 0x6c, 0x0a, 0x36, 0x69, 0xb1, 0x35,
        0x16, 0x48, 0x41, 0xce, 0x79, 0x96, 0x7a, 0x0d,
        0x16, 0x2d, 0x33, 0xbf, 0x4d, 0x2f, 0xb8, 0xd8,
        0x16, 0xb3, 0xfb, 0xe4, 0x71, 0x93, 0xb9, 0x18,
        0x16, 0x0d, 0x51, 0xab, 0xbb, 0x09, 0xd9, 0x0d,
        0x16, 0xd7, 0x67, 0x1e, 0x47, 0x28, 0xc7, 0xf7,
        0x16, 0xce, 0x60, 0x58, 0x28, 0x23, 0x5e, 0x95,
        0x16, 0xfc, 0x2b, 0xdb, 0xf9, 0x0d, 0x1f, 0xab,
        0x16, 0x49, 0xe6, 0xd0, 0xa7, 0x37, 0x79, 0x20,
        0x16, 0xe4, 0xcf, 0x05, 0xe3, 0x64, 0x21, 0xac,
        0x16, 0xdf, 0xb1, 0xe8, 0xf9, 0xe0, 0x4c, 0x3b,
        0x16, 0x5e, 0x89, 0x68, 0x2a, 0x48, 0xc5, 0x64,
        0x16, 0x0e, 0xdb, 0xf1, 0x53, 0x8b, 0x1a, 0x2f,
        0x16, 0xf6, 0x0c, 0x18, 0x9c, 0x52, 0x9b, 0x21,
        0x16, 0x2e, 0x4a, 0xe7, 0xd6, 0xbb, 0xb7, 0x1a,
        0x16, 0x0a, 0x22, 0xab, 0x4a, 0xfd, 0xd3, 0x02,
        0x16, 0x7d, 0x21, 0xff, 0xb9, 0x0e, 0x0f, 0x29,
        0x16, 0xab, 0xac, 0xf4, 0x44, 0x5e, 0x0f, 0xd5,
        0x16, 0xf3, 0x57, 0xe5, 0x4f, 0x61, 0x72, 0x4e,
        0x16, 0xba, 0x55, 0x37, 0x8f, 0x9a, 0x1c, 0xd4,
        0x16, 0xb8, 0x30, 0xaf, 0x0a, 0x95, 0x1a, 0x13,
        0x16, 0x86, 0xd4, 0x0a, 0x83, 0x5c, 0x99, 0x1b,
        0x16, 0x2b, 0xc0, 0x93, 0xf5, 0x13, 0xf5, 0xea,
        0x16, 0xfb, 0x6f, 0x75, 0x74, 0x6c, 0x2e, 0x77,
        0x16, 0xc3, 0x44, 0xc5, 0x38, 0x62, 0xb9, 0xf5,
        0x16, 0xac, 0x58, 0xb4, 0x96, 0x6e, 0xa4, 0xa5,
        0x16, 0x45, 0xb5, 0x1b, 0x7c, 0x9d, 0x21, 0x95,
        0x16, 0x16, 0xee, 0x29, 0x57, 0x20, 0x12, 0xbb,
        0x16, 0xf8, 0x0a, 0x23, 0x25, 0xac, 0x51, 0xfd,
        0x16, 0x7a, 0xe0, 0x9d, 0x43, 0xb0, 0x27, 0x6f,
        0x16, 0x2a, 0xdf, 0x04, 0x08, 0xd3, 0xf1, 0x1d,
        0x16, 0x3c, 0x12, 0x8d, 0xaf, 0xf2, 0xd7, 0xb9,
        0x16, 0x02, 0x9d, 0x46, 0xe3, 0xab, 0xff, 0x61,
        0x16, 0xc8, 0x61, 0x2b, 0x19, 0xc8, 0xc1, 0xa1,
        0x16, 0x6d, 0x0a, 0xa7, 0x44, 0xfa, 0xb5, 0xa8,
        0x16, 0xd7, 0x1e, 0x53, 0x15, 0x6f, 0x7a, 0x48,
        0x16, 0x41, 0xe9, 0x30, 0xb5, 0xad, 0xe2, 0xf0,
        0x16, 0x70, 0x40, 0x6a, 0xf3, 0x31, 0xdd, 0x19,
        0x16, 0x50, 0xe5, 0xbc, 0xb4, 0x3d, 0x83, 0x9f,
        0x16, 0xdf, 0xc8, 0x25, 0x27, 0x90, 0x40, 0x5b,
        0x16, 0x32, 0x04, 0x47, 0x81, 0xfa, 0x53, 0xb4,
        0x16, 0x0a, 0x40, 0x15, 0x7a, 0x74, 0x5b, 0xdb,
        0x16, 0x24, 0xab, 0x3a, 0xb7, 0x91, 0xe3, 0x44,
        0x16, 0xb7, 0x47, 0x07, 0x39, 0x90, 0xd2, 0xf5,
        0x16, 0xa9, 0x08, 0x46, 0x58, 0xdc, 0x32, 0x10,
        0x16, 0xa3, 0x47, 0x32, 0x04, 0x45, 0x44, 0x13,
        0x16, 0x71, 0xac, 0x2e, 0xa7, 0xc9, 0x71, 0xd0,
        0x16, 0xf9, 0x51, 0x7e, 0xca, 0xe5, 0x09, 0xa8,
        0x16, 0x1e, 0x77, 0x5b, 0x3a, 0x08, 0xaa, 0x43,
        0x16, 0x1c, 0xd6, 0x8d, 0x60, 0x91, 0x46, 0x6d,
        0x16, 0x64, 0x56, 0x9e, 0x16, 0x2e, 0xce, 0xb3,
        0x16, 0x99, 0xc8, 0xf6, 0x55, 0x27, 0x13, 0x84,
        0x16, 0xbc, 0x8a, 0xb3, 0xc8, 0xf5, 0x1a, 0x72,
        0x16, 0xf7, 0x6a, 0x0c, 0x46, 0x95, 0x2f, 0x4a,
        0x16, 0x86, 0xb6, 0xd2, 0x98, 0x94, 0xf1, 0xc3,
        0x16, 0x37, 0x0e, 0x0c, 0x87, 0x11, 0x56, 0x7e,
        0x16, 0xaf, 0xda, 0x22, 0x29, 0x6f, 0xeb, 0xfa,
        0x16, 0xec, 0x96, 0xe0, 0x27, 0x6b, 0x42, 0xa1,
        0x16, 0x70, 0x09, 0x1a, 0xad, 0x48, 0x88, 0xda,
        0x16, 0xfc, 0xe1, 0x3b, 0x62, 0x95, 0x28, 0x56,
        0x16, 0x70, 0x28, 0x03, 0xb2, 0x58, 0x67, 0x8d,
        0x16, 0x0a, 0xea, 0x9a, 0x15, 0x95, 0x51, 0x5f,
        0x16, 0x83, 0x07, 0x09, 0x20, 0xbf, 0x37, 0xaf,
        0x16, 0xf7, 0x0a, 0x74, 0x3c, 0xa5, 0x52, 0xf1,
        0x16, 0xe3, 0xf5, 0x58, 0x30, 0xe1, 0x17, 0xde,
        0x16, 0x98, 0xf1, 0x38, 0x7b, 0xf0, 0xaf, 0xbd,
        0x16, 0x16, 0x59, 0x52, 0x99, 0x6c, 0x74, 0x70,
        0x16, 0x48, 0x77, 0x14, 0xff, 0x53, 0x41, 0x84,
        0x16, 0xbc, 0xc5, 0x37, 0x2f, 0x71, 0x84, 0x3d,
        0x16, 0xf5, 0x46, 0x7c, 0x63, 0xe0, 0x00, 0xa0,
        0x16, 0x56, 0x07, 0xf7, 0x8c, 0x63, 0x57, 0xbe,
        0x16, 0x54, 0x5c, 0xe1, 0xfd, 0xac, 0x35, 0xfa,
        0x16, 0xc2, 0xd5, 0xf2, 0x5a, 0xbe, 0x7c, 0x31,
        0x16, 0x8e, 0xbd, 0xdb, 0xfe, 0x4d, 0x03, 0x6f,
        0x16, 0x5e, 0xa6, 0x1f, 0x23, 0x2d, 0xca, 0x68,
        0x16, 0xf0, 0xc6, 0x14, 0xcc, 0xc3, 0x3e, 0xf0,
        0x16, 0x21, 0xd4, 0x40, 0x2a, 0x72, 0xb6, 0x7e,
        0x16, 0xe2, 0x85, 0xd6, 0x8a, 0xfb, 0x48, 0x51,
        0x16, 0x27, 0x77, 0xe4, 0xcb, 0xcd, 0x2f, 0xf6,
        0x16, 0xe1, 0xbc, 0xfe, 0xed, 0xa1, 0x14, 0x5f,
        0x16, 0xe5, 0x32, 0xfc, 0xcf, 0xd9, 0xfb, 0x2f,
        0x16, 0xe9, 0xad, 0x7d, 0x2d, 0x68, 0xe7, 0x9a,
        0x16, 0x15, 0x95, 0x6a, 0x4a, 0xe4, 0xab, 0xe4,
        0x16, 0xeb, 0xe0, 0x0d, 0x40, 0xbd, 0xef, 0x8f,
        0x16, 0xb9, 0x75, 0xb4, 0x39, 0x08, 0x6d, 0xc0,
        0x16, 0x9f, 0x04, 0xff, 0xcc, 0xde, 0x13, 0x30,
        0x16, 0x4e, 0xb6, 0xe4, 0xe0, 0xcb, 0x69, 0xe5,
        0x16, 0xc6, 0x1c, 0x2f, 0x43, 0x6a, 0x63, 0x25,
        0x16, 0x72, 0xd5, 0xdf, 0xbd, 0xdc, 0x0b, 0xe9,
        0x16, 0x08, 0x9d, 0x3d, 0x26, 0x6f, 0xc3, 0x89,
        0x16, 0xf8, 0x18, 0xac, 0x42, 0xbf, 0x4e, 0x9d,
        0x16, 0x5d, 0x28, 0xb0, 0x26, 0x41, 0x36, 0x76,
        0x16, 0x8d, 0x86, 0x84, 0xfa, 0xd8, 0xd4, 0x67,
        0x16, 0x58, 0x19, 0x69, 0x20, 0x2d, 0x35, 0xfe,
        0x16, 0x09, 0xd9, 0x8c, 0xfd, 0xf9, 0x21, 0xa1,
        0x16, 0x57, 0xdf, 0x17, 0xae, 0x8e, 0xcb, 0xc9,
        0x16, 0x7f, 0x26, 0x54, 0xde, 0x10, 0x43, 0x72,
        0x16, 0xdd, 0xbc, 0x18, 0xb9, 0x34, 0xf9, 0xab,
        0x16, 0x70, 0xf9, 0x74, 0x4d, 0x8e, 0x6d, 0x2a,
        0x16, 0x33, 0x14, 0x06, 0xd0, 0x71, 0xe6, 0xad,
        0x16, 0xaa, 0xbe, 0x86, 0x2e, 0x9a, 0x8d, 0x87,
        0x16, 0x88, 0xaf, 0x03, 0x9f, 0xcb, 0xf8, 0x78,
        0x16, 0x9a, 0x66, 0x38, 0x09, 0xcd, 0xae, 0x89,
        0x16, 0xc2, 0xcc, 0xaf, 0x6a, 0x16, 0x14, 0x09,
        0x16, 0x48, 0xae, 0x9b, 0x55, 0xe4, 0x0f, 0xa5,
        0x16, 0x86, 0xa1, 0x75, 0x7f, 0x7c, 0xef, 0x0d,
        0x16, 0xcb, 0x3a, 0xb3, 0x0d, 0x1f, 0x02, 0x00,
        0x15, 0x00, 0x00, 0x0c, 0x80, 0x1f, 0xb4, 0xf4,
        0x16, 0xe0, 0xa6, 0x41, 0xcc, 0x87, 0x00, 0x40,
        0x16, 0x61, 0x43, 0xe7, 0xfc, 0xb4, 0x00, 0x00,
        0x15, 0x00, 0x01, 0x24, 0xca, 0x45, 0x34, 0x25,
        0x16, 0x3c, 0x39, 0xff, 0x09, 0x8c, 0x39, 0x85,
        0x16, 0x5a, 0x5b, 0xcc, 0x27, 0x3c, 0xbd, 0x28,
        0x16, 0x43, 0x86, 0x45, 0x17, 0x9a, 0x4e, 0x35,
        0x16, 0x24, 0xa4, 0x23, 0xa2, 0xfd, 0xca, 0x6c,
        0x16, 0xd4, 0xfb, 0xba, 0xe7, 0x41, 0xb3, 0xfb,
        0x16, 0x7c, 0x55, 0x07, 0xb5, 0x6e, 0x3e, 0xb1,
        0x16, 0x29, 0x72, 0xcc, 0x38, 0xea, 0x27, 0x30,
        0x16, 0x80, 0xb9, 0x8c, 0xb8, 0xee, 0x54, 0xab,
        0x16, 0x3e, 0xdb, 0xdd, 0x06, 0xd0, 0x95, 0xea,
        0x16, 0x3e, 0x42, 0x88, 0x6b, 0xae, 0x89, 0xc7,
        0x16, 0xe8, 0x4c, 0x38, 0xb6, 0x93, 0xf6, 0xbe,
        0x16, 0x4c, 0x20, 0x4a, 0x8c, 0xce, 0x2b, 0x22,
        0x16, 0xd2, 0x72, 0x49, 0x46, 0x18, 0x56, 0x80,
        0x16, 0x70, 0x67, 0x5a, 0xfa, 0xc0, 0xca, 0x6d,
        0x16, 0x53, 0x21, 0xca, 0xe3, 0x86, 0x68, 0x91,
        0x16, 0xd3, 0x7c, 0xa9, 0xd5, 0xad, 0x6a, 0x72,
        0x16, 0xa1, 0xfe, 0x53, 0xe9, 0x40, 0x85, 0xea,
        0x16, 0x62, 0xa9, 0x63, 0x75, 0x3a, 0x2d, 0xec,
        0x16, 0x9b, 0xfe, 0x58, 0xd8, 0x73, 0x20, 0x52,
        0x16, 0x10, 0x43, 0x5c, 0x2d, 0xb4, 0x21, 0xb9,
        0x16, 0x96, 0x1f, 0x72, 0x6d, 0xba, 0x42, 0xea,
        0x16, 0xf2, 0x85, 0xbe, 0x52, 0x12, 0xa7, 0xb1,
        0x16, 0x3e, 0x2b, 0x89, 0xef, 0x0f, 0x73, 0x05,
        0x16, 0x7c, 0x99, 0xc3, 0xc5, 0x5f, 0x96, 0x53,
        0x16, 0xf8, 0xaf, 0x9b, 0x7a, 0x49, 0xa0, 0x44,
        0x16, 0x54, 0x60, 0x55, 0xf0, 0x10, 0x3a, 0x60,
        0x16, 0x8d, 0x90, 0x50, 0x65, 0xae, 0xf7, 0x79,
        0x16, 0xdb, 0x2e, 0x08, 0xf9, 0xbb, 0xf2, 0xd2,
        0x16, 0x78, 0xd0, 0x86, 0xb5, 0x94, 0xa1, 0x0e,
        0x16, 0xb9, 0x81, 0x89, 0xb7, 0xf9, 0xc0, 0x43,
        0x16, 0xe8, 0x8f, 0x38, 0x19, 0xda, 0xed, 0x2f,
        0x16, 0xa7, 0x5c, 0xdb, 0x01, 0xb3, 0x38, 0xce,
        0x16, 0xe6, 0xc3, 0xf2, 0xd5, 0xaa, 0x87, 0x9e,
        0x16, 0x11, 0x6f, 0xd8, 0x05, 0xf0, 0x72, 0xab,
        0x16, 0xd9, 0xa1, 0x0f, 0xff, 0x46, 0xe9, 0x4a,
        0x16, 0x8c, 0x00, 0x93, 0xe9, 0x86, 0x6f, 0x6b,
        0x16, 0x14, 0x70, 0xbe, 0xb1, 0xb8, 0x89, 0xc9,
        0x16, 0xcc, 0x7d, 0x1a, 0x11, 0xd2, 0x79, 0xfb,
        0x16, 0xd9, 0xd7, 0x24, 0x13, 0x94, 0x8f, 0x01,
        0x16, 0x9c, 0x4b, 0x69, 0x33, 0x66, 0x01, 0x82,
        0x16, 0x98, 0x88, 0xf8, 0x4c, 0x13, 0x31, 0x0f,
        0x16, 0x58, 0xc1, 0x06, 0x11, 0x30, 0x00, 0x00,
        0x15, 0x00, 0x00, 0xb4, 0x89, 0x91, 0x34, 0x9b,
        0x16, 0x89, 0xfc, 0x75, 0xcd, 0x11, 0xca, 0x1a,
        0x16, 0x6f, 0xfa, 0x71, 0xd6, 0x45, 0xe7, 0x0f,
        0x16, 0xeb, 0x39, 0x09, 0xb3, 0x5a, 0x13, 0x1f,
        0x16, 0xaa, 0x3a, 0x93, 0xcf, 0x8d, 0x6e, 0xca,
        0x16, 0xec, 0x2c, 0x8e, 0xc5, 0x83, 0x1b, 0x5a,
        0x16, 0xd6, 0xd1, 0x89, 0xac, 0x02, 0x4f, 0xcb,
        0x16, 0x0f, 0x25, 0x76, 0x96, 0xe0, 0x5d, 0x2c,
        0x16, 0xff, 0xa7, 0xea, 0xea, 0x92, 0xf1, 0x72,
        0x16, 0x5b, 0xee, 0x08, 0xd8, 0x84, 0x8a, 0xa9,
        0x16, 0x59, 0xe3, 0x12, 0x77, 0xda, 0xd6, 0xca,
        0x16, 0x4e, 0x36, 0x2d, 0x7c, 0xa4, 0x13, 0xd1,
        0x16, 0xe8, 0x18, 0x31, 0x99, 0x02, 0x54, 0x0a,
        0x16, 0xd0, 0x7a, 0x74, 0xa0, 0xad, 0x2c, 0x83,
        0x16, 0x4a, 0x6f, 0xf1, 0xb1, 0x50, 0x1b, 0x64,
        0x16, 0x69, 0xe8, 0x84, 0x2f, 0x2c, 0xc8, 0xeb,
        0x16, 0x95, 0x3d, 0xa5, 0x18, 0xc7, 0x4b, 0x82,
        0x16, 0xfc, 0x88, 0xe1, 0xd3, 0x7b, 0x0e, 0xbe,
        0x16, 0x10, 0xba, 0x65, 0x02, 0x85, 0x9b, 0x46,
        0x16, 0x9a, 0x37, 0x7a, 0x77, 0x4d, 0xc2, 0xc4,
        0x16, 0x53, 0x30, 0x67, 0x91, 0x54, 0xf6, 0x3d,
        0x16, 0x39, 0x44, 0x43, 0x42, 0x13, 0x2e, 0x09,
        0x16, 0x29, 0xfd, 0x50, 0xa6, 0xda, 0x94, 0xce,
        0x16, 0x86, 0x97, 0x10, 0x2b, 0x5c, 0x1c, 0x09,
        0x16, 0xcd, 0x0f, 0xfc, 0x15, 0xdc, 0x54, 0x3b,
        0x16, 0x53, 0xe1, 0x7c, 0xa7, 0xe1, 0xfd, 0x47,
        0x16, 0xc2, 0xaf, 0x7e, 0xea, 0x34, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x0c, 0x6f, 0xe6, 0x5c, 0x04,
        0x16, 0x30, 0x6c, 0x84, 0xc7, 0x51, 0xe3, 0xb5,
        0x16, 0x5f, 0x34, 0x9e, 0xdd, 0x05, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x0c, 0x1c, 0xd4, 0xbc, 0xfb,
        0x16, 0xcd, 0x3a, 0xae, 0xbc, 0x52, 0x92, 0x54,
        0x16, 0x85, 0x2c, 0xed, 0x0f, 0xfb, 0x00, 0x00,
        0x15, 0x00, 0x00, 0xf8, 0x73, 0x10, 0x5d, 0xd8,
        0x16, 0x1f, 0x06, 0xe0, 0xa1, 0x59, 0x26, 0xb4,
        0x16, 0x39, 0x3f, 0xc1, 0x19, 0xf9, 0xd4, 0xbe,
        0x16, 0x4f, 0xf4, 0x33, 0xec, 0x3f, 0x3f, 0xfe,
        0x16, 0x8f, 0x91, 0xd0, 0x44, 0xf2, 0x12, 0x78,
        0x16, 0x90, 0x9e, 0x79, 0xa9, 0x27, 0xee, 0x05,
        0x16, 0xcb, 0x9f, 0x5a, 0x4b, 0x15, 0xde, 0x67,
        0x16, 0x39, 0x18, 0x1f, 0xe7, 0x3a, 0x0a, 0x41,
        0x16, 0x98, 0xe7, 0xde, 0xa7, 0x28, 0xa0, 0xd3,
        0x16, 0x54, 0x66, 0x33, 0x79, 0xb5, 0x3a, 0x83,
        0x16, 0x37, 0x5f, 0x25, 0x40, 0x70, 0x47, 0xb8,
        0x16, 0x79, 0x6b, 0x62, 0x96, 0x3f, 0x48, 0xea,
        0x16, 0x9f, 0x6e, 0xcb, 0x35, 0xe1, 0x6f, 0x2d,
        0x16, 0xc4, 0xc2, 0x4b, 0x9b, 0xa7, 0x4d, 0x05,
        0x16, 0x79, 0x0e, 0x1c, 0xfe, 0x09, 0x5a, 0x9f,
        0x16, 0x87, 0x22, 0x7a, 0x13, 0x1b, 0x9f, 0x99,
        0x16, 0x4d, 0x05, 0xdb, 0x15, 0x73, 0xd8, 0x65,
        0x16, 0xfe, 0x39, 0x5e, 0xa4, 0x43, 0x7b, 0x6c,
        0x16, 0x79, 0xbd, 0x73, 0x91, 0x4c, 0x9b, 0x4c,
        0x16, 0x94, 0x18, 0x87, 0xea, 0x68, 0xa7, 0x44,
        0x16, 0x9f, 0x5c, 0x36, 0x66, 0xfd, 0x41, 0x14,
        0x16, 0x5e, 0xb1, 0x8e, 0xeb, 0x45, 0xda, 0x77,
        0x16, 0x0e, 0xe0, 0xec, 0x5e, 0xf4, 0x0d, 0xbf,
        0x16, 0x41, 0xc6, 0x48, 0xf0, 0x15, 0xd8, 0x60,
        0x16, 0xf7, 0x40, 0x76, 0x23, 0x7b, 0x1c, 0xe5,
        0x16, 0x59, 0x44, 0x50, 0x30, 0xce, 0x06, 0x4e,
        0x16, 0xc5, 0xa6, 0x70, 0xc3, 0x18, 0x17, 0xa2,
        0x16, 0x37, 0xac, 0xbf, 0x2c, 0x6f, 0xbc, 0x9b,
        0x16, 0x3f, 0x58, 0x12, 0x11, 0x10, 0x39, 0x00,
        0x16, 0x18, 0xdb, 0x7d, 0x0b, 0xd2, 0x2c, 0xee,
        0x16, 0x0a, 0xaf, 0x76, 0x94, 0x7a, 0xc1, 0x5c,
        0x16, 0x21, 0xd2, 0x61, 0x9f, 0x1d, 0x7a, 0x96,
        0x16, 0x95, 0xdf, 0xa4, 0x51, 0x81, 0xe6, 0x1b,
        0x16, 0xd5, 0x7c, 0x36, 0x44, 0xf0, 0x60, 0xff,
        0x16, 0x3a, 0xf6, 0x32, 0xec, 0x8f, 0xe0, 0x9a,
        0x16, 0xc7, 0xe3, 0xbc, 0xad, 0xeb, 0xa6, 0x94,
        0x16, 0x71, 0x4b, 0x6d, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x38, 0x97, 0x4c, 0x36, 0xa2,
        0x16, 0x75, 0xff, 0xfb, 0x3f, 0xeb, 0x60, 0xe1,
        0x16, 0x31, 0xb1, 0xbc, 0x32, 0x77, 0x6c, 0xbd,
        0x16, 0x49, 0x93, 0x4b, 0xc2, 0x07, 0xba, 0xf0,
        0x16, 0x67, 0xfd, 0x68, 0xca, 0xf5, 0xa4, 0xff,
        0x16, 0x2a, 0x5e, 0xe2, 0xbe, 0xb5, 0x69, 0xb2,
        0x16, 0xa0, 0x63, 0x93, 0x1b, 0xb4, 0xbd, 0x46,
        0x16, 0x12, 0xfa, 0xee, 0x88, 0x5f, 0x46, 0xdf,
        0x16, 0xb2, 0xba, 0xe8, 0xba, 0x54, 0x47, 0xea,
        0x15, 0x00, 0x00, 0x18, 0xfa, 0x08, 0x91, 0x77,
        0x16, 0x9b, 0x1c, 0x87, 0x8b, 0x01, 0x70, 0x9e,
        0x16, 0xc0, 0x05, 0x2b, 0xaa, 0xd7, 0xaf, 0x30,
        0x16, 0xa8, 0x01, 0x8b, 0x28, 0xa0, 0xf5, 0x95,
        0x16, 0x99, 0x32, 0x5f, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x08, 0xc4, 0xef, 0x65, 0x45,
        0x16, 0x3c, 0xc3, 0x6d, 0xef, 0xb8, 0x34, 0x9d,
        0x16, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x04, 0x66, 0x86, 0xf2, 0xbc,
        0x16, 0x9d, 0x87, 0x97, 0xbe, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x08, 0xdd, 0x58, 0xdd, 0x53,
        0x16, 0x0f, 0x7d, 0xec, 0x93, 0x0b, 0xb9, 0x5b,
        0x16, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x08, 0x76, 0x15, 0xdf, 0xc7,
        0x16, 0x68, 0x2f, 0xa8, 0xf8, 0x4d, 0x33, 0x8f,
        0x16, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x08, 0x84, 0xc3, 0xe8, 0xcb,
        0x16, 0x9c, 0x71, 0x80, 0x09, 0xd7, 0x11, 0x63,
        0x16, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x04, 0x0e, 0xc6, 0xf0, 0x50,
        0x16, 0x9e, 0x0a, 0xa7, 0x99, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x14, 0x9a, 0x5a, 0xf9, 0xaa,
        0x16, 0x5f, 0x06, 0xdf, 0x5c, 0x52, 0x37, 0x4b,
        0x16, 0x39, 0x0c, 0x7e, 0x18, 0xc1, 0xab, 0xd6,
        0x16, 0x36, 0xf5, 0x78, 0xbd, 0x9f, 0x79, 0x00,
        0x15, 0x00, 0x00, 0x0e, 0xf2, 0x33, 0x61, 0x0e,
        0x16, 0xc3, 0x0b, 0x5a, 0x24, 0x02, 0x3f, 0x42,
        0x16, 0x35, 0x3d, 0xa4, 0xad, 0xc5, 0x30, 0x50,
        0x15, 0x00, 0x00, 0x76, 0xe7, 0xe3, 0x45, 0x08,
        0x16, 0x66, 0x18, 0x21, 0xeb, 0xdd, 0x14, 0x76,
        0x16, 0xf8, 0xf1, 0x55, 0xe8, 0x3b, 0x9d, 0x8b,
        0x16, 0x93, 0x92, 0xff, 0xa7, 0x80, 0x34, 0x38,
        0x16, 0xc2, 0xad, 0x7c, 0xff, 0xbd, 0x23, 0x2b,
        0x16, 0x0b, 0x2c, 0x5f, 0xea, 0xc0, 0x95, 0x00,
        0x16, 0xfb, 0x8c, 0x37, 0x6b, 0x8a, 0x42, 0x91,
        0x16, 0x3e, 0xef, 0xd6, 0x51, 0x43, 0x21, 0x6f,
        0x16, 0x80, 0x3e, 0xbd, 0xf2, 0xb3, 0x24, 0x07,
        0x16, 0xa5, 0x92, 0x4a, 0x76, 0x51, 0x31, 0x72,
        0x16, 0x35, 0x47, 0x25, 0xe7, 0xb9, 0xd0, 0xf4,
        0x16, 0xc2, 0xdd, 0x52, 0x35, 0x3a, 0x23, 0xc4,
        0x16, 0x16, 0xfa, 0x2a, 0x8d, 0x99, 0xd0, 0xb9,
        0x16, 0x53, 0xc2, 0x12, 0x5c, 0x3f, 0xce, 0x8d,
        0x16, 0xdb, 0xd1, 0xc8, 0xd1, 0x59, 0xe5, 0x88,
        0x16, 0xff, 0x49, 0x11, 0xab, 0xab, 0x7b, 0xd1,
        0x16, 0xf2, 0xb4, 0x37, 0x49, 0xa0, 0xb1, 0xfe,
        0x16, 0xfe, 0x6c, 0x08, 0x76, 0x1d, 0x0b, 0x00,
        0x15, 0x00, 0x00, 0x9a, 0xf4, 0xb1, 0x6d, 0xa0,
        0x16, 0xf2, 0x20, 0xe4, 0x17, 0xa7, 0x4d, 0x85,
        0x16, 0xb3, 0x8e, 0x7a, 0xcb, 0x87, 0x30, 0xaf,
        0x16, 0x11, 0x90, 0x20, 0xa8, 0x19, 0xea, 0x22,
        0x16, 0x07, 0xfa, 0xc1, 0x4c, 0xe8, 0xfc, 0xa2,
        0x16, 0x03, 0x8f, 0x2a, 0xc5, 0x36, 0xe4, 0xaf,
        0x16, 0x66, 0x9b, 0xba, 0x0a, 0xdd, 0x65, 0x90,
        0x16, 0xda, 0xd7, 0x27, 0x62, 0xd9, 0x19, 0x3b,
        0x16, 0xab, 0xf6, 0x66, 0x89, 0x2d, 0xa5, 0x30,
        0x16, 0x70, 0xe9, 0xaa, 0xe2, 0xd9, 0xc1, 0x23,
        0x16, 0x47, 0xfd, 0x9a, 0x25, 0x4a, 0x5f, 0x89,
        0x16, 0x62, 0x97, 0x61, 0x4b, 0x91, 0xfc, 0x34,
        0x16, 0x1b, 0xfc, 0x97, 0xb2, 0x7b, 0x87, 0xf4,
        0x16, 0x54, 0xfc, 0xd6, 0x36, 0x48, 0xc2, 0x87,
        0x16, 0x79, 0xa3, 0xc4, 0x8f, 0x42, 0xb1, 0x31,
        0x16, 0x47, 0xdd, 0xe8, 0xd0, 0x0a, 0x71, 0x47,
        0x16, 0x22, 0xf3, 0xf4, 0x9f, 0x28, 0x7a, 0x70,
        0x16, 0x0c, 0xbc, 0x59, 0x30, 0xe0, 0xe4, 0x13,
        0x16, 0x24, 0x65, 0xbd, 0x4c, 0x0e, 0x6d, 0x9e,
        0x16, 0x4d, 0x15, 0x90, 0x19, 0x72, 0xc9, 0x28,
        0x16, 0xb6, 0x95, 0x0e, 0x92, 0xf9, 0x79, 0x5c,
        0x16, 0x64, 0xb9, 0xb9, 0x7b, 0xd7, 0xdc, 0xb4,
        0x16, 0xb9, 0xb4, 0x96, 0x7f, 0x72, 0x55, 0xae,
        0x15, 0x00, 0x00, 0x1e, 0xb0, 0x02, 0x8e, 0x45,
        0x16, 0xbd, 0xf0, 0xa5, 0x90, 0xb7, 0x30, 0x12,
        0x16, 0x40, 0xb6, 0x40, 0x9c, 0xf1, 0x62, 0x63,
        0x16, 0x72, 0x6d, 0xf0, 0xba, 0x1a, 0xf6, 0xf0,
        0x16, 0x40, 0x6a, 0x47, 0xa2, 0xfc, 0x9b, 0xd8,
        0x16, 0x70, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x1a, 0xf5, 0x24, 0xf6, 0x4d,
        0x16, 0x2f, 0x64, 0xfd, 0xf7, 0xc3, 0xfd, 0xa7,
        0x16, 0x45, 0x5d, 0x94, 0x31, 0x8f, 0xd6, 0x9f,
        0x16, 0x5d, 0x21, 0x66, 0x41, 0xd4, 0x39, 0x51,
        0x16, 0xaf, 0x61, 0x8c, 0x1e, 0x9f, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x06, 0x11, 0xe9, 0x7a, 0x88,
        0x16, 0x31, 0xe1, 0x26, 0xb6, 0x1c, 0x74, 0x00,
        0x15, 0x00, 0x00, 0x06, 0xf5, 0x98, 0x35, 0x17,
        0x16, 0x1a, 0xab, 0x19, 0x3a, 0x8c, 0xc6, 0x00,
        0x15, 0x00, 0x00, 0x0e, 0x7e, 0x14, 0xd0, 0x6e,
        0x16, 0x44, 0x1c, 0x66, 0x61, 0x67, 0xf1, 0x8e,
        0x16, 0x28, 0x72, 0x30, 0xd2, 0xbf, 0x7d, 0x6f,
        0x15, 0x00, 0x00, 0x08, 0x17, 0x99, 0x62, 0xee,
        0x16, 0x78, 0x18, 0x54, 0x3a, 0xd5, 0x7f, 0x61,
        0x16, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x10, 0x83, 0x3e, 0x2c, 0x92,
        0x16, 0x4f, 0x5a, 0x98, 0x59, 0x97, 0xfb, 0x82,
        0x16, 0x97, 0xad, 0xc8, 0x73, 0xa2, 0x6c, 0x0d,
        0x16, 0x06, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x0a, 0x69, 0xda, 0xeb, 0x9e,
        0x16, 0xf7, 0x67, 0x7f, 0xde, 0xe8, 0x83, 0x0b,
        0x16, 0x46, 0x5a, 0x3f, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x02, 0xb3, 0x60, 0x7f, 0xdc,
        0x16, 0xa3, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x14, 0x8e, 0xcf, 0xa2, 0x65,
        0x16, 0x72, 0xce, 0x3e, 0x11, 0x39, 0x2d, 0x94,
        0x16, 0x94, 0x47, 0x8e, 0xc7, 0x8c, 0x70, 0x6b,
        0x16, 0x7c, 0x49, 0x8e, 0x3c, 0xd7, 0x4c, 0x00,
        0x15, 0x00, 0x00, 0x02, 0xc8, 0x77, 0xa5, 0xfd,
        0x16, 0xba, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x0a, 0x1a, 0x1b, 0xd9, 0x4a,
        0x16, 0x83, 0x03, 0xdf, 0xe2, 0x75, 0x6e, 0x28,
        0x16, 0xd9, 0x63, 0x1f, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x02, 0x18, 0x27, 0x27, 0x8f,
        0x16, 0x4b, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa9, 0x02
    ]
    settings_size = bitwise.parse(MEM_SETTINGS, []).size() // 8
    ch_size = bitwise.parse(MEM_CH_FMT % 1, []).size() // 8
    patch_size = len(PATCH_DATA)

